如何解释rms下的非线性项的P值:anova?

问题描述 投票:0回答: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
survival-analysis cox-regression cubic-spline
1个回答
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课程,并且知道他支持将偏差的交叉模型比较作为更准确的方法。

© www.soinside.com 2019 - 2024. All rights reserved.