Интерпретация и проверка модели регрессии пропорциональных рисков Кокса с использованием R на простом английском языке

13

Может кто-нибудь объяснить мне мою модель Кокса на простом английском?

Я использовал следующую модель регрессии Кокса для всех моих данных, используя 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

    Значит ли это, что моя модель лишь немного лучше, чем подбрасывание монеты?

Третья проблема

Доктор Харрелл указывает, что я предположил линейность ковариатных эффектов, и что число событий в моей выборке едва достаточно велико, чтобы соответствовать надежной модели, если все ковариатные эффекты оказываются линейными.

  • Означает ли это, что я должен включить какой-то термин взаимодействия в мою модель? Если да, то какой совет что ставить?
Александр
источник
2
Я внес несколько важных изменений в свой первоначальный вопрос, описанный выше, примерно через три часа после того, как я его первоначально задал. Я пытался следовать очень полезному совету доктора Харрелла. Я все равно был бы очень признателен, если бы кто-нибудь попытался объяснить cphмне вышеприведенный вывод на простом английском языке или указал на ссылку, которая бы это сделала. Доктор Харрелл, большое спасибо за вашу помощь!
Александр

Ответы:

12

Для начала рассмотрим несколько вещей. Во-первых, вы исключаете слишком много наблюдений с отсутствующими данными, и это приведет к смещению. Рассмотрим множественное вменение. Во-вторых, есть метод сюжета дляcox.zphчто полезно при оценке пропорциональных рисков. В-третьих, вы предположили линейность ковариатных эффектов. В-четвертых, количество событий в вашей тренировочной выборке едва достаточно велико, чтобы соответствовать надежной модели, если все ковариатные эффекты оказываются линейными (что редко). И ваш тестовый образец должен иметь около 400 событий, прежде чем он даст надежную оценку точности прогноза. Не ясно, что у вас было достаточно данных, чтобы разделить данные на две части. Проверка повторной выборки (100 повторов 10-кратной перекрестной проверки или использование начальной загрузки) является лучшим решением. Оба ваши оригинальные внешние проверки (функция rcorr.censи val.surv) и ReSampling внутренней проверки (функции validate, calibrate) реализуются в R rmsпакете. Тематические исследования дляrms2×2

Фрэнк Харрелл
источник
1
Доктор Харрелл, большое спасибо за ваши комментарии. Я пытался печатать plot(cox.zph(fit[[1]], transform="km", global=TRUE)), однако, это дало Error in plot.cox.zph(cox.zph(fit[[1]], transform = "km", global = TRUE)) : Spline fit is singular, try a smaller degrees of freedom. Я неправильно вызываю эту функцию?
Александр
1
Если я объединю свои данные обучения и проверки, у меня будет 166 наблюдений с 75 событиями. Как вы предложили, я могу вменять значения моей переменной "z" для моих 13 наблюдений, в которых отсутствуют эти данные, что устраняет эту проблему. Мне нравится ваше предложение выполнить 100-кратную перекрестную проверку. Если у вас есть время, я был бы очень признателен, если бы вы могли предложить более конкретный совет о том, как использовать пакеты rms для этого. А пока я продолжу читать ваш сайт. Я хотел бы пройти ваш курс в будущем. К сожалению, я сейчас в Европе, слишком далеко!
Александр
2
Для проблемы сингулярности сделайте plot(cox.zph(...), df=2). Посмотрите примеры использования в примечаниях к курсу для rmsпримеров или установите пакет (который также нуждается в Hmiscпакете) и введите эти команды, чтобы вызвать файлы справки:?cph ?validate.cph ?calibrate.cph
Фрэнк Харрелл
2
Еще раз спасибо за помощь! В эти выходные я распечатал ваши заметки о курсе и проведу на этой неделе их чтение и проработку всех тематических исследований.
Александр
4

Вывод функции R cph, основанный на соответствующем примере, объясняется в этой простой для понимания статье Дж. Фокса.

Я настоятельно рекомендую прочитать эту статью, если вы еще этого не сделали.

Zhubarb
источник
1
Можете ли вы описать, как газета предлагает интерпретировать cphрезультаты?
Смиллиг
2
+1 Спасибо за ссылку и добро пожаловать на этот сайт! Было бы замечательно, если бы вы также смогли дать краткий обзор содержания статьи, поскольку мы стремимся найти ответы, которые могли бы дать свои ответы.
Гала
Этой ссылки больше нет
Marcin Kosiński
1
Ссылка socialsciences.mcmaster.ca/jfox/Books/Companion-1E/… в настоящее время работает и выглядит так же, как ссылка в этом ответе.
dnlbrky