2017-10-26 6 views
1

Ich verwende das quantreg Paket, um Quantile und ihre Konfidenzintervalle vorherzusagen. Ich kann nicht verstehen, warum sich die vorhergesagten Quantile von den Quantilen unterscheiden, die direkt aus den Daten unter Verwendung von quantile() berechnet wurden.R-Quantregmodell reproduziert keine Quantile: Warum?

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 

Antwort

1

Sie sollten wissen, dass die Vorhersage des 90. Perzentils für einen Datensatz mit nur 10 Elementen wirklich nur auf den zwei höchsten Werten basiert. Sie sollten die Hilfeseite für Quantile überprüfen, in der Sie mehrere Definitionen des Begriffs finden.

Als ich das laufen, ich sehe:

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

Und wenn ich mir die Daten sehe ich sehen:

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 

So ist die rq Funktion ist der zweithöchste Wert als der 90. Perzentile Abschätzen das scheint völlig in Ordnung zu sein. Das quantile Ergebnis wird nicht tatsächlich so geschätzt:

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

Ausgezeichnet. Ich habe vergessen, dass 'quantile()' das 'type' Argument hat. Wenn ich 'type = 1 'setze, bekomme ich die gleiche Antwort von beiden Methoden, was für meine Zwecke ausreichend ist. –

Verwandte Themen