update()
在这种情况下,这确实有效,但我认为使用and有一个更好/更透明的解决方案anova()
(我什至不知道coxph
模型的对数似然组件包括完整和空偏差)。
使用包中的内置数据集survival
:
## drop NAs so we are using the same data set for full & reduced models
lungna <- na.omit(lung)
## fit full model
m1 <- 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 <- 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(>|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 值。