我是新的模拟演习在R,我想创建1000个样本大小25从t分布与自由度10。
我是否需要从rt生成器中创建一个数据向量,然后从它中反复进行采样?因此,例如,我可以创建向量:
singlevector <- rt(5000, 10),它从大小为5000的t分布中生成数据,df = 10。因此,我将把它作为我的总体,然后从它中取样。我在这里任意选择了5000人口。
或者,我应该创建我的1000个样本调用这个随机的t生成器每次?
换句话说,创建一个包含25行和1000列的矩阵,每个列包含对应于rt(25, 10)新调用的向量。
发布于 2016-11-23 19:29:24
由于您是抽样独立的,相同分布的值,所有这三种方法在统计上是等价的。
后两者不仅是统计上的,而且在计算上是等价的。在第一种方法中,样本的顺序被加扰,但这对统计性质没有影响。
方法1:
set.seed(101)
x1 <- rt(25000,10)
r1 <- do.call(cbind,split(x1,sample(0:24999) %/% 25))说明#2和#3的等价性:
set.seed(101)
r2 <- replicate(1000, rt(25, 10))
set.seed(101)
r3 <- matrix(rt(25000,10),nrow=25)
identical(r2,r3) ## TRUE一般来说,解决方案#3是最快的(但是对于这个数量级的问题,所有这些方法都是非常快的,即在我的笔记本上的25x1000个样本中,大约5毫秒(#3)比10毫秒(#2) );我会选择在读取代码时最容易理解的方法。
https://stackoverflow.com/questions/40772405
复制相似问题