Может кто-нибудь объяснить мне мою модель Кокса на простом английском?
Я использовал следующую модель регрессии Кокса для всех моих данных, используя 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мне вышеприведенный вывод на простом английском языке или указал на ссылку, которая бы это сделала. Доктор Харрелл, большое спасибо за вашу помощь!