在这里,我展示了一个带有rcs术语的生存模型。我想知道rms包下的anova()是否是测试线性关联的方法?如何解释非线性项的P值(参见此处0.094),是否支持在cox模型中添加rcs()项?
library(rms)
data(pbc)
d <- pbc
rm(pbc, pbcseq)
d$status <- ifelse(d$status != 0, 1, 0)
dd = datadist(d)
options(datadist='dd')
# rcs model
m2 <- cph(Surv(time, status) ~ rcs(albumin, 4), data=d)
anova(m2)
Wald Statistics Response: Surv(time, status)
Factor Chi-Square d.f. P
albumin 82.80 3 <.0001
Nonlinear 4.73 2 0.094
TOTAL 82.80 3 <.0001
答案 0 :(得分:0)
正确的测试方法是对两个模型的对数似然(又称偏差)进行模型比较:完整和简化:
m2 <- cph(Surv(time, status) ~ rcs(albumin, 4), data=d)
anova(m2)
m <- cph(Surv(time, status) ~ albumin, data=d)
p.val <- 1- pchisq( (m2$loglik[2]- m$loglik[2]), 2 )
你可以看到使用不太准确的Wald统计量(在你的情况下,因为p值大于0.05时无论如何都不重要)推断的差异,而在Harrell用于他的例子中这个更准确的方法? cph帮助页面。用他的例子:
> anova(f)
Wald Statistics Response: S
Factor Chi-Square d.f. P
age 57.75 3 <.0001
Nonlinear 8.17 2 0.0168
sex 18.75 1 <.0001
TOTAL 75.63 4 <.0001
你错误地得出结论,非常规术语在传统的0.05水平上是“重要的”。尽管创建模型的代码构造为完全线性的年龄(在对数危险等级上):
h <- .02*exp(.04*(age-50)+.8*(sex=='Female'))
创建简化模式并进行比较:
f0 <- cph(S ~ age + sex, x=TRUE, y=TRUE)
anova(f0)
#-------------
Wald Statistics Response: S
Factor Chi-Square d.f. P
age 56.64 1 <.0001
sex 16.26 1 1e-04
TOTAL 75.85 2 <.0001
2自由度差异的偏差差异不显着:
1-pchisq((f$loglik[2]- f0$loglik[2]),2)
[1] 0.1243212
我不知道为什么Harrell会留下这个例子,因为我已经采用了他的RMS课程并且知道他赞同将偏差的交叉模型比较作为更准确的方法。