用循环填充矩阵

4 simulation r matrix

我想创建一个矩阵n通过kk使用循环MVN协变量.相当简单,但到目前为止还没有...这是我的代码:

n=1000
k=5
p=100
mu=0
sigma=1
x=matrix(data=NA, nrow=n, ncol=k)


for (i in 1:k){
        x [[i]]= mvrnorm(n,mu,sigma)
       }
Run Code Online (Sandbox Code Playgroud)

少了什么东西?

gun*_*ica 11

我在这看到几件事:

  1. 您可能希望为可复制性(set.seed(20430))设置随机种子.这意味着每次运行代码时,您将获得完全相同的伪随机变量集.
  2. 接下来,您的数据将只是独立的变量; 他们实际上不会有任何多变量结构(虽然这可能是你想要的).一般来说,如果你想生成多元数据,你应该使用?mvrnorm,从MASS包.(有关详细信息,请参阅此处.)
  3. 作为次要问题,如果您需要标准普通数据,则无需指定mu = 0sigma = 1,因为这些是默认值rnorm().
  4. 您不需要循环来填充R中的矩阵,只需生成任意数量的值,并使用data=函数中的参数直接添加它们matrix().如果您真的致力于使用循环,那么您应该使用双循环,以便循环遍历列,并在每个循环内循环遍历行.(请注意,这是一种非常低效的R代码编写方式 - 尽管我一直在做这样的事情;-).
  5. 最后,我无法分辨p你的代码应该做什么.

这是一个做你想做的事情的基本方法:

set.seed(20430)
n   = 1000
k   = 5
dat = rnorm(n*k)
x   = matrix(data=dat, nrow=n, ncol=k)
Run Code Online (Sandbox Code Playgroud)

如果你真的想使用循环,你可以这样做:

mu    = 0
sigma = 1
x     = matrix(data=NA, nrow=n, ncol=k)

for(j in 1:k){
   for(i in 1:n){
        x[i,j] = rnorm(1, mu, sigma)
   }
}
Run Code Online (Sandbox Code Playgroud)