我正在为我的数据集应用guantile回归(使用R)。使用不同的分位数回归线很容易产生漂亮的散点图 (taus< - c(0.05,0.25,0.75,0.95))。
当我想为这些分位数中的每一个产生p值(为了查看每个回归线的统计显着性)时出现问题。对于中值分位数(tau = 0.5),这不是问题,但是当涉及例如tau = 0.25时,我得到以下错误消息:
>QRmodel<-rq(y~x,tau=0.25,model=T)
>summary(QRmodel,se="nid")
Error in summary.rq(QRmodel, se = "nid") : tau - h < 0: error in summary.rq
这可能是什么原因?
另外:建议提及有关分位数回归模型结果的p值和系数,或者仅仅显示情节图并基于该图片讨论结果是否足够?
最好的问候,沮丧的人
答案 0 :(得分:8)
了解在这些类型的调试情况下发生了什么的好方法是找到引发错误的相关代码部分。如果在控制台中键入“summary.rq”,您将看到函数summary.rq的代码。通过它扫描,您将找到使用“nid”方法计算se的部分,从此代码开始:
else if (se == "nid") {
h <- bandwidth.rq(tau, n, hs = hs)
if (tau + h > 1)
stop("tau + h > 1: error in summary.rq")
if (tau - h < 0)
stop("tau - h < 0: error in summary.rq")
bhi <- rq.fit.fnb(x, y, tau = tau + h)$coef
blo <- rq.fit.fnb(x, y, tau = tau - h)$coef
所以这里发生的是,为了计算se,函数首先需要计算带宽h,并且对于tau +/- h重新定义quantreg模型。对于tau接近0或1,有可能增加或减去带宽'h'将导致tau低于0或大于1,这是不好的,所以函数停止。
您有几个选择:
1。)尝试不同的se方法(bootstrapping?)
2.。)自己修改summary.rq代码,强制它在带宽推出tau超出范围的实例中使用max(tau,0)或min(tau,1)。 (可能有严重的理论上的原因,为什么这是一个坏主意;除非你知道你在做什么,否则不建议。)
3。)你可以尝试阅读这些se计算背后的理论,这样你就可以更好地了解它们何时可以正常工作。这可能会说明为什么你遇到tau值接近0或1的错误。
答案 1 :(得分:0)
尝试summary(QRmodel,se="boot")
还要查看summary.rq
的帮助!