来源:公众号:红皇后学术

参考资料:https://jslefche.github.io/sem_book/

一、基本流程

其实单独的做一个SEM的分析并不难,有很多的R包都可以实现,这个SEM的困难之处在于它不像其它的分析,输入数据之后得到一个结果就完事了。

SEM需要分析人员首先自行建立一个因子之间的关系模型,之后使用SEM对该模型进行分析,根据结果评估模型的效果,之后不断的对模型进行调整,随后重复“调整-评估”这一循环,直至结果满意为止。

了解了这个基本的过程之后,我就觉得我写的这篇推文应该是解决不了SEM分析的痛点了。

首先第一个痛点就是起始模型的建立,这个东西就是非常个性化的东西了,可以说没什么标准,只能由每个分析人员根据研究的实际情况自行摸索。

当然也有一些前期的基本工作,比如通过一些相关性分析、VIF、CCA/RDA等筛选一下用于建模的因子,去除不必要的因子,使得起始模型的建立更简单一些,也可以通过相关性结合研究实际初步评估一下直接作用和间接作用。

第二个痛点就是对模型的调整,每个因子应该放在什么位置,因子之间的关联应该怎么改变,这个东西是真的不知道怎么讲,感觉只能是多尝试。

这两个痛点大体上更多的是凭借研究人员的经验,因人而异、因时而异、因项目而异,所以下面的内容我只会介绍一下SEM的基本原理,以及单个SEM模型分析的结果意义。

当然没有经验的人也可以用“穷尽法”,把所有的可能性都试一遍,最后选择结果最好的,最好不要进行这样的尝试。

我个人觉得只有在特定的项目中,或者是在其它分析结果都不好的时候,我才会考虑使用SEM进行分析,不然我可能压根都不会做这个东西,实在是很费时间还不一定能得到满意的结果,特别是对于因子数据很多的研究

在微生物群落研究中,SEM的目的也是探索对微生物群落形成或变化其主要作用的影响因子,用ggcor做个Mantel和环境因子相关性的组合图也挺香的吧~

二、结构方程模型

常规分析两个变量间是否存在关联时,我们会使用相关性分析,但是相关性只能表明两个变量存在相互关系,但无法得出哪个变量是因?哪个变量是果?

此外,相关性分析只是两个变量数量上的相互关系,而在实际情况中,有些变量可能不是直接与其它变量发生相互作用,而是通过第三个变量间接的与靶标变量关联。

结构方程模型(Structural Equation Modeling,SEM)就是一种将两个或多个结构模型联合起来,以实现对多元关系进行建模的统计框架,其可以解决相关性分析中无法得到的因果关系以及区别直接和间接作用

三、结构方程模型的原理

SEM是数据分析的一种特殊形式,从一个指定了多变量间(假定的)相互关系的模型开始,变量间的关系被形式化为一组方程,用于测试这些变量并量化它们之间的关系。

SEM的本质是分析两个变量的协方差。

方差很好理解,方差估计一个变量中个体分布偏离其平均值的情况。

协方差就是两个变量协同情况下的偏离情况,两个变量的变化规律越协同一致,则其协方差的数值越大

对于一系列变量,我们可以得到一个方差-协方差矩阵,在矩阵中对角线为变量的方差,其余部分为变量的协方差,这个矩阵称为oberseved方差-协方差矩阵。

之后通过最大拟然法建立的SEM模型对这个矩阵进行估计,得到一个model-estimated方差-协方差矩阵,最后将两个矩阵结合得到最终的global oberseved方差-协方差矩阵。

在此过程中我们要评估model-estimated的矩阵与observed矩阵的匹配情况,就是Goodness-of-fit

四、SEM的路径系数

SEM的核心问题就是得到变量之间的回归系数(通常是线性回归),从而推断变量之间的依赖关系。

因为不同变量的数值不同,因此导致不同变量之间的协方差不在同一个水平上,也就无法比较,所以在比较变量间的协方差之前,需要对变量进行标准化,也就是Z转换,将所有变量均转换为均值为零,方差为1的变量,使得不同变量之间的协方差在同一个数量级,因而能够进行相互间的比较

当对变量进行Z转化之后,线性回归系数就与相关系数相等了

而如果不进行标准化,线性回归系数等于两个变量的协方差与解释变量方差的商,此时就与相关系数不相等了。

是否一定需要进行标准化,以及标准化的使用情况我没研究明白。

路径系数的8条规则:

  1. 如果两个变量之间只有相互关系而没有作用方向(没有箭头),称之为外源性变量,此时可以使用双向箭头来表示两个变量相关;

  2. 如果两个变量之间只被一条路径连接,那么这条路径的系数为回归系数;

  3. 如果两个变量之间是间接联系路径,则整个路径的系数为路径中每一个直接路径系数的乘积;

  4. 当一个变量被多个路径连接时,每一个路径的系数都是偏回归系数;

  5. 有箭头指向的变量称为内源性变量,箭头的R2为解释变量对这些内源性变量变化的解释比例;

  6. 两个内源性变量未分析的相关性就是其偏相关性;

  7. 一个变量对另一个变量的总的影响是其直接和间接影响的和;

  8. 模型的总效应与其总的相关性相等。

五、SEM模型匹配

SEM可以分为协方差SEM和分段SEM,在正常的分析中可以选择其中之一进行,但我目前看到的一些好的文章均是两种模型都做。

本文使用R语言的lavann包和piecewisedSEM包讲解一下SEM模型的分析命令。

1.协方差SEM

协方差SEM假定所有变量均具有正态分布,即数据服从多元正态分布,同时该分析还假定所有的变量均为独立的

使用piecewisedSEM包的keeley数据作为示例数据,假定的初始关系为firesev由age决定,同时firesev还决定cover,使用lavaan包进行协方差SEM模型匹配。

library(devtools)
install_github("jslefche/piecewiseSEM@devel",build_vignette=F)
install.packages("lavaan")
library(lavaan)
library(piecewiseSEM)data(keeley)
keeley_formula <- '
firesev ~ age
cover ~ firesev
'
keeley_sem <- sem(keeley_formula, data = keeley)summary(keeley_sem, standardize = T, rsq = T)

2.分段SEM

分段SEM中,每组关系都是独立估计的,此过程将整体关系分解为与每个响应对应的简单或多回归,分别对每个响应进行评估,最后合并以生成有关全局SEM的推论。

keeley_psem <- psem(lm(firesev ~ age, data = keeley),lm(cover ~ firesev, data = keeley),data = keeley)
keeley_psem
fisherC(keeley_psem)
##   Fisher.C df P.Value
## 1     5.18  2   0.075
AIC(keeley_psem)
## [1] 17.18
BIC(keeley_psem)
## [1] 32.179
summary(keeley_psem, .progressBar = FALSE)

不同于协方差SEM,分段SEM使用Fisher‘s C statistic代替卡方检验,但是同样要求P>0.05

AIC会在给定模型的复杂性与其拟合优度之间进行权衡,可以将AIC值视为对应了模型的准确性,AIC值越小的模型表明越有可能准确地预测新数据,AIC小于2时认为模型效果很好

结构方程模型(SEM)及其R实现相关推荐

  1. R语言结构方程模型SEM、路径分析房价和犯罪率数据、预测智力影响因素可视化2案例

    最近我们被客户要求撰写关于SEM的研究报告,包括一些图形和统计输出. 1 简介 在本文,我们将考虑观察/显示所有变量的模型,以及具有潜在变量的模型.第一种有时称为"路径分析",而后 ...

  2. R语言:结构方程模型sem、潜变量分析

    原文链接:http://tecdat.cn/?p=3071 对于熟悉线性回归拟合结构方程模型的分析师来说,在R环境中,拟合结构方程模型涉及学习新的建模语法,新的绘图语法以及通常是新的数据输入方法(点击 ...

  3. 【视频】结构方程模型SEM分析心理学营销数据路径图可视化|数据分享

    最近我们被客户要求撰写关于结构方程模型的研究报告,包括一些图形和统计输出.结构方程建模 (SEM) 是一个非常广泛和灵活的数据分析框架,也许更好地被认为是一系列相关的方法,而不是单一的技术.它与营销研 ...

  4. python可以构建sem模型_结构方程模型(SEM)可用于微生态研究及R语言实现

    导读 结构方程模型(Structural Equation Modeling,SEM)是一种能基于变量之间的协方差矩阵分析多变量之间结构关系的多元统计分析方法,也被称为协方差结构模型.该方法是因子分析 ...

  5. 结构方程模型(SEM)

    转载自http://blog.163.com/jiangfeng_data/blog/static/206414038201242644241486/ 结构方程这几年热度不减,有必要研究一下它的R语言 ...

  6. SPSS + AMOS 结构方程模型(SEM)

    写在前面 抽空学习了一下结构方程模型,主要运用的软件是SPSS+AMOS,感觉之后能用得上,现将整体思路结构梳理如下,方便日后查阅.问卷采取 Likert 五级量表,1-5依次代表"非常不同 ...

  7. R语言 lavaan包进行结构方程模型SEM

    学习资料/开发者 Github-yrosseel/lavaan 研讨会 备注: 1. Lavaan一次模型只认可一个复合变量,需要自己构建.符合变量???comp的构建需要固定一个1*var+ 2. ...

  8. 结构方程模型(SEM)概述(1)

    SEM概述     SEM是一般线性模型的扩展.它能使研究者同时检验一组回归方程.SEM软件不但能检验传统模型,而且也执行更复杂关系和模型的检验,例如,验证性因子分析和时间序列分析. 进行SEM分析的 ...

  9. 关于结构方程模型SEM评价指标

    模型拟合良好的指标: Chi-square/df < 3 模型的p-value > 0.05 CFI > 0.95 RMSEA < 0.05 SRMR < 0.09 (参 ...

  10. 格兰因果模型可以分析哪些东西_结构方程模型(SEM)和分段结构方程模型

    结构方程模型(SEM)简介自然或社会现象是复杂的,但在研究中经常将其简化为简单的模型,类似y~x这样的形式.当然并不是说这种简单模型有什么问题,只是有些情况下y实际上并非x的直接作用结果,y通常受到许 ...

最新文章

  1. 小脚本,统计一个目录下满足特定条件文件的代码行数
  2. IOS开发中多线程的使用
  3. Spring-在IoC中装配Bean系列文章导读
  4. python导出数据找不到csv_python – 将数据从neo4j导出到csv而不是json
  5. linux 删除文件_Linux删除文件夹命令有哪些
  6. 手机调试_手机充值不好用?因为正在调试期
  7. Python str字符串常用到的函数
  8. 敢开“电动爹”回老家,你说我胆子大不大?
  9. 高级函数技巧-函数柯里化
  10. Linux 命令汇总!【珍藏版】
  11. linux shell 子进程结束,关于linux:如何终止以shell = True启动的python子进程
  12. react typescript 父组件调用子组件
  13. CGLIB 动态代理使用
  14. 联邦学习 OR 迁移学习?联邦迁移学习不香吗
  15. 施密特触发器HSPICE仿真【内附代码】
  16. deepfacelab安卓版_Deepfacelab下载
  17. pandownload网页版服务器维护中,PanDownload网页版源码
  18. Python游戏开发,pygame模块,Python实现记忆翻牌小游戏
  19. 数字调制解调技术的MATLAB与FPGA实现(关盘资料源码)
  20. EXCEL中定义名称

热门文章

  1. 网络广播风暴产生的原因
  2. 魔兽世界9.0主播最多的服务器,魔兽世界9.0新人服务器选什么好?
  3. #96 百度大规模网络流量接入技术 BFE 开源
  4. 花千骨服务器无响应,花千骨出现游戏闪退 解决闪退方案
  5. ClickHouse基于全局字典与物化视图的精确去重方案
  6. 内置 60V 功率 MOS 升压型 LED 恒流驱动器 OC6700
  7. [PPT]用PPT来做2019苹果发布会演示文稿【附源文件下载】
  8. Skywalking光会用可不行,必须的源码分析分析 - Skywalking Agent 插件解析
  9. HIVE常用命令之MSCK REPAIR TABLE
  10. 利用Python实现四则运算