Создание полной или уменьшенной модели с одной объясняющей переменной

#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.