R语言:结构方程模型实现
结构方程模型(Structural Equation Modeling,SEM)是一种建立、估计和检验因果关系模型的方法,其核心在于分析变量间协方差。构建一个SEM模型首先根据数据集的实际含义模拟关联路径,进而拟合SEM模型并进行检验。如果模型效果不佳,再回到第一步重新调整路径直到模型通过检测。
SEM相关概念
结构方程模型中的变量可分类成内生变量和外生变量两类。外生变量不受模型中其他因素影响(即没有指向其的单向箭头),而内生因素受到其他因素的影响(有指向其的单向箭头)。如下图中的变量coa、gen和age为外生变量,其余均为内生变量,圆圈中的为残差。
SEM可分成观测模型和路径模型两部分。如下图中探究心梗患者创伤后成长(Posttraumatic Growth)的模型,观测模型以蓝色蓝色框线内为例,pro(subjective evaluation of prognosis)、th(threat to future health)、time(time since diagnosis)为实际测量的项目,共同构成潜在变量(Event Related Factors)。而路径模型则涉及到各潜在因子的相关关系,如红色框线中的五个潜在变量之间的关联,可以通过回归方程描述。
SEM构建示例
SEM构建可以分成回归方程(路径模型,‘~’连接)、潜变量定义(观测模型,‘=~’连接)、方差和协方差(经验性判断变量残差是否关联,‘~~’连接)及截距项四个部分。
以《Associations of dietary patterns with brain health from behavioral, neuroimaging, biochemical and genetic analyses》的模型为例,探究饮食偏好、精神健康、大脑结构间的潜在关联。
以c中的模型为例,第一部分measurement model分成:精神健康(mentalL)可由MHQ量表中的焦虑、抑郁、自我伤害、创伤和幸福感构建,认知功能则由cogitionL式中的三项测量指标构建,大脑结构由MRI中显著差异的脑区构建。
第二部分structural model 则描述了图c中精神健康、认知功能和大脑结构的关系,等式左侧为被箭头指向的变量,右边为发出箭头的变量。构建完成后将模型放入sem函数进行拟合。
代码演示及结果解读
代码参考来源:R语言保姆级教程/结构方程模型SEM/全B站最牛逼,没有之一_哔哩哔哩_bilibili
SEM模型使用R包‘lavaan’建立,‘semPlot’用于绘图。使用lavaan中描述中学生智力的内置数据集(HolzingerSwineford1939)。智力水平可由visual、textual(或verbal)、speed评估。
数据集展示如下,x1-9对应具体智力测量项目。视觉因子(visual)对应x1,x2,x3;文本因子(textual)对应x4,x5,x6;速度因子(speed)对应x7,x8,x9。
构建如下图所示的模型(仅观测模型)
代码如下
#载入包和data install.packages("lavaan", dependencies = TRUE) # 安装lavaan包 install.packages("semPlot") library(lavaan) # 载入lavaan包 library(semPlot) data(HolzingerSwineford1939) ##仅观测模型 HS.model