为什么手动计算的 VIF 不同?

问题描述

让我们考虑数据

set.seed(42)
y <- sample(0:1,100,T)
df1 <- data.frame('Binary' = rnorm(100)>0.5 * 1,'Unif' = runif(100),'Exp' = rexp(100))

我想以两种方式拟合 logit 回归并计算“二进制”变量的 VIF - 通过 car::vif 和手动。

让我们拟合一个模型:

model <- glm(y~.,data = df1,family = binomial())

通过vif函数

> car::vif(model)
   variable     gvif
1:   Binary 1.020622
2:     Unif 1.017845
3:      Exp 1.005069

手动

> 1/(1-summary(lm(df1$Binary~df1$Unif + df1$Exp))$r.squared)
[1] 1.021415

我的问题是 - 为什么不同?是我计算错误还是这只是估计错误

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)