使用R进行Cox比例风险模型的多重共线性检验

3

我希望通过计算方差膨胀因子(VIF)来评估Cox比例风险模型中的多重共线性。像{car}等包中的vif函数不接受coxph对象。

是否有一种方法在R中计算cox模型的VIF?


VIF不是为最小二乘回归设计的吗?如果我没记错的话,你不应该在Cox回归中使用它,因为Cox回归是通过最大化似然函数来执行的。 - Vincent
1
谢谢回复!我发现这段引用,它表明VIF可以用于cox模型。“在运行回归后,您可以使用vif命令。因为关注的是自变量之间的关系,所以因变量模型的功能形式对共线性估计无影响。”(Menard 2002年,第76页)。Menard,2002年。应用逻辑回归分析,第2版。” 来源:http://www.stata.com/statalist/archive/2009-09/msg00334.html - Erik
1个回答

4

您在上面的评论中非常正确,VIF仅取决于X值。'package:car'中的vif函数将接受任何响应于vcovcoefmodel.matrix的模型,在'package:survival'中应该使用coxph,因此假设您有一个适合对象,这应该给您结果:

library(survival)
library(rms)  # one possible source for a `vif`-function .... there are many
cvif <- vif(  testfit1  ) #assumes testfit from :  lrm, ols, psm, cph, Rq, Glm, glm

由于您没有提供有效的示例,因此尚未进行测试。

这是在复制另一个问题中的示例并修改以构建'coxph'对象后进行的测试用例构建:

treatment <- factor(rep(c(1, 2), c(43, 41)), levels = c(1, 2), labels = c("placebo", "treated"))
improved <- factor(rep(c(1, 2, 3, 1, 2, 3), c(29, 7, 7, 13, 7, 21)), levels = c(1, 2, 3), labels = c("none", "some", "marked"))
numberofdrugs <- rpois(84, 5)+1
healthvalue <- rpois(84,5)
y <- data.frame(healthvalue,numberofdrugs, treatment, improved)

testfit1 <- coxph(Surv(healthvalue, rep(1,nrow(y) ) ) ~numberofdrugs+treatment+improved, data= y)

我无法运行上面的示例。如果删除vcov函数,它可以工作:即使用"cvif <- vif(testfit1)",但我不确定结果是否有效? - Erik
同意。怀疑rms软件包发生了变化。已编辑以更新为当前行为。 - IRTFM
在“HH”和“car”包中也有vif函数。然而,VIF::vif不会计算方差膨胀因子。 - IRTFM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接