我正在为我的数据集应用 guantile 回归(使用 R)。使用不同的分位数回归线很容易产生漂亮的散点图图像
(taus
当我想为这些分位数中的每一个生成 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 值和系数,还是仅显示绘图图片并根据该图片讨论结果就足够了?
最好的问候,沮丧的人
最佳答案
了解在此类调试情况下发生了什么的一个好方法是找到引发错误的代码的相关部分。如果您在控制台输入“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,然后 quantreg 模型针对 tau +/- h 进行 retrofit 。对于接近 0 或 1 的 tau,增加或减去带宽 'h' 有可能导致 tau 低于 0 或大于 1,这是不好的,因此函数停止。
你有几个选择:
1.) 尝试不同的 se 方法(引导?)
2.) 自己修改summary.rq 代码以强制它在带宽将tau 超出范围的情况下使用max(tau,0) 或min(tau,1)。 (可能有严重的理论原因为什么这是一个坏主意;除非您知道自己在做什么,否则不建议这样做。)
3.) 您可以尝试阅读这些 se 计算背后的理论,以便更好地了解它们何时可以正常工作。这可能会说明为什么您会遇到 tau 值接近 0 或 1 的错误。
关于r - 分位数回归和 p 值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6229569/