2015-07-20 64 views
1

我使用衆所周知的Hayfield & Racine的「np」包進行非參數迴歸。它允許爲基於自舉程序的估計係數繪製置信區間。有關示例,請參閱下面的代碼。獲取npreg的置信區間作爲值,而不是繪圖

問題:我想知道如何獲得這些數字形式的置信intervalls?其中一個,但不是這個問題的唯一原因是我真的不喜歡ci的介紹。更一般地說,我想在我的分析中使用並進一步處理信心帶。

library(np) 
    # generate random variables: 
    x <- 1:100 + rnorm(100)/2 
    y <- (1:100)^(0.25) + rnorm(100)/2 
    mynp <- npreg(y~x) 
    plot(mynp, plot.errors.method="bootstrap")` 

回答

2
執行 plot

,該函數被調用,以np包,它是函數npplot

npplot exepts它默認圖表的結果,並返回NULL等於plot參數plot.behavior的情節方法。你應該設置plot.behavior = "plot-data",該功能將繪製並返回對象的數據。

dat <- plot(mynp, plot.errors.method="bootstrap",plot.behavior = "plot-data") 

比該行中的值可以通過dat$r1$mean被accesed和要添加到平均值的值,以獲得通過dat$r1$merr accesed上下CI。

注意並不是所有的值都被繪製出來。只有一半(每隔一個值和最後一個值)。

閱讀關於npplot的'幫助'以獲取更多選擇。

進一步是與使用的代碼示例結果:

library(np) 
# generate random variables: 
x <- 1:100 + rnorm(100)/2 
y <- (1:100)^(0.25) + rnorm(100)/2 
mynp <- npreg(y~x) 
dat <- plot(mynp, plot.errors.method="bootstrap",plot.behavior = "plot-data") 

enter image description here

然後重新創建結果:

z <- unlist(dat$r1$eval,use.names = F) 
CI.up = as.numeric(dat$r1$mean)+as.numeric(dat$r1$merr[,2]) 
CI.dn = as.numeric(dat$r1$mean)+as.numeric(dat$r1$merr[,1]) 
plot(dat$r1$mean~z, cex=1.5,xaxt='n', ylim=c(1.0,3.5),xlab='',ylab='lalala!', main='blahblahblah',col='blue',pch=16) 
arrows(z,CI.dn,z,CI.up,code=3,length=0.2,angle=90,col='red') 

,我們將得到: enter image description here

就像你c一看,結果是一樣的(只有我計算了每個點的間隔,而不僅僅是其中的一半)。

注意npplotplot.errors.type屬性默認情況下獲得「標準」和「分位數」並且是「標準」。當您指定「標準」時,dat$r1$merr將保持標準誤差,並且曲線將包括mean + std err作爲區間。或者,該圖將包括分位數作爲間隔,分位數將保存在dat$r1$merr。其中使用的qu化由plot.errors.quantiles分位數指定,並且它僅與plot.errors.type = "quantiles"

+0

相關非常感謝!那很簡單!所以我只是想知道爲什麼這很難找到,例如在文檔中搜索「可信度」沒有產生任何表明可以檢索數據的結果。 但是有一個問題:如果我現在正確理解文檔,$ merr將檢索標準錯誤,而不是置信區間。所以5%置信區間將是平均值+/- 1.9559 * dat $ r1 $ merr? – user1966337

+0

查看更新的答案 –

+0

太棒了!感謝您的進一步細節! – user1966337