Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每次尝试在R中运行vif()时,我似乎都会遇到相同的错误_R_Linear Regression - Fatal编程技术网

每次尝试在R中运行vif()时,我似乎都会遇到相同的错误

每次尝试在R中运行vif()时,我似乎都会遇到相同的错误,r,linear-regression,R,Linear Regression,我正在测试数据集中的多重共线性。我能够很好地运行VIF(),以测试是否存在多重共线性。然而,当我运行vif()来测试每个变量,看是否有一个变量值得删除时,每次我都会得到相同的错误,即使我的一个同学有几乎完全相同的代码和他的作品 据我所知,在VIF()中,您希望运行一个模型,比如数据的lm(),所以我这样做了,而且效果很好。但是vif()。为了看看会发生什么,我还尝试通过vif()运行数据的lm(),但这肯定不起作用 d <- read.table('9.10data.txt', c

我正在测试数据集中的多重共线性。我能够很好地运行
VIF()
,以测试是否存在多重共线性。然而,当我运行
vif()
来测试每个变量,看是否有一个变量值得删除时,每次我都会得到相同的错误,即使我的一个同学有几乎完全相同的代码和他的作品

据我所知,在
VIF()
中,您希望运行一个模型,比如数据的
lm()
,所以我这样做了,而且效果很好。但是
vif()。为了看看会发生什么,我还尝试通过
vif()
运行数据的
lm()
,但这肯定不起作用

    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)

dusdm
软件包中的
vif
功能包含
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
library(usdm)#用于vif函数
用于VIF功能的库(“fmsb”)#

d我使用的包装是“fmsb”用于VIF,而“usdm”用于VIF。我可以在reg上运行VIF,但是当我尝试VIF(reg)时,我收到一个错误:找不到签名“lm”的函数“VIF”的继承方法。我将尝试包car,但是,正如我所说,我的同学可以使用几乎完全相同的代码运行它,他使用数据集作为VIF()的参数,所以一定有什么我遗漏了。另外,当我运行VIF(reg)时,我得到一个单一值26.9,这告诉我存在多重共线性,这是我认为我应该得到的。所以我尝试安装了你提到的两个包,现在VIF()函数基本上完成了VIF()函数的功能,而不是为整个回归方程提供一个单一值。我的教授给了我们我上面提到的要使用的软件包,所以我需要从“usdm”软件包中正确运行vif(),该软件包应该包含一个数据帧。您可以在这里看到答案。@DustyJ现在可以看到我的编辑了。它工作得很好。