Многовариантный регрессионный анализ Кокса в R с недвоичными категориальными переменными - PullRequest
0 голосов
/ 14 марта 2020

У меня есть вопросы о многомерном регрессионном анализе Кокса, включая недвоичные категориальные переменные. Мои данные состоят из нескольких переменных, и некоторые из них являются двоичными (например, пол, возраст старше 70 лет и т. Д. c ..), тогда как остальные не являются (например, ECOG)

Я пытался обе функции analyse_multivariate и функция coxph, но кажется, что я могу получить только общую опасность крысы ios относительно некатегориальных переменных, но я хотел бы знать как общую опасность крысы ios для переменной, так и индивидуальной опасности крысы ios для подкатегорий в переменной (например, риск крыса ios для ECOG 0, ECOG 1, ECOG 2 и для общей ECOG)

То, что я пытался в процессе, выглядит следующим образом:

(1)

ECOG = as.factor(df$ECOG)
analyse_multivariate(data=df, 
                     time_status = vars(df$OS, df$survival_status==1),
                     covariates = vars(df$age70, df$sex, ECOG),
                     reference_level_dict = c(ECOG==0))

и результат будет следующим:

Hazard Ratios:
factor.id      factor.name factor.value    HR Lower_CI Upper_CI Inv_HR Inv_Lower_CI Inv_Upper_CI
df$age70         df$age70 <continuous>  1.07     0.82     1.41   0.93         0.71         1.22
ECOG:4 ECOG            4  1.13     0.16     8.19   0.89         0.12         6.43
df$sex           df$sex <continuous>    1.87     0.96     3.66   0.53         0.27         1.04
ECOG:1 ECOG            1  2.14     1.63     2.81   0.47         0.36         0.61
ECOG:3 ECOG            3 12.12     7.83    18.76   0.08         0.05         0.13
ECOG:2 ECOG            2 13.72     4.92    38.26   0.07         0.03          0.2

(2)

analyse_multivariate(data=df, 
                     time_status = vars(df$OS, df$survival_status==1),
                     covariates = vars(df$age70, df$sex, df$ECOG),
                     reference_level_dict = c(ECOG==0))

и результат:


Hazard Ratios:
factor.id   factor.name factor.value   HR Lower_CI Upper_CI Inv_HR Inv_Lower_CI Inv_Upper_CI
df$age70   df$age70 <continuous> 0.89     0.68     1.16   1.13         0.86         1.47
df$sex     df$sex <continuous> 1.87     0.96     3.65   0.53         0.27         1.04
df$ECOG    df$ECOG <continuous>  1.9     1.69     2.15   0.53         0.47         0.59

Имеет ли смысл, если я использую p-значение для ECOG в целом из (2) и рассматриваю ECOG как значимую переменную, если его p-значение <0,05, и комбинирую индивидуальную опасность для крыс ios для индивидуального Статус ECOG из (1)? </p>

как для создания таблицы, такой как follo крылья:

                  p-value   0.01
ECOG 1   Reference  
ECOG 2   13.72 (4.92-38.26) 
ECOG 3   12.12 (7.83-18.76) 
ECOG 4   1.13 (0.16-8.19)   

Я считаю, что есть лучшие решения, но не могу найти их.

Любые комментарии будут оценены! Заранее спасибо.

1 Ответ

0 голосов
/ 14 марта 2020

Короткий ответ - нет. В (2) это непрерывный ответ, означающий, что вы ожидаете, что отношение логарифмов выживаемости будет иметь линейную зависимость с ECOG, тогда как в (1) вы ожидаете, что каждый уровень (от 1 до 4) будет иметь различное влияние на выживаемость. Чтобы проверить переменную ECOG, вы можете сделать анову:

library(survivalAnalysis)
data = survival::lung
data$ECOG = factor(data$ph.ecog)
data$sex = factor(data$sex)

fit1 = data %>%
  analyse_multivariate(vars(time, status),
                       covariates = vars(age, sex, ECOG, wt.loss))

anova(fit1$coxph)
Analysis of Deviance Table
 Cox model: response is Surv(time, status)
Terms added sequentially (first to last)

         loglik   Chisq Df Pr(>|Chi|)   
NULL    -675.02                         
age     -672.36  5.3325  1   0.020931 * 
sex     -667.82  9.0851  1   0.002577 **
ECOG    -660.26 15.1127  3   0.001723 **
wt.loss -659.31  1.9036  1   0.167680   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
...