Доступ к p-значению из квантильной регрессии для нескольких квантилей в R
Я хочу получить доступ к p-значениям квантильной регрессии с несколькими квантилями.
fit2 <- rq(speed ~ vsby_avg + snwd_avg, tau=c(.05, 0.95), data = test_data)
fit2_summ <- summary(fit2)
str(fit2_summ)
дает следующий результат
List of 2
$ :List of 6
..$ call : language rq(formula = speed ~ vsby_avg + snwd_avg, tau = c(0.05, 0.95), data = test_data)
..$ terms :Classes 'terms', 'formula' language speed ~ vsby_avg + snwd_avg
.. .. ..- attr(*, "variables")= language list(speed, vsby_avg, snwd_avg)
..$ coefficients: num [1:3, 1:4] 57.63195 0.13474 -0.00337 0.1919 0.01212 ...
Я не могу получить доступ к p-значениям для 50-го и 95-го квантиля, используя fit2_summ$coefficients[,4]
потому что сводная модель присутствует для 2 квантилей, а не для одного квантиля, в этом случае вышеприведенная команда сработала бы.
1 ответ
Решение
Вы должны указать метод расчета SE:
# using mtcars
library(quantreg)
fit <- rq(mpg ~ cyl + disp, tau = c(0.05, 0.95), data = mtcars)
fit.smy <- summary(fit, se = 'boot')
# > fit.smy
#
# Call: rq(formula = mpg ~ cyl + disp, tau = c(0.05, 0.95), data = mtcars)
#
# tau: [1] 0.05
#
# Coefficients:
# Value Std. Error t value Pr(>|t|)
# (Intercept) 29.02978 1.85711 15.63170 0.00000
# cyl -1.43979 0.55214 -2.60766 0.01426
# disp -0.01546 0.00773 -1.99955 0.05499
#
# Call: rq(formula = mpg ~ cyl + disp, tau = c(0.05, 0.95), data = mtcars)
#
# tau: [1] 0.95
#
# Coefficients:
# Value Std. Error t value Pr(>|t|)
# (Intercept) 51.82250 6.18594 8.37747 0.00000
# cyl -4.70281 1.84648 -2.54691 0.01644
# disp 0.01250 0.02616 0.47785 0.63634
доступ к P.values
# fit.smy is a list, its length is the same as tau;
lapply(fit.smy, function(x){
x$coefficients[,4]
})
# [[1]]
# (Intercept) cyl disp
# 3.996803e-14 2.205166e-02 5.699536e-02
#
# [[2]]
# (Intercept) cyl disp
# 3.263261e-08 4.381427e-02 6.903882e-01