В настоящее время я провожу анализ выживаемости первых 312 строк набора данных, размещенного по адресу:
Удаление отсутствующих значений данных
Я проверяю отсутствие данных, и вот что возвращает р:
> apply(surv.df, 2, function(x) length(which(is.na(x))))
V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20
0 0 0 0 0 0 0 0 0 0 28 0 2 0 0 30 4 0 0
Когда я провожу регрессионный анализ Кокса, я получаю следующее:
Call:
coxph(formula = Surv(Time, Status == 1) ~ log(V5) + V10 + log(V11) +
log(V13) + V14 + V16 + log(V19) + V20, data = surv.df)
n= 310, number of events= 124
(2 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
log(V5) 1.6977282 5.4615258 0.4920161 3.451 0.000559 ***
V10 0.8223583 2.2758606 0.3032572 2.712 0.006693 **
log(V11) 0.7103807 2.0347658 0.1204626 5.897 3.7e-09 ***
log(V13) -2.3728128 0.0932182 0.7746120 -3.063 0.002190 **
V14 0.0018932 1.0018950 0.0009783 1.935 0.052967 .
V16 0.0030053 1.0030098 0.0017212 1.746 0.080804 .
log(V19) 2.8071931 16.5633615 1.1514466 2.438 0.014770 *
V20 0.2898083 1.3361713 0.1392896 2.081 0.037469 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
log(V5) 5.46153 0.18310 2.08214 14.3258
V10 2.27586 0.43939 1.25607 4.1236
log(V11) 2.03477 0.49146 1.60685 2.5766
log(V13) 0.09322 10.72752 0.02042 0.4255
V14 1.00189 0.99811 0.99998 1.0038
V16 1.00301 0.99700 0.99963 1.0064
log(V19) 16.56336 0.06037 1.73395 158.2201
V20 1.33617 0.74841 1.01695 1.7556
Concordance= 0.859 (se = 0.017 )
Likelihood ratio test= 211.3 on 8 df, p=<2e-16
Wald test = 205.9 on 8 df, p=<2e-16
Score (logrank) test = 281.9 on 8 df, p=<2e-16
Есть ли способ сохранить 2 недостающие строки в наборе данных?
Это приводит к другой проблеме: я пытаюсь изобразить остатки Мартингейла, но не могу, так как есть 310 остатков, а переменная V11билирубин имеет 312 наблюдений, поэтому график невозможен.
Предложения?





Вы, наверное, имеете в виду этот массаж, который у вас есть:
(2 observations deleted due to missingness)
Как видно из таблицы:
apply(surv.df, 2, function(x) length(which(is.na(x))))
V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20
0 0 0 0 0 0 0 0 0 0 28 0 2 0 0 30 4 0 0
Есть 30 пропущенных значений в V17 и 28 пропущенных значений в V12, но поскольку ни V17, ни V12 не являются регрессорами в вашей модели / части формулы, для них нет проблем.
Call: coxph(formula = Surv(Time, Status == 1) ~ log(V5) + V10 + log(V11) + log(V13) + V14 + V16 + log(V19) + V20, data = surv.df)
V14, который является частью вашего вызова / формулы, имеет 2 пропущенных значения - поэтому появляется предупреждение.
Не обязательно так уж плохо, что эти два наблюдения были удалены для вашей модели. Если вы этого не хотите, вы можете удалить V14 из своей формулы. Или вы можете выполнить некоторое вменение, чтобы заменить эти отсутствующие значения разумными значениями. (возможно, здесь поможет пакет с мышами).