使用一个解释变量创建完整模型与简化模型
Creating a full vs. reduced model with one explanatory variable
我正在尝试创建一个只有一个解释变量的 Cox 比例风险模型。要执行似然比检验,我知道我需要一个完整的简化模型。我还知道,完整模型将是每个组的单独均值,而简化模型将对整个数据集使用总体均值。我如何确保在 R 中正确设置它?在此模型中,如果患者接受过心脏手术,则 z 为 1,否则 z 为 0
我有:
model<-coxph(Surv(time,delta)~z,method='breslow',data=heartdata)
X.lr <- 2*(model$loglik[2]-model$loglik[1])
这实现了吗?我得到了一个答案我只是想知道这是否是完整模型还是简化模型,因为我没有其他变量可以使用?
在这种情况下,这确实有效,但我认为有一个使用 update()
和 anova()
的 better/more 透明解决方案(我什至不知道对数似然分量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 值.
我正在尝试创建一个只有一个解释变量的 Cox 比例风险模型。要执行似然比检验,我知道我需要一个完整的简化模型。我还知道,完整模型将是每个组的单独均值,而简化模型将对整个数据集使用总体均值。我如何确保在 R 中正确设置它?在此模型中,如果患者接受过心脏手术,则 z 为 1,否则 z 为 0
我有:
model<-coxph(Surv(time,delta)~z,method='breslow',data=heartdata)
X.lr <- 2*(model$loglik[2]-model$loglik[1])
这实现了吗?我得到了一个答案我只是想知道这是否是完整模型还是简化模型,因为我没有其他变量可以使用?
在这种情况下,这确实有效,但我认为有一个使用 update()
和 anova()
的 better/more 透明解决方案(我什至不知道对数似然分量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 值.