生成样本大小不相等的多元正态数据

时间:2018-10-03 20:02:21

标签: r for-loop random multivariate-testing data-generation

我想使用MASS :: mvrnorm(或视情况而定,是rnorm)生成操纵样本大小和方差的多元随机数据。这非常简单,但是,诀窍在于,我打算用此生成的数据模拟一个统计数据,该统计数据将比较两个不同样本大小(不同长度)。本质上,这创建了一个3X3设计,其中我具有三个级别的2个不同样本大小(例如[450,150],[300,300],[150,450])与三个级别的方差(例如[1,1],[1,3] ,[1,10])。

    n <- c(450,150,300,300,150,450) # sample sizes

    sig <- matrix(c(1,1,1,3,1,10), nrow=2, byrow=F) # variance

    mu <- (5, 5, 5) # mean is constant across all conditions 

    mvrnorm(n, mu, sig) 

我确定我必须遍历样本大小的向量,就像我在每个条件下仅生成一个 个样本大小一样。但是,由于我为每种条件生成两个样本大小,因此我不确定如何执行此操作。

1 个答案:

答案 0 :(得分:2)

如果我对您的理解正确,则需要六个样本:N(5,1)抽取450张,N(5,1)抽取150张,N(5,1)抽取300张,N(5)抽取300张,3),从N(5,1)中抽出150个,从N(5,10)中抽出450个。你可以通过

samples <- mapply(rnorm, n = c(450,150,300,300,150,450), sd = c(1,1,1,3,1,10))

显然,由于尺寸的原因,我将省略输出,但是您可以看到我的意思:

str(samples)
List of 6
 $ : num [1:450] 0.785 -0.21 0.192 -0.265 -0.501 ...
 $ : num [1:150] 1.224 -0.315 -0.131 -0.923 0.407 ...
 $ : num [1:300] -0.413 -1.081 0.469 1.332 0.244 ...
 $ : num [1:300] -0.748 -0.628 0.753 1.4 3.883 ...
 $ : num [1:150] 0.376 -1.193 1.133 1.839 1.528 ...
 $ : num [1:450] 2.19 -3.17 2.45 0.75 -8.4 ...

然后,您要在samples[[1]]samples[[2]]之间,然后在samples[[3]]samples[[4]]之间,最后在samples[[5]]和{{ 1}}。我不知道您打算运行什么测试,但是如果您具有测试功能,那就应该很简单:只需输入适当的列表元素即可。

更新

根据评论,您需要获取所需的所有样品组合

samples[[6]]