【发布时间】:2021-01-11 00:08:22
【问题描述】:
我正在尝试从结构方程模型 (SEM) 中找到方差膨胀因子 (VIF)。我的模型是:
# load the data
library(readxl)
Log_And_SurveyResult <- read_excel("C:/Users/Aakash/Desktop/analysis/Today/Mot-Log.xlsx")
# load lavaan
library(lavaan)
#scale the variables
Log_And_SurveyResult$Time <-
scale(Log_And_SurveyResult$TotalActivity)
model <-
Ct =~ CT1 + CT2 + CT3
R =~ R1 + R2 + R3
B =~ B1 + B2 + B3
UserActivity =~ Time + TotalActivity
fit <- sem(model,data = Log_And_SurveyResult, std.lv = TRUE)
summary(fit, standardized=T)
这是我的数据示例:
Time,TotalActivity,CT1,CT2,CT3,R1,R2,R3,B1,B2,B3
-0.4923798,-0.09991485,4,4,4,3,3,3,3,3,2
-1.0519708,-1.12771752,3,2,2,2,2,3,4,2,3
-0.5330384,-0.06320762,4,4,5,5,4,4,4,4,4
-1.0134522,-0.67805386,5,4,4,5,5,4,4,5,5
-1.1568273,-1.18277838,4,3,4,3,2,3,3,4,4
-0.8561675,-0.12744528,3,4,4,4,4,3,3,3,3
当我运行vif(fit) 时,出现错误:
Error: $ operator not defined for this S4 class
我正在遵循以下示例:http://minato.sip21c.org/msb/man/VIF.html
关于 VIF 的大部分示例和教程都是使用多元回归模型生成的。但是我怎样才能获得我的 SEM 模型的 VIF?
【问题讨论】:
-
您在数据框上运行
vif()。您应该在回归模型对象上使用它。首先使用model <- lm(x ~ y, data=df)运行回归,然后使用vif(model)。 -
我尝试按照您的建议进行建模,但这里可能是 x 和 y?因为我拥有的所有数据变量都是因变量。
-
vif()用于衡量模型的方差膨胀因子。您无法单独获得因变量的 VIF。我将发布一个示例作为答案,看看是否有帮助。 -
你能帮我写代码吗,如何创建模型?