【问题标题】:Testing multicollinearity in cox proportional hazards using R使用 R 测试 cox 比例风险中的多重共线性
【发布时间】:2014-06-24 10:43:10
【问题描述】:

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

有没有办法在 R 中计算 cox 模型的 VIF?

【问题讨论】:

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

标签: r cox-regression


【解决方案1】:

您在上面的评论中非常正确,即 VIF 仅取决于 X 值。 'package:car' 中的vif-function 将接受响应vcovcoefmodel.matrix 的任何模型,这应该与'package:survival' 中的coxph 一起发生,所以假设你有一个fit-object,这应该会给你结果:

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
  • 同意。怀疑rms包有变化。已编辑以更新为当前行为。
猜你喜欢
  • 2016-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多