获取npreg的置信区间为值,而不是为

时间:2015-07-20 12:19:44

标签: r

我正在使用众所周知的" np" Hayfield&用于非参数回归的Racine。它允许基于引导程序对估计系数进行绘制置信带。有关示例,请参阅下面的代码。

问题:我想知道如何以数字形式获得这些置信度?一个,但不是这个问题的唯一原因是我真的不喜欢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")`

1 个答案:

答案 0 :(得分:2)

执行plot时,函数调用np包的绘图方法,即函数npplot

npplot默认参数plot.behavior,默认情况下等于plot,它会绘制结果并返回NULL。你应该设置plot.behavior = "plot-data",函数将绘制并返回对象的数据。

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

比行中的值可以通过dat$r1$mean加入,并且要添加到均值的值可以通过dat$r1$merr获得上下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

正如您所看到的,结果是相同的(只有我计算了每个点的间隔,而不仅仅是其中一半的间隔)。

注意plot.errors.type的{​​{1}}属性获取“标准”和“分位数”,默认为“标准”。当您指定“标准”时,npplot将保留标准错误,并且图表将包含mean + std err作为间隔。或者,该图将包括分位数作为间隔,分位数将保存在dat$r1$merr。要使用的是哪个等级由dat$r1$merr分位数指定,只有在plot.errors.quantiles

时它才有意义