2016-04-24 28 views
2

我期待在R中做一些基本的模擬來檢驗p值的性質。我的目標是看大樣本規模是否趨向於小p值。我的想法是生成1,000,000個數據點的隨機向量,將它們相互迴歸,然後繪製p值的分佈並查找偏斜。模擬數以千計的迴歸和獲得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款甚至更多的有什麼建議?謝謝!

+0

這些帖子可能會有用:http://stackoverflow.com/q/29803993/1989480和http://stackoverflow.com/questions/36571864/why-the-built-in-lm-function-is-so -slow式-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更小來嘗試一下。