Модель пропорционального риска Кокса по данным (ожога) - PullRequest
1 голос
/ 01 апреля 2020

В исследовании описывается изменение протокола дезинфекции в крупном университетском медицинском центре на Среднем Западе. Основной интерес в исследовании представляет сравнение двух методов очищения организма. Первый метод, использовавшийся исключительно с января 1983 года по июнь 1984 года, состоял в обычном методе ухода за ванной (первоначальная дезактивация поверхности 10% повидон-йодом с последующим регулярным купанием с набором soap). С июня 1984 года и до конца периода исследования в декабре 1985 года первоначально проводилось очищение организма с использованием 4% хлоргексидина глюконата. Восемьдесят четыре пациента были в группе, которые получали новый раствор для купания, хлоргексидин, и 70 пациентов служили контрольной группой, которая получала обычную банную помощь, повидонейодин. В набор данных входит ковариата, которая измеряет общую площадь сожженной поверхности. Данные есть (записать). Я хочу проверить: 1- любую разницу в функциях выживания для двух групп. 2- любая разница в функциях выживания для двух групп с поправкой на общую сожженную площадь.

library(KMsurv)
data()
data(burn)
burn

library(survival)

Я знаю, что будет использоваться функция coxph(), но я не уверен, какие группы я следует проверить (из приведенной выше информации). Они T1 и D2? так что за 1 Coxfit1<-coxph(Surv(T1,D2)~group, data = burn)? и для 2 Coxfit2<-coxph(Surv(T1,D2)~Z4, data = burn)?

Что делает этот код?

for(i in 1:154){
  if (burn$??[i]==2)
    burn$Z1[i]<-1
  else burn$Z1[i]<-0
}

for(i in 1:154){
  if (burn$??[i]==3)
    burn$Z2[i]<-1
  else burn$Z2[i]<-0
}

Ответы [ 2 ]

2 голосов
/ 01 апреля 2020

Для вопроса 1 вы хотите проверить распределение * выживаемости между уровнями переменной Z1. В наборе данных нет переменной с именем group. Z1 = 0 означает обычное купание, а Z1 = 1 означает очищение организма. Вы можете преобразовать все переменные Z в коэффициенты, прежде чем продолжить дальше (кроме Z4).

library(survival)
library(KMsurv)
library (dplyr)

burn$Z1 <- factor(burn$Z1, label=c("Routine bathing", "Body cleansing"))

* Слово «выживание» нуждается в пояснении. Предположительно, пришло время до первой стратилозной инфекции aureaus (D3) или до времени исследования, если не произошло ни одного события. Время указывается в переменной T3.

Команда для выполнения теста:

coxph(Surv(T3,D3) ~ Z1, data=burn)
                    coef exp(coef) se(coef)      z      p
Z1Body cleansing -0.5614    0.5704   0.2934 -1.914 0.0557

Для вопроса 2 Z4 содержит процентную долю от сожженной общей площади поверхности, переменную для настройки.

coxph(Surv(T3,D3)~Z1+Z4, data=burn)

                      coef exp(coef)  se(coef)      z     p
Z1Body cleansing -0.524764  0.591695  0.295769 -1.774 0.076
Z4                0.007248  1.007275  0.007145  1.015 0.310

Таким образом, по-видимому, нет никакой разницы во времени до первой инфекции между теми, кто получал обычные омовения против очищения тела.

1 голос
/ 01 апреля 2020

??burn говорит вам, что означают переменные; Z1 и Z4, кажется, то, что вы ищете:

Этот фрейм данных содержит следующие столбцы:

Номер наблюдения Obs

Z1 Обработка: 0 - обычное купание 1-Body чистка

Z2 Пол (0 = мужской 1 = женский)

Z3 Раса: 0 = небелая 1 = белая

Z4 Процент сожженной площади поверхности

Z5 Индикатор места ожога: голова 1 = да, 0 = нет

Z6 Индикатор места ожога: ягодица 1 = да, 0 = нет

Z7 Индикатор места ожога: ствол 1 = да, 0 = нет

Z8 Индикатор места ожога: верхняя часть ноги 1 = да, 0 = нет

Z9 Индикатор места ожога: нижняя часть ноги 1 = да, 0 = нет

Ожог Z10 индикатор места: дыхательные пути 1 = да, 0 = нет

Z11 Тип ожога: 1 = химический, 2 = ожог, 3 = электричество c, 4 = пламя

T1 Время до иссечение или во время обучения

D1 Показатель эксцизии: 1 = да 0 = нет

T2 Время до профилактики c антибиотик c лечение или во время обучения

D2 Профилактика c антибиотик c лечение: 1 = да 0 = нет

T3 Время до стратикулезной ауреальной инфекции или во время обучения

D3 Страфилоциозная ауреальная инфекция: 1 = да 0 = нет

Источник Klein and Moeschberger (1997) Анализ выживания Методы цензуры и усечения данных, Springer. Ichida et al. Стат. Med. 12 (1993): 301-310.

Редактировать: В вашем случае существует значительная разница между обычным омовением и чисткой тела (Z1), но процент сожженной общей площади поверхности ( Z4) не является значимым в одномерном анализе.

library(KMsurv)
library(survival)
library(survminer)
#> Loading required package: ggplot2
#> Loading required package: ggpubr
#> Loading required package: magrittr
data(burn)

## Univariate Cox regression analysis to see whether Z1 and Z4 are significant:
res.cox <- coxph(Surv(T1, D1) ~ Z1, data = burn)
summary(res.cox)
#> Call:
#> coxph(formula = Surv(T1, D1) ~ Z1, data = burn)
#> 
#>   n= 154, number of events= 99 
#> 
#>      coef exp(coef) se(coef)     z Pr(>|z|)   
#> Z1 0.5504    1.7339   0.2072 2.656   0.0079 **
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#>    exp(coef) exp(-coef) lower .95 upper .95
#> Z1     1.734     0.5767     1.155     2.602
#> 
#> Concordance= 0.599  (se = 0.027 )
#> Likelihood ratio test= 7.24  on 1 df,   p=0.007
#> Wald test            = 7.06  on 1 df,   p=0.008
#> Score (logrank) test = 7.23  on 1 df,   p=0.007
ggsurvplot(surv_fit(Surv(T1, D1) ~ Z1, data = burn), data = burn,
           conf.int = TRUE, pval = TRUE)


res.cox <- coxph(Surv(T1, D1) ~ Z4, data = burn)
summary(res.cox)
#> Call:
#> coxph(formula = Surv(T1, D1) ~ Z4, data = burn)
#> 
#>   n= 154, number of events= 99 
#> 
#>         coef exp(coef)  se(coef)      z Pr(>|z|)
#> Z4 -0.005108  0.994905  0.005408 -0.945    0.345
#> 
#>    exp(coef) exp(-coef) lower .95 upper .95
#> Z4    0.9949      1.005    0.9844     1.006
#> 
#> Concordance= 0.529  (se = 0.034 )
#> Likelihood ratio test= 0.94  on 1 df,   p=0.3
#> Wald test            = 0.89  on 1 df,   p=0.3
#> Score (logrank) test = 0.89  on 1 df,   p=0.3

## Multivariate Cox regression analysis to see whether Z1 and Z4 remain significant
## here, univariate Z4 was n.s., so not that relevant...
res.cox <- coxph(Surv(T1, D1) ~ Z1 + Z4, data = burn)
summary(res.cox)
#> Call:
#> coxph(formula = Surv(T1, D1) ~ Z1 + Z4, data = burn)
#> 
#>   n= 154, number of events= 99 
#> 
#>         coef exp(coef)  se(coef)      z Pr(>|z|)  
#> Z1  0.534232  1.706138  0.208651  2.560   0.0105 *
#> Z4 -0.003458  0.996548  0.005435 -0.636   0.5246  
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#>    exp(coef) exp(-coef) lower .95 upper .95
#> Z1    1.7061     0.5861     1.133     2.568
#> Z4    0.9965     1.0035     0.986     1.007
#> 
#> Concordance= 0.606  (se = 0.033 )
#> Likelihood ratio test= 7.66  on 2 df,   p=0neither.02
#> Wald test            = 7.44  on 2 df,   p=0.02
#> Score (logrank) test = 7.61  on 2 df,   p=0.02
...