我正在测试数据集中的多重共线性。我可以正常运行VIF()
来测试是否存在多重共线性。但是,当我运行vif()
来测试每个变量是否值得删除时,即使我的同班同学几乎拥有完全相同的代码和他的作品,每次我仍然会遇到相同的错误。 / p>
根据我的理解,您想在VIF()
中运行一个模型,例如数据的lm()
,所以我做到了,而且行得通。但是vif()
我相信您应该只能够插入数据帧,因此在通过vif()
之前,我曾尝试将我的数据设为data.frame,但这似乎行不通。为了看看会发生什么,我还尝试通过lm()
运行vif()
的数据,但这绝对是行不通的。
d <- read.table('9.10data.txt', col.names = c('y',
'x1','x2','x3','x4'))
reg <- lm(data = d, y~x1+x2+x3+x4)
VIF(reg)
# VIF = 26.94823 > 10 so multicollinearity is present.
d <- data.frame(d)
vif(d)
我希望得到一种矩阵,该矩阵显示每个变量x1,x2,x3,x4的vif
值,但我不断收到错误消息:
y [,i]中的错误:维数错误
如果数据有帮助,请转到http://users.stat.ufl.edu/~rrandles/sta4210/Rclassnotes/data/textdatasets/KutnerData/Chapter%20%209%20Data%20Sets/CH09PR10.txt 然后我将数据复制并粘贴到文本编辑器中,并保存为txt文件。
答案 0 :(得分:0)
vif
程序包中的usdm
函数中包含y
。因此,如果在数据集中使用y
作为变量,则会遇到错误。因此,重命名y
可以消除类似
library(usdm) # For vif function
library("fmsb") # For VIF function
d <- read.table('try.txt', col.names = c('z', 'x1','x2','x3','x4'))
reg <- lm(data = d, z~x1+x2+x3+x4)
VIF(reg)
# VIF = 26.94823 > 10 so multicollinearity is present.
d <- data.frame(d)
vif(d)
# Variables VIF
# 1 z 26.948231
# 2 x1 3.711784
# 3 x2 1.419321
# 4 x3 12.570942
# 5 x4 5.034769
中提供了如此详细的信息