2016-04-24 4 views
2

私は、p値の性質を調べるためにRでいくつかの基本的なシミュレーションを行うことを検討しています。私の目標は、大きなサンプルサイズが小さいp値に向かう傾向にあるかどうかを確認することです。私の考えは、1,000,000個のデータ点のランダムなベクトルを生成し、それらを互いに逆行させ、p値の分布をプロットし、スキューを探すことです。回帰の何千というシミュレーションとp値の取得

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

を別のスレッドから取られたコードの使用::私は1000のモデルまたはそれ以上のためにこれを行う方法について

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 

任意の提案を

これは私がこれまで考えていた何ですか?ありがとう!

+0

これらの記事は役に立つかもしれません:http://stackoverflow.com/q/29803993/1989480およびhttp://stackoverflow.com/questions/36571864/why-the-built-in-lm-function-is-so -low-in-r – chinsoon12

答えて

0

?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を小さくすることをお勧めします。

関連する問題