结构方程模型SEM、路径分析房价和犯罪率数据、预测智力影响因素可视化2案例(上):https://developer.aliyun.com/article/1493911
5 带有潜在变量的 SEM
当我们对测试有潜变量的模型感兴趣时,怎么办?通常,这将是一个 "反映性潜变量 "模型,我们认为一个假定的潜变量是由几个(通常是3个以上)显性指标来衡量的。这样的变量通常被称为 "因子 "或 "潜在特质"。在SEM世界中,确认性因子分析是最常见的反映性潜变量模型。
这样的模型中使用=~操作符('测量的')来指定。
让我们以 衡量智力数据(查看文末了解数据获取方式)为例,其中有 9 个项目可以衡量智力的不同方面:视觉、文本和速度。观察到的变量是 x1-x9
。
这是一个“经典”数据集,用于许多关于结构方程建模 (SEM) 的论文和书籍,包括一些商业 SEM 软件包的手册。数据包括来自两所不同学校的七年级和八年级儿童的心理能力测试成绩。在我们的数据集版本中,仅包含原始 26 个测试中的 9 个。通常针对这 9 个变量提出的 CFA 模型由三个潜在变量(或因子)组成,每个潜在变量具有三个指标:
- 由 3 个变量测量的 视觉 因子
x1
:x2
和x3
- 由 3 个变量测量的 文本 因子
x4
:x5
和x6
- 由 3 个变量测量的 速度 因子
x7
:x8
和x9
一个 3 因素 CFA 示例
5.1 指定因子模型
指定此模型的相应 语法如下:
visual =~ x1 + x2 + x3 textual =~ x4 + x5 + x6 speed =~ x7 + x8 + x9
在此示例中,模型语法仅包含三个“潜在变量定义”。
5.2 典型 CFA 输出
默认情况下,第一个指标具有 1 的固定负载以缩放基础因子(“单位负载标识”)。让我们来看看:
summary
5.3 CFA 的修正指数
modification
修正指数表明 x9
可能会加载 visual
因子,或者 x7
可能 x9
具有唯一的残差相关性。这又是一个理论上的问题,但我们可以测试修改后的模型以进行演示。我们使用 ~~
运算符来指定模型中的(残差)方差或协方差项。
summary(fit2, fit.meas)
仍然不是很好。我们可以重新检查修改指数
modificatio
现在是时候咨询你关于潜在结构应该是什么的预测或理论了。这是一个模型构建和模型比较问题,很大程度上超出了本教程的范围。然而,我们至少可以测试这些模型之间的全局拟合差异。这些是嵌套模型(因为 x7 ~~ x9
在更简单的模型中残差协方差为 0),这允许我们使用似然比检验(也称为模型卡方差):
anova
该 anova
函数将使用 LRT 方法测试整体拟合差异。LRT 的自由度是自由参数数量的差异(此处为 1)。
5.4 详细看模型
我们可以查看自由参数在矩阵规范中的位置。自由参数被编号(按顺序),零表示可能的参数,固定为零(即不估计)。
inspect
我们还可以看到矩阵形式的参数估计:
inspect( "est")
5.5 结构模型呢?
上面的 CFA 只包含一个测量模型——一个具有因子之间相关性的三因子模型。如果我们还想看看学校的年级在多大程度上可以预测智力因素(视觉、文本、速度)的水平,该怎么办?
summary( fit.measures=TRUE)
semPath
正如人们所预料的那样,高年级的孩子在潜在智力因素上得分更高。
最后,如果我们想在结构模型中使用一般与特定(残差)方差怎么办?为了让它们在相同的参数矩阵中适当地发挥作用,我们为感兴趣的项目残差创建了一个单指标潜在变量。
x1d =~ 1*x1 #定义干扰因子,将1.0加载到指标上(如RAM的符号)。 x1 ~~ 0*x1 #指标的零残差(所有加载到干扰因素上)。 #根据标准模型,干扰因素与因子不相关 x1d ~~ 0*视觉 x1d ~~ 0*文本 x1d ~~ 0*速度 #我们现在可以看看X1的具体方差和视觉因素是否能唯一地预测人的年龄 summary(fitne)
这里没有骰子,但你明白了。
6 分类数据
支持使用阈值结构来正式处理内生的分类数据。这源于这样的观点:一个项目的基本分布是连续的(高斯),但我们的离散化(如二元或多态)在特定的点上降低了这个维度。
我们有4个级别的变量(1、2、3、4),但只有三个阈值--每个阈值指定两个相邻级别(锚)之间的边界。如果我们有动力来说明这个结构,这些阈值可以被指定为模型中的自由参数。这实质上是在估计ττ参数沿着连续体的落点;它们不需要均匀分布
如果我们对一个项目有5个以上的锚,我们也许可以把它当作连续的,而不会出现重大的错误。请注意,这就是我们在最初的CFA中所做的事情--我们将x1-x9视为正态/连续分布。事实证明,它们是(即不是高度离散的)。
hist(Holz$x1)
但是,如果我们有具有 2、3 或 4 个值的数据,将变量视为连续变量通常是不合适的,并且可能导致有偏差、不准确的结果。
通常,具有阈值结构的模型是使用“加权最小二乘”(WLS)估计器而不是最大似然(ML;SEM 中的典型估计器)估计的。均值和协方差调整的 WLS(又名“WLSMV”)通常是可行的方法,因为它可以比典型的 WLS 更好地处理多元分布的非正态性。
6.1 CFA分类数据演示
这是一个快速演示——如果我们的每个智力测试项目只有三分法怎么办?
hist
我们用有序参数告诉R哪些项目是有序分类的。
summary(fiat)
请注意,我们现在对每个项目都有阈值估计,其中较高的数值表示对一个类别和下一个类别之间的边界有较高的估计,而这个潜在的连续体据说是该项目的基础。
7 估计
最后, 可以用许多不同的算法来估计模型中的参数。“ML”是连续数据的默认值,“WLS”是(部分)分类数据的默认值。
这些估计器的'稳健'通常会在整个模型的卡方检验和标准误差的层面上对非正态性(以及潜在的其他东西,如聚类)进行稳健处理,因此,显著性检验。让你的统计数据对非正态性具有鲁棒性通常是一件好事......因此,许多人将使用 "MLR "作为他们对连续数据的首选,而 "WLSMV "则用于分类数据。
可以使用 estimator
参数指定它。
summary(filr, fit.measures=TRUE)
我们现在有一列“稳健”的全局拟合指数,并注意标准误差是使用 Huber-White 估计器估计的(对非正态性和聚类稳健)。
8 缺失数据
默认情况下, 通常会删除缺少任何变量的样本。但是您可能会丢失大量数据,并且因为它可能会给数据带来偏差。虽然远远超出了本教程,但通常最好在数据随机缺失的假设下使用所谓的全信息最大似然 (FIML),即给定变量的缺失可能与其他变量相关,但是而不是变量本身。使用 FIML,估计尝试根据具有可用数据的案例来估计所有参数。
以下是默认情况下发生的情况:
注意输出:
结果不理想。
好的,下面是FIML
summary(fiiml, fit.measures=TRUE)
结果更理想:
同样,关于缺失数据的理论和正式方法超出了本教程的范围,但我希望这能让大家了解到如何在sem中处理缺失问题。