1

在这里,我演示了一个带有 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
4

1 回答 1

1

正确的测试方法是对两个模型的对数似然(又名偏差)进行模型比较:完整和简化:

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 )

在 Harrell 在他的 ?cph 帮助页面中使用的示例中,您可以看到使用不太准确的 Wald 统计量(在您的情况下无论如何都不显着,因为 p 值 > 0.05)与这种更准确的方法进行推理的差异。用他的例子:

> 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 课程,并且知道他认可偏差的跨模型比较是更准确的方法。

于 2017-12-29T22:49:53.187 回答