【问题标题】:R: Distribution of Random Samples vs. 1 Random SampleR:随机样本与 1 个随机样本的分布
【发布时间】:2014-09-09 06:26:15
【问题描述】:
我有一个关于随机抽样的问题。
以下两个结果(A 和 B)在统计上是否相同?
nobs <- 1000
A <- rt(n=nobs, df=3, ncp=0)
simulations <- 50
B <- unlist(lapply(rep.int(nobs/simulations, times=simulations),function(y) rt(n=y, df=3, ncp=0) ))
我原以为会是,但现在我一直在来回走动。
任何帮助将不胜感激。
谢谢
【问题讨论】:
标签:
r
random
montecarlo
resampling
statistics-bootstrap
【解决方案1】:
通过一些小的更改,您甚至可以使它们在数值上相等。您只需播种 RNG 并省略指定 ncp 参数并使用默认值(0)代替:
nobs <- 1000
set.seed(42)
A <- rt(n=nobs, df=3)
simulations <- 50
set.seed(42)
B <- unlist(lapply(rep.int(nobs/simulations, times=simulations),function(y) rt(n=y, df=3) ))
all.equal(A, B)
#[1] TRUE
为什么在指定ncp=0 时得不到相同的结果?
因为 rt 假设您实际上需要非中心 t 分布,并且这些值是使用 rnorm(n, ncp)/sqrt(rchisq(n, df)/df) 计算的。这意味着当一次创建 1000 个值时,rnorm 被调用一次,rchisq 随后被调用一次。如果您创建 50 乘以 20 的值,则会交替调用这些 RNG,这意味着 rnorm 和 rchisq 调用的 RNG 状态与第一种情况不同。