模拟数千次回归并获得p值

时间:2016-04-24 05:21:06

标签: r regression p-value sample-size simulation

我希望在R中进行一些基本模拟,以检查p值的性质。我的目标是看大样本量是否趋向于小p值。我的想法是生成1,000,000个数据点的随机向量,将它们相互回归,然后绘制p值的分布并寻找偏斜。

这是我到目前为止的想法:

x1 = runif(1000000, 0, 1000) 
x2 = runif(1000000, 0, 1000) 
model1 = lm(x2~x1)

使用从另一个线程获取的代码:

lmp <- function (modelobject) {
    if (class(modelobject) != "lm") stop("Not an object of class 'lm' ")
    f <- summary(modelobject)$fstatistic
    p <- pf(f[1],f[2],f[3],lower.tail=F)
    attributes(p) <- NULL
    return(p)
  }
lmp(model1) 
0.3874139

有关我如何为1000个型号甚至更多型号执行此操作的任何建议?谢谢!

1 个答案:

答案 0 :(得分:1)

请参阅?replicate ...但您计算的p值假设高斯误差不是均匀的(不是在n = 10 ^ 6时这很重要)

具体来说,就像这样:

nrep <- 1000
ndat <- 1000000
results <- replicate(nrep, {
     x1=runif(ndat, 0, 1000);
     x2=runif(ndat, 0, 1000);
     model1=lm(x1 ~ x2);
     lmp(model1)
     })

应该有用,但是 它需要很长时间才能运行。

我建议将nrep和ndat缩小以试用它。