#r #survival-analysis #cox
#r #анализ выживаемости #рулевой
Вопрос:
Я пытаюсь создать модель пропорциональных опасностей Кокса только с одной объясняющей переменной. Чтобы выполнить тест на коэффициент правдоподобия, я знаю, что мне нужна полная и уменьшенная модель. Я также знаю, что полная модель будет отдельным средним значением для каждой группы, а сокращенная модель будет использовать общее среднее значение для всего набора данных. Как я могу убедиться, что я правильно настраиваю это в R? В этой модели z равно 1, если пациент перенес операцию на сердце, и z равно 0 в противном случае
У меня есть:
modellt;-coxph(Surv(time,delta)~z,method='breslow',data=heartdata) X.lr lt;- 2*(model$loglik[2]-model$loglik[1])
Достигается ли это таким образом? Я получаю ответ, я просто хочу знать, делает ли это полную или уменьшенную модель, так как у меня нет других переменных для использования?
Ответ №1:
В данном случае это действительно работает, но я думаю, что есть лучшее/более прозрачное решение с использованием update()
и anova()
(я даже не знал, что компонент логарифмической вероятности coxph
моделей включал как полные, так и нулевые отклонения).
Использование встроенного набора данных из survival
пакета:
## drop NAs so we are using the same data set for full amp; reduced models lungna lt;- na.omit(lung) ## fit full model m1 lt;- coxph(Surv(time, status) ~ ph.ecog, data=lungna) ## update model to fit intercept only (` ~ 1 ` replaces the RHS of the formula): ## ~ 1 means "intercept only" in R formula notation m0 lt;- update(m1, . ~ 1) ## anova() runs a likelihood-ratio test anova(m0,m1)
Результаты:
Analysis of Deviance Table Cox model: response is Surv(time, status) Model 1: ~ 1 Model 2: ~ ph.ecog loglik Chisq Df P(gt;|Chi|) 1 -508.12 2 -501.91 12.409 1 0.0004273 ***
Вы можете подтвердить, что 2*diff(m1$loglik)
это дает 12,409, то же значение, о котором сообщала компания anova()
для разницы в отклонении («Chisq»), и это pchisq(chisq_val, df = 1, lower.tail = FALSE)
дает сообщенное значение p.