2012-07-24 13 views

risposta

21

Per creare un N da M matrice di IID casuale normale variabili tipo:

matrix(rnorm(N*M,mean=0,sd=1), N, M) 

modificare la media e standar d deviazione come desiderato.

+0

Fintantoché l'interrogante capisce che N è il numero di righe e M il numero di colonne, allora sarà ben servito da questa risposta –

+0

@DWin, d'accordo. Questa è la notazione convenzionale quando ci si riferisce alle matrici in qualsiasi contesto, giusto? – Macro

+0

Non sono proprio sicuro. So che a volte le persone esprimono sorpresa per il fatto che le matrici di R sono riempite in ordine di colonna principale con chiamate a 'matrix' a meno che byrow = TRUE. Ciò mi ha fatto pensare che ci potrebbero essere variazioni nelle convenzioni di matrice tra varie lingue. –

2

let mu essere un vettore di mezzi e sigma un vettore di sviluppatori normali

mu<-1:10 
sigma<-10:1 
sample.size<-100 
norm.mat<-mapply(function(x,y){rnorm(x,y,n=sample.size)},x=mu,y=sigma) 

produrrebbe una matrice con colonne che tiene i relativi campioni

+0

Grazie, funziona. la soluzione di @ cardinal è molto più semplice. –

-2

Avviso: ogni voce è indipendente. Quindi non puoi evitare di usare per cicli, perché devi chiamare rnorm una volta per ogni variabile indipendente. Se chiami solo rnorm (n * m) sono i campioni n * m della stessa variabile casuale!

+0

questo è sbagliato, e confuso ... 'rnorm (n * m)' * fa * genera 'n * m' ** campioni ** indipendenti ** casuali, esattamente come l'OP richiesto. –

1

È possibile utilizzare:

replicate(NumbOfColumns,rnorm(NumbOfLines)) 

È possibile sostituire rnorm altre funzioni di distribuzione, ad esempio runif, per generare matrici con altre distribuzioni.

Problemi correlati