如何在 R 中进行简单的验证性工厂分析/SEM?

机器算法验证 r 结构方程建模 软件 确认因素
2022-04-11 04:23:15

a1我有一个数据集,包含 24 个变量( 、a2a3a4b1、 ...、b4、 ...、f4的 166 个观察值。从 1 到 6 的 6 分制回答:

d <- read.table("http://pastebin.com/raw.php?i=m1ZJuKLH")
str(d)
## 'data.frame':   166 obs. of  24 variables:
##  $ a1: int  7 7 7 1 1 7 7 7 7 1 ...
##  $ a2: int  7 7 4 7 5 5 1 7 7 4 ...
##  $ a3: int  7 7 5 1 1 7 7 3 7 1 ...
##  $ a4: int  7 7 6 7 1 7 1 7 7 1 ...
##  $ b1: int  1 2 5 7 1 4 1 7 4 2 ...
## [...]
##  $ f4: int  6 6 4 1 7 7 7 7 7 1 ...

具有共同字母的变量(即所有as、所有bs、...、所有fs)属于同一类型。

我想测试变量类型背后的潜在因素是否相互关联(或者是否可以将相关性设置为0)。另一个复杂因素是潜在变量共享另一个潜在变量(称为),我只想测试 和 之间c相关fc.to.fabc.to.f

我想在 R 测试中运行验证性因子分析(本质上是结构方程模型)。至少有两个成熟的包这样做semopenMX.
我对哪个包最好或最容易指定这种模型的意见/代码感兴趣。


编辑:我想接受一个包含代码示例的答案。

1个回答

在 R 中使用 OpenMx、sem 或 lavaan 很容易完成 CFA。由于 CFA 是 SEM 的典型案例,所以这三个都非常容易实现,并在各自的文档中提供有用的演练。我个人使用 OpenMx 或 lavaan。如果您使用 OpenMx,请记住一件事,默认情况下它不会为您提供拟合统计信息,您必须首先指定饱和模型(或使用 semTools 包为您执行此操作)。

因为 OpenMx 尚未针对 R 版本 3 进行更新(除非您从源代码编译),所以这里有一个来自lavaan walkthrough的示例。它是一个具有 3 个潜在变量和三个指标的 CFA,所有三个潜在变量之间都有协方差。可以在上面的链接中找到有关所用数据集的更多信息。

# load the lavaan package
require(lavaan)

# specify the model
HS.model <- " visual  =~ x1 + x2 + x3      
              textual =~ x4 + x5 + x6
              speed   =~ x7 + x8 + x9 "

# fit a full CFA model
fit <- cfa(HS.model, data = HolzingerSwineford1939)

# fit an orthogonal CFA model
fitOrth <- cfa(HS.model, data = HolzingerSwineford1939, orthogonal = TRUE)

# Likelihood ratio test between full and orthogonal model
anova(fit, fitOrth)

# display summary output for full model
summary(fit, fit.measures=TRUE)

在这里,我们看到正交模型(所有三个协方差都设置为零)拟合得比完整的 CFA 差得多。这段代码要记住两件事:

1) 在本规范中,x1、x4、x7 的载荷默认固定为 1,以设置 CFA 的比例。这可以通过移动变量来改变。

2)同样默认情况下,残差是自动添加的。这可以通过在模型语法中添加残差回归权重来改变。