从分位数回归/ summary()提取R ^2

8

我正在使用quantreg包在R中运行以下的分位数回归:

bank <-rq(gekX~laggekVIXclose+laggekliquidityspread+lagdiffthreeMTBILL+
lagdiffslopeyieldcurve+lagdiffcreditspread+laggekSPret, tau=0.99)

通过提取系数和摘要统计数据来实现

bank$coefficients
summary(bank)

我得到的结果是:
Call: rq(formula = gekX ~ laggekVIXclose + laggekliquidityspread + 
lagdiffthreeMTBILL + lagdiffslopeyieldcurve + lagdiffcreditspread + 
laggekSPret, tau = 0.99)

tau: [1] 0.99

Coefficients:
                       Value    Std. Error t value  Pr(>|t|)
(Intercept)            -0.03005  0.01018   -2.95124  0.00319
laggekVIXclose          0.00471  0.00069    6.81515  0.00000
laggekliquidityspread  -0.01295  0.01619   -0.79976  0.42392
lagdiffthreeMTBILL     -0.12273  0.12016   -1.02136  0.30717
lagdiffslopeyieldcurve -0.13100  0.06457   -2.02876  0.04258
lagdiffcreditspread    -0.21198  0.15659   -1.35377  0.17592
laggekSPret            -0.01205  0.46559   -0.02588  0.97936

然而,我想知道R^2/调整后的R^2值。在简单的OLS回归中,summary()命令似乎可以提供这些值,但在分位数回归中却不行。

有人知道如何提取它们吗?

2个回答

10

Koenker和Machado在1999年的JASA论文中提出的伪R^2度量通过将感兴趣的模型的加权偏差总和与仅截距出现的模型的相同总和进行比较来衡量拟合优度。

这里是一个在R中的例子:

library(quantreg)
data(engel)

fit0 <- rq(foodexp~1,tau=0.9,data=engel)
fit1 <- rq(foodexp~income,tau=0.9,data=engel)

rho <- function(u,tau=.5)u*(tau - (u < 0))
R1 <- 1 - fit1$rho/fit0$rho

其他回答中的代码只会给你那个分数的分子。


1
请问一下,用于生成“rho”的函数是什么?为什么要在其中使用tau=0.5? - Enigma
@Enigma 很抱歉回复晚了。默认情况下使用中位数(tau=0.5)作为默认值,因为这是rq()中的默认值,并且通常被省略。在此CV帖子中有更多信息。 - dimitriy

10
在分位数回归中,你没有R-squared或adjusted R-squared。只有伪R squared,并且在使用lm中的summary时不像预期那样在rq中报告,但是可以在模型建立后按以下方式计算它。
rho <- function(u,tau=.5)u*(tau - (u < 0))
V <- sum(rho(bank$resid, bank$tau))

这是“quantreg”软件包作者提供的答案 此处

谢谢你的回答! - schloni
@Metrics 这只计算了伪R^2的一半成分。 - dimitriy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接