Цензурная квантильная регрессия в R: получение определенных квантилей
Я сгенерировал следующие данные в R:
library(quantreg)
library(survival)
set.seed(789)
N <- 2000
u <- runif(N)
x1 <- rbinom(N,1,.5)
x2 <- rbinom(N,1,.5)
x1x2<-x1*x2
lambda <- 1 + 1.5*x1 + 1.5*x2 + .5*x1x2
k <- 2
y <- lambda*((-log(1-u))^(1/k));max(y)
c <- runif(N,max=15)
event = as.numeric(y<=c)
mean(event);table(event)
cens <- 1-event
table(cens)mean(cens)
time <-as.matrix(ifelse(event==1,y,c))
St<-Surv(time,event,type="right")
К которому я подобрал следующую цензурную модель квантильной регрессии:
q2 <- crq(St~x1 + x2 + x1x2,tau=.9,method="Portnoy")
summary(q2)
Как видите, меня интересует 0,9-й квантиль. Но summary(q2)
возвращает 20-й и 80-й процентили (на 20). Как я могу получить только 0,9-й квантиль (он же 90-й процентиль)?? Моя проблема в том, что, хотя я запрашиваю 90-й процентиль в crq (т. Е. "Тау =0,9"), функция сводки продолжает возвращать один и тот же набор (нежелательных) процентилей (20-й, 40-й, 60-й, 80-й).
2 ответа
Решение
Ввод...
?summary.crq
Результаты в...
## S3 method for class 'crq'
summary(object, taus = 1:4/5, alpha = .05, se="boot", covariance=TRUE, ...)
Так что вы просто должны быть в состоянии указать тау.
summary(q2, tau = 1:9/10)
tau: [1] 0.9
Coefficients:
Value Lower Bd Upper Bd Std Error T Value Pr(>|t|)
(Intercept) 1.55424 1.44255 1.66594 0.05699 27.27311 0.00000
x1 2.23893 2.03412 2.44375 0.10450 21.42528 0.00000
x2 2.15514 1.97319 2.33710 0.09284 23.21441 0.00000
x1x2 0.74453 0.35153 1.13753 0.20051 3.71309 0.00020
Указание единственного значения для tau приводит к ошибке.
Пример квантиля:
quantile(dataframe$columnname, na.rm=TRUE)
В этом случае вы хотите иметь квантиль (dataframe $ columnname, probs = (0.009, 0.2, 0.8))
0,009 дает 0,9-й квантиль.