2013-10-15 35 views
1

這個問題是關於在R中基於逐點分位數估計值繪製同時空頻帶的簡便方法。假設我獲得了一個p值向量,我想通過使用uniform QQ情節,如果它的分佈接近均勻分佈(...如果不是,那麼哪個點「脫穎而出」,即落在該頻帶之外)。下面是一個例子(其中u_obs表示p值從均勻分佈不一定 - 僅用於說明的目的):R中統一的QQ空間統一空頻帶

library(gap) 
u_obs = qqrunif(1000) 
qqunif(u_obs,pch=21,bg="blue",bty="n") 

根據第5頁中討論的非參數的方法,圖1(左下小圖)本文:http://stat.wharton.upenn.edu/~buja/PAPERS/paper-sim.pdf,如果期望90%的同時界限,我們可以進行10,000次模擬並獲得5%的下限和上限。

我的問題是:

  1. 是否存在的R包/代碼段,能夠有效地執行這個任務?我認爲這屬於「功能數據分析」領域,但我不太確定。

  2. 我們可以從統一的QQ空間的同時空界限做出什麼推論?檢查那些不屬於樂隊的點?如果p值的真實分佈是均勻的(即來自零值),我預計有多少點可以合理地超出頻帶?

+2

我不知道它是否是同時或不是,但你應該看看'汽車:: qqPlot()'和'mgcv :: qq.gam()' –

回答

2

看一下car package中的?qqPlot函數。這將爲你繪製一個信心樂隊(你只需告訴它你感興趣的發行版)。

library(car) 
set.seed(9) 
u_obs <- runif(100) 
windows() 
    qqPlot(u_obs, distribution="unif") 

enter image description here

+0

感謝評論!是的,這與我想要的非常接近。當我查看'qqPlot'的幫助手冊,特別是'qqPlot.lm'時,我注意到''simulate'參數,如果爲TRUE,則通過參數引導來計算置信度,但它只針對'lm'對象。該方法歸功於Atkinson(1985)。我希望通過使用參數引導來獲得(同時)置信度帶'qqPlot.default'。有什麼建議麼?非常感謝! – alittleboy

+2

理論路線不經過[0,0]至少是令人討厭的。 –

+1

我想你可以嘗試從頭開始編寫代碼,@alittleboy,但我不知道這樣做的函數。我嘗試過'mod < - lm(u_obs〜1)',但'qqPlot.lm'接受的唯一分佈是「norm」和「t」。 OTOH,我相信,繪製的置信信封確實來自理論,但似乎以此爲參考。根據迪文的評論,使用'line =「robust」'選項可能會更好。 – gung