Цензурная квантильная регрессия в 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-й квантиль.

Другие вопросы по тегам