คุณจะสร้างเมทริกซ์สุ่มใน R ด้วยค่า colSum คงที่ได้อย่างไร

ฉันกำลังมองหาวิธีสร้างชุดเมทริกซ์โดยที่ผลรวมคอลัมน์ทั้งหมดเท่ากับค่าที่ระบุ ฉันคิดว่าฉันสามารถสร้างเมทริกซ์แบบสุ่มและตรวจสอบแต่ละรายการเพื่อกรองว่า colSums= ค่าใดที่ต้องการ แต่ดูเหมือนว่าจะไม่ทำงาน นอกจากนี้ เราจะสร้างเมทริกซ์แบบสุ่มใน R ด้วยค่าบวกและค่าลบได้อย่างไร


person priya12    schedule 26.05.2016    source แหล่งที่มา
comment
สำหรับคำถามที่สอง คุณสามารถดูที่ ?runif เช่น ลอง runif(your_desired_number, -1, 1)   -  person Vincent Bonhomme    schedule 26.05.2016
comment
โปรดยกตัวอย่างเมทริกซ์ดังกล่าว: คำถามของคุณกว้างเกินไป   -  person Vincent Guillemot    schedule 26.05.2016
comment
@ priya12 สวัสดี หากคำตอบของคำถามช่วยแก้ปัญหาของคุณได้ คุณสามารถคลิก 'ยอมรับ' เพื่อให้คนอื่นได้รับประโยชน์จากคำตอบนั้นได้ไหม ขอบคุณ   -  person agenis    schedule 14.06.2016


คำตอบ (1)


คุณสามารถทำเช่นนี้ นี่คือฟังก์ชันที่สร้างเมทริกซ์ที่เต็มไปด้วยตัวเลขสุ่มจากการแจกแจงแบบปกติ จากนั้นจะจัดคอลัมน์ทั้งหมดให้อยู่ตรงกลางเป็น 0 และเพิ่มจำนวนที่ต้องการ

RandomMatrixColsum = function(mycolsum=1, dim=c(10, 10), ...){
  m  <- matrix(rnorm(prod(dim), ...), ncol=dim[2])
  ms <- scale(m, center=T, scale=F) + mycolsum/dim[1]
  return(ms)
}
RandomMatrixColsum(8)

หากคุณต้องการให้แน่ใจว่ามีทั้งค่าบวกและลบในเมทริกซ์ คุณสามารถเพิ่มค่าเบี่ยงเบนมาตรฐานของ rnorm ได้โดยการเพิ่มอาร์กิวเมนต์ sd=... ในการเรียกใช้ฟังก์ชัน หรือบังคับให้ sd เท่ากับค่าเฉลี่ยด้วย

person agenis    schedule 26.05.2016