r - 估计 SEM 模型 (lavaan) 的方差膨胀因子 (VIF)
问题描述
我正在尝试从结构方程模型 (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?
解决方案
编辑(在与 OP 聊天并查看他的数据后):
OP 想要估计使用sem()
package 函数生成的模型的 VIF lavaan
。
我提出的解决方案是创建一个二元虚拟变量,将其与模型中的自变量进行回归,然后用于vif()
估计方差通胀因子。例子:
## Create random binary variable
Log_And_SurveyResult$randomvar <- rbinom(nrow(Log_And_SurveyResult), 1, 0.5)
## Model and VIF
Model <- lm(randomvar ~ CT1 + CT2 + CT3, data=Log_And_SurveyResult)
vif(Model)
推荐阅读
- python-3.x - 编写程序以删除重复元素时列表索引超出范围
- sql - 具有非自动生成 ID 的 JPA 批量插入
- node.js - 如何使用 PM2 仅将一个特定的 nodeJS 应用程序部署到一个特定的环境?
- wpf - 为什么我的位图图像显示在设计器中,但不显示在 .EXE 中
- azure - Azure 网站上的 .NET CORE 3.1:500.37 ANCM 无法在启动时间限制内启动
- gitkraken - Gitkraken Pro,Github 学生包
- tensorflow - 使用生成器时,model.evaluate() 随步数的变化而变化很大
- php - CakePHP 2.X - 关于 HasMany 关系的几个问题
- python - 将 Python XML ElementTree 输出写入 CSV
- netlogo - 计算 NetLogo 中的相异指数