【问题标题】:Simulating thousands of regressions and obtaining p-values模拟数千个回归并获得 p 值
【发布时间】:2016-08-17 14:44:01
【问题描述】:

我希望在 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 个甚至更多模型执行此操作有什么建议吗?谢谢!

【问题讨论】:

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


【解决方案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 以尝试一下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 2017-01-24
    • 2011-09-07
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多