读书的时候看到Structrural Equation Modeling结构方程 这个东西,觉得很有意思,但好像最后也没有用到,后来就没接触了。近期想做一些宏观方面的研究,上周听业内的一位大佬讲怎么做分析,忽然想起了之前自己看过的关于系统中的反馈回路和结构方程,于是重新来学习一下结构方程。幸运的是,SEM这个现在有python包了。希望能够最终用到吧。
模型
一、基本内容
SEM 广泛应用与经济学、社会学、心理学和生物信息学领域。
很多心理、教育、社会等概念,均难以直接准确测量,这种称为潜(latent variable),如智力、学习动机、家庭社会经济地位等等。因此只能用一些外显指标(observable indicators),去间接测量这些潜。传统的统计方法不能有效处理这些潜,而结构方程模型则能同时处理潜及其指标。
变量
传统的线性回归分析容许因变量存在测量误差,但是要假设自变量是没有误差的。
结构方程模型常用于验证性分析、高阶分析、路径及因果分析、多时段设计、单形模型及多组比较等 。
因子
结构方程模型常用的分析软件有LISREL、Amos、EQS、MPlus、SEMOPY(Python package,推荐)。
结构方程模型可分为测量模型(measurement part)、结构模型(structural part)。
Relations typically consist of left-sided variables (lvalues) and right-sided values (rvalues) separated by an operator character that constitutes the nature of relationship between lvalues and rvalues. In semopy, lvalues are separated by a comma “,” sign and rvalues are separated by a plus “+” sign.
特点
同时处理多个因变量:结构方程分析可同时考虑并处理多个因变量。在回归分析或路径分析中,即使统计结果的图表中展示多个因变量,在计算回归系数或路径系数时,仍是对每个因变量逐一计算。所以图表看似对多个因变量同时考虑,但在计算对某一个因变量的影响或关系时,都忽略了其他因变量的存在及其影响。
容许自变量和因变量含测量误差:态度、行为等变量,往往含有误差
sem结构方程模型
,也不能简单地用单一指标测量。结构方程分析容许自变量和因变量均含测量误差。变量也可用多个指标测量。用传统方法计算的潜变量间相关系数与用结构方程分析计算的潜变量间相关系数,可能相差很大。
同时估计因子结构和因子关系:假设要了解潜变量之间的相关程度,每个潜变量者用多个指标或题目测量,一个常用的做法是对每个潜变量先用因子分析计算潜变量(即因子)与题目的关系(即因子负荷),进而得到因子得分,作为潜变量的观测值,然后再计算因子得分,作为潜变量之间的相关系数。这是两个独立的步骤。在结构方程中,这两步同时进行,即因子与题目之间的关系和因子与因子之间的关系同时考虑。
容许更大弹性的测量模型:传统上,只容许每一题目(指标)从属于单一因子,但结构方程分析容许更加复杂的模型。例如,我们用英语书写的数学试题,去测量学生的数学能力,则测验得分(指标)既从属于数学因子,也从属于英语因子(因为得分也反映英语能力)。传统因子分析难以处理一个指标从属多个因子或者考虑高阶因子等有比较复杂的从属关系的模型。
估计整个模型的拟合程度:在传统路径分析中,只能估计每一路径(变量间关系)的强弱。在结构方程分析中,除了上述参数的估计外,还可以计算不同模型对同一个样本数据的整体拟合程度,从而判断哪一个模型更接近数据所呈现的关系。
比较
简单而言,与传统的回归分析不同,结构方程分析能同时处理多个因变量,并可比较及评价不同的理论模型。与传统的探索性因子分析不同,在结构方程模型中,可以通过提出一个特定的因子结构,并检验它是否吻合数据。通过结构方程多组分析,我们可以了解不同组别内各变量的关系是否保持不变,各因子的均值是否有显著差异。
结构方程模型的优点:
融合了因子分析(Factor Analysis)、方差分析(如ANOVA, ANCOVA, MANOVA, MANCOVA)、多重回归(multiple regression)等:
可以分析有多个因变量的模型(multiple dependent variables)
可以分析复杂的中介模型(complex mediating mechanisms)
可以估算潜在变量以解释测量误差(estimate latent variables)
可以估算二分变量(binary) /序级变量(ordinal)的潜在因子
可以测试跨组的模型不变性(test invariance of models across groups)
可以建模重复测量的数据的发展轨迹(growth trajectories of repeated measures)
数据样本大小
从理论上讲:样本容量越大越好。Boomsma(1982)建议,样本容量最少大于100,最好大于200以上。对于不同的模型,要求有所不一样。一般要求如下:
其中:
N为样本容量,t为自由估计参数的数目,p为指标数目。
指标数目
一般要求因子的指标数目至少为3个。在探索性研究或者设计问卷的初期,因子指标的数目可以适当多一些,预试结果可以根据需要删除不好的指标。当少于3个或者只有1个(因子本身是显变量的时候,如收入)的时候,有专门的处理办法。
数据类型
绝大部分结构方程模型是基于定距、定比、定序数据计算的。但是软件(如Mplus)可以处理定类数据。
数据要求要有足够的变异量,相关系数才能显而易见。如样本中的数学成绩非常接近(如都是95分左右),则数学成绩差异大部分是测量误差引起的,则数学成绩与其它变量之间的相关就不显著。
数据正态性
LISREL中包含的估计方法主要有:
应用
通过结构方程模型建模分析数据是一个动态的不断修改的过程。在建模的过程中,研究人员要通过每次建模计算得到的结果去分析这个模型的合理性,然后要依据经验及前一模型的拟合结果去不断调整模型的结构,最终得到一个最合理的、与事实相符的模型。
在验证模型(SC)的应用中,从应用者的角度来看,对他所分析的数据只有一个模型是最合理和最符合所调查数据的。应用结构方程建模去分析数据的目的,就是去验证模型是否拟合样本数据,从而决定是接受还是拒绝这个模型。这一类的分析并不太多,因为无论是接受还是拒绝这个模型,从应用者的角度来说,还是希望有更好的选择。
在选择模型(AM)分析中,结构方程模型应用者提出几个不同的可能模型(也称为替代模型或竞争模型),然后根据各个模型对样本数据拟合的优劣情况来决定哪个模型是最可取的。这种类型的分析虽然较验证模型多,但从应用的情况来看,即使模型应用者得到了一个最可取的模型,但仍然是要对模型做出不少修改的,这样就成为了产生模型类的分析。
在产生模型分析(即 MG 类模型)中,模型应用者先提出一个或多个基本模型,然后检查这些模型是否拟合样本数据,基于理论或样本数据,分析找出模型拟合不好的部分,据此修改模型,并通过同一的样本数据或同类的其他样本数据,去检查修正模型的拟合程度。这样一个整个的分析过程的目的就是要产生一个最佳的模型。
因此
sem结构方程模型
,结构方程除可用作验证模型和比较不同的模型外,也可以用作评估模型及修正模型。一些结构方程模型的应用人员都是先从一个预设的模型开始,然后将此模型与所掌握的样本数据相互印证。如果发现预设的模型与样本数据拟合的并不是很好,那么就将预设的模型进行修改,然后再检验,不断重复这么一个过程,直至最终获得一个模型应用人员认为与数据拟合度达到他的满意度,而同时各个参数估计值也有合理解释的模型。
二、SEMOPY
, 是结构方程模型使用python的实现。
模型的语法:
~:明确结构部分
=~:明确测量部分
~~:明确变量之间的协方差
例如,在SEM的结构部分,有如下线性等式
η3=β1*x1+β2*x2+ε,
其中η3是因变量(variant),x1,x2是回归因子(regressors),β1,β2是参数(parameter),ε是误差(error term)。在SEMOPY的代码中,上式被重写为
eta3~x1+x2
在SEM的测量部分,隐变量(latent vriables)η1由3个指标(y1,y2,y3)定义,
eta1=~y1+y2+y3
在变量的协方差部分:
x1~~x2
eta~~x3
方框:回归因子,自变量
圆形:隐变量
y:指标,测量部分
回归因子(regressors): x1,x2
内生观察变量(endogenous observed variables): x3,x4,x5
外生隐变量(exogenous latent variable):η1,η2
内生隐变量(endogenous latent variable): η3,η4
外显变量/显性变量(manifest variables),观察变量(measured variables),指标变量(indicator variables):y1,y2,y3,y4,y5
上图在semopy语法中描述为:
# Structural part
eta3 ~x1 + x2
eta4 ~ x3
x3~eta1 + eta2 + x1 + x4
x4~eta4
x5~x4
# Measurement part
eta1 =~ y1 + y2 + y3
eta2 =~ y3
eta3 =~y4 + y5
eta4 =~y4 + y6
# Additional covariances
eta2 ~~x2
y5~~y6
参考资料:
Georgy Meshcheryakov, Anna A. Igolkina, semopy: A Python package for Structural Equation Modeling, September 10, 2019
Rex B. Kline, Principles and Practice of Structural Equation Modeling,4th Edition,2016
结构方程模型/1350810
吴兵福. 结构方程模型初步研究[D].天津大学,2006.
程开明. 结构方程模型的特点及应用[J]. 统计与决策,2006(10):22-25.
辛士波,陈妍,张宸. 结构方程模型理论的应用研究成果综述[J]. 工业技术经济,2014,33(05):61-71.