Модель R 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

person Simon Woodward    schedule 26.10.2017    source источник


Ответы (1)


Вы должны понимать, что прогнозирование 90-го процентиля для набора данных, состоящего всего из 10 элементов, на самом деле основано исключительно на двух самых высоких значениях. Вам следует просмотреть страницу справки для квантили, где вы найдете несколько определений этого термина.

Когда я запускаю это, я вижу:

 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
person IRTFM    schedule 26.10.2017
comment
Превосходно. Я забыл, что quantile() имеет аргумент type. Когда я устанавливаю type=1, я получаю один и тот же ответ от обоих методов, что достаточно для моих целей. - person Simon Woodward; 26.10.2017