Может кто-нибудь объяснить мне мою модель Кокса на простом английском?
Я использовал следующую модель регрессии Кокса для всех моих данных, используя cph
функцию. Мои данные сохраняются в объекте под названием Data
. Переменные w
, x
и y
непрерывны; z
это фактор двух уровней. Время измеряется месяцами. У некоторых из моих пациентов отсутствуют данные для переменной z
( примечание : ниже я должным образом отметил предположение д-ра Харрелла, что я вменяю эти значения, чтобы избежать смещения моей модели, и сделаю это в будущем).
> fit <- cph(formula = Surv(time, event) ~ w + x + y + z, data = Data, x = T, y = T, surv = T, time.inc = 12)
Cox Proportional Hazards Model
Frequencies of Missing Values Due to Each Variable
Surv(time, event) w x y z
0 0 0 0 14
Model Tests Discrimination
Indexes
Obs 152 LR chi2 8.33 R2 0.054
Events 64 d.f. 4 g 0.437
Center 0.7261 Pr(> chi2) 0.0803 gr 1.548
Score chi2 8.07
Pr(> chi2) 0.0891
Coef S.E. Wald Z Pr(>|Z|)
w -0.0133 0.0503 -0.26 0.7914
x -0.0388 0.0351 -1.11 0.2679
y -0.0363 0.0491 -0.74 0.4600
z=1 0.3208 0.2540 1.26 0.2067
Я также попытался проверить предположение о пропорциональных опасностях с помощью cox.zph
команды ниже, но не знаю, как интерпретировать ее результаты. Обстановка plot()
команды дает сообщение об ошибке.
cox.zph(fit, transform="km", global=TRUE)
rho chisq p
w -0.1125 1.312 0.2520
x 0.0402 0.179 0.6725
y 0.2349 4.527 0.0334
z=1 0.0906 0.512 0.4742
GLOBAL NA 5.558 0.2347
Первая проблема
- Может ли кто-нибудь объяснить мне результаты вышеприведенного вывода на простом английском языке? У меня есть медицинское образование и нет официальной подготовки по статистике.
Вторая проблема
По предложению д-ра Харрелла, я хотел бы провести внутреннюю проверку своей модели, выполнив 100 итераций 10-кратной перекрестной проверки с использованием
rms
пакета (насколько я понимаю, это повлечет за собой построение100 * 10 = 1000
различных моделей, а затем попросит их предсказать времена выживания пациентов, которых они никогда не видели).Я попытался использовать
validate
функцию, как показано на рисунке.> v1 <- validate(fit, method="crossvalidation", B = 10, dxy=T) > v1 index.orig training test optimism index.corrected n Dxy -0.2542 -0.2578 -0.1356 -0.1223 -0.1320 10 R2 0.0543 0.0565 0.1372 -0.0806 0.1350 10 Slope 1.0000 1.0000 0.9107 0.0893 0.9107 10 D 0.0122 0.0128 0.0404 -0.0276 0.0397 10 U -0.0033 -0.0038 0.0873 -0.0911 0.0878 10 Q 0.0155 0.0166 -0.0470 0.0636 -0.0481 10 g 0.4369 0.4424 0.6754 -0.2331 0.6700 10
Как вы выполняете 100x повторную выборку? Я думаю, что мой приведенный выше код выполняет перекрестную проверку только один раз.
Затем я хотел узнать, насколько хороша моя модель при прогнозировании. Я попробовал следующее:
> c_index <- abs(v1[1,5])/2 + 0.5 > c_index [1] 0.565984
Значит ли это, что моя модель лишь немного лучше, чем подбрасывание монеты?
Третья проблема
Доктор Харрелл указывает, что я предположил линейность ковариатных эффектов, и что число событий в моей выборке едва достаточно велико, чтобы соответствовать надежной модели, если все ковариатные эффекты оказываются линейными.
- Означает ли это, что я должен включить какой-то термин взаимодействия в мою модель? Если да, то какой совет что ставить?
cph
мне вышеприведенный вывод на простом английском языке или указал на ссылку, которая бы это сделала. Доктор Харрелл, большое спасибо за вашу помощь!