我正在使用众所周知的" 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")`
答案 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")
然后重新创建结果:
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')
我们会得到:
正如您所看到的,结果是相同的(只有我计算了每个点的间隔,而不仅仅是其中一半的间隔)。
注意plot.errors.type
的{{1}}属性获取“标准”和“分位数”,默认为“标准”。当您指定“标准”时,npplot
将保留标准错误,并且图表将包含mean + std err作为间隔。或者,该图将包括分位数作为间隔,分位数将保存在dat$r1$merr
。要使用的是哪个等级由dat$r1$merr
分位数指定,只有在plot.errors.quantiles