anova.rq() 在 R 中的 quantreg 包中

anova.rq() in quantreg package in R

我有兴趣比较不同分位数(相同结果,相同协变量)的估计值,使用 anova 在 R 中的 quantreg 包环境中调用的 anova.rqlist 函数。然而,函数中的数学超出了我的基本专业知识。假设我在不同的分位数上拟合了 3 个模型;

library(quantreg)
data(Mammals) # data in quantreg to be used as a useful example
fit1 <- rq(weight ~ speed + hoppers + specials, tau = .25, data = Mammals)
fit2 <- rq(weight ~ speed + hoppers + specials, tau = .5, data = Mammals)
fit3 <- rq(weight ~ speed + hoppers + specials, tau = .75, data = Mammals)

然后我用它们进行比较;

anova(fit1, fit2, fit3, test="Wald", joint=FALSE)

我的问题是这些模型中的哪一个被用作比较的基础?

我对Wald检验的理解(wiki entry)

其中 θ^ 是与建议值 θ0 相比较的感兴趣参数 θ 的估计值。

所以我的问题是 quantreg 中的 anova 函数选择作为 θ0 是什么?

根据 anova 返回的 pvalue,我最好的猜测是它正在选择指定的最低分位数(即 tau=0.25)。有没有办法指定中位数 (tau = 0.5) 或更好的是使用 lm(y ~ x1 + x2 + x3, data)?

获得的平均估计值
anova(fit1, fit2, fit3, joint=FALSE)

实际生产

Quantile Regression Analysis of Deviance Table

Model: weight ~ speed + hoppers + specials
Tests of Equality of Distinct Slopes: tau in {  0.25 0.5 0.75  }

             Df Resid Df F value  Pr(>F)  
speed         2      319  1.0379 0.35539  
hoppersTRUE   2      319  4.4161 0.01283 *
specialsTRUE  2      319  1.7290 0.17911  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

anova(fit3, fit1, fit2, joint=FALSE)

产生完全相同的结果

Quantile Regression Analysis of Deviance Table

Model: weight ~ speed + hoppers + specials
Tests of Equality of Distinct Slopes: tau in {  0.5 0.25 0.75  }

             Df Resid Df F value  Pr(>F)  
speed         2      319  1.0379 0.35539  
hoppersTRUE   2      319  4.4161 0.01283 *
specialsTRUE  2      319  1.7290 0.17911  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

模型的顺序显然在方差分析中发生了变化,但是 F 值和 Pr(>F) 在两个测试中是如何相同的?

您输入的所有分位数都被使用,没有一个模型被用作参考。

我建议您阅读 this post 和相关答案以了解您的 "theta.0" 是什么。

我相信你要做的是测试回归线是否平行。换句话说,预测变量的影响(这里只有 income)在分位数之间是否一致。

您可以使用 quantreg 包中的 anova() 来回答这个问题。您确实应该为每个分位数使用多个拟合。

当您像以前那样使用 joint=FALSE 时,您会 获得 系数方面的比较。但是你只有一个系数,所以只有一条线!您的结果告诉您 income 的影响在您的示例中在分位数之间并不均匀。使用多个预测变量,您将获得多个 p 值。

如果您不使用 joint=FALSE,您可以对整组系数的相等性进行总体检验,这会给您一个 "Joint Test of Equality of Slopes",因此只有一个 p 值。

编辑:

我认为 theta.0 是所有 'tau' 值的平均斜率或 'lm()' 的实际估计值,而不是任何模型的特定斜率。我的推理是 'anova.rq()' 不需要任何特定的低值 'tau' 甚至中位数 'tau'.

有几种方法可以对此进行测试。要么手动计算 theta.0 等于平均值​​,要么比较许多组合,因为这样你可能会遇到某些模型接近具有低 'tau' 值但不接近模型的情况'lm()' 值。因此,如果 theta.0 是具有最低 'tau' 的第一个模型的斜率,那么您的 Pr(>F) 会很高,而在另一种情况下,它会很低。

这个问题可能应该在 cross-validated 上提出。