R quantreg模型不能重现分位数:为什么?

时间:2017-10-26 00:24:41

标签: r quantile quantreg

我正在使用quantreg包来预测分位数及其置信区间。我无法理解为什么预测的分位数与使用quantile()直接从数据计算的分位数不同。

library(tidyverse)
library(quantreg)

data <- tibble(data=runif(10)*10)
qr1 <- rq(formula=data ~ 1, tau=0.9, data=data) #  quantile regression
yqr1<- predict(qr1, newdata=tibble(data=c(1)), interval='confidence', level=0.95, se='boot') # predict quantile
q90 <- quantile(data$data, 0.9) # quantile of sample

> yqr1
       fit    lower   higher
1 6.999223 3.815588 10.18286
> q90
     90% 
7.270891

1 个答案:

答案 0 :(得分:1)

您应该意识到,仅仅有10个项目的数据集的第90个百分位数的预测实际上仅基于两个最高值。您应该查看分位数的帮助页面,您可以在其中找到该术语的多个定义。

当我运行时,我看到:

 yqr1<- predict(qr1, newdata=tibble(data=c(1)) ) 
 yqr1
       1 
8.525812 

当我看到我看到的数据时:

data
# A tibble: 10 x 1
         data
        <dbl>
 1 8.52581158
 2 7.73959380
 3 4.53000680
 4 0.03431813
 5 2.13842058
 6 5.60713159
 7 6.17525537
 8 8.76262959
 9 5.30750304
10 4.61817190

因此rq函数估计第二个最高值为第90个百分点,这看起来非常合理。 quantile结果实际上并未按此方式估算:

quantile(data$data, .9)
#     90% 
#8.549493 
?quantile