Bagaimana Anda menghasilkan matriks acak di R dengan nilai colSum konstan?

Saya mencari cara untuk menghasilkan serangkaian matriks yang semua jumlah kolomnya sama dengan nilai tertentu. Saya pikir saya dapat membuat matriks acak dan memeriksa masing-masing matriks untuk menyaring di mana nilai colSums= diperlukan, tetapi sepertinya itu tidak berhasil. Juga, bagaimana kita menghasilkan matriks acak di R dengan nilai positif dan negatif?


person priya12    schedule 26.05.2016    source sumber
comment
untuk pertanyaan kedua bisa lihat ke ?runif, misal coba runif(your_desired_number, -1, 1)   -  person Vincent Bonhomme    schedule 26.05.2016
comment
Tolong beri contoh matriks seperti itu: pertanyaan Anda terlalu luas.   -  person Vincent Guillemot    schedule 26.05.2016
comment
@ priya12 halo jika jawaban pertanyaan tersebut menyelesaikan masalah Anda, dapatkah Anda mengklik 'terima' agar orang lain dapat mengambil manfaat darinya? terima kasih   -  person agenis    schedule 14.06.2016


Jawaban (1)


Anda bisa melakukan seperti ini. Ini adalah fungsi yang membuat matriks berisi bilangan acak dari distribusi normal. Kemudian ia memusatkan semua kolom ke 0 dan menjumlahkan angka yang diinginkan.

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)

Jika Anda ingin memastikan bahwa matriks Anda memiliki nilai positif dan negatif, Anda dapat meningkatkan deviasi standar rnorm dengan menambahkan argumen sd=... ke pemanggilan fungsi, atau juga memaksa sd agar sama dengan mean.

person agenis    schedule 26.05.2016