1.引言
很久之前写过一篇关于元分析的高阶篇:元分析结构方程模型,里面介绍了如何用R metaSEM软件包做结构方程模型,包括中介分析,路径分析,验证性因子分析等。结构方程模型在管理学中领域具有非常广泛的应用,结合元分析研究者们可以更为有效的进行理论比较。具体而言通过比较不同的中介效应,可以提供对于理论解释力的验证。比如领导影响员工创新行为可以通过社会认知,员工动机,员工情感,员工与领导的关系,员工的认同。
(Hughes et al.,2018) Hughes, D. J., Lee, A., Tian, A. W., Newman,A., & Legood, A. (2018). Leadership, creativity, and innovation: A criticalreview and practical recommendations. The LeadershipQuarterly, 29(5), 549–569. https://doi.org/10.1016/j.leaqua.2018.03.001那么到底哪种理论具有更好的解释力呢?单个实证研究很难提供答案,这时候元分析结构方程模型就可以派上用场了……
然而,其方法往往实现起来比较困难……
去年介绍的那篇metaSEM R 代码就几百行,对于很多研究者而言,实在具有很大挑战。那篇推文也主要是基于Suzanne Jak 的这本书,全书一百多页,提供了比较通俗易懂的介绍,并且SEM 数据分析教程也相当简单。
简单看下代码:
## make list of cormatrices (cordat), NA on diagonal[LP(1] ##the number ofobserved variables is stored in the object nvar, which meadns how many observed variablesnvar 4varnames "pos",labels cordat for (i in 1:nrow(data)){ cordat[[i]] 3 dimnames(cordat[[i]]) }#dimnames gived nsmrd to thr rows and columns of each correlation matrix#[i,3:8]) means of row i, column 3 to 8 of the data#this step create a 4 by 4 correlation matrix for each study, but there are missing values we put NA# put NA on diagonal if variable is missingfor (i in 1:length(cordat)){
for (j in 1:nrow(cordat[[i]])){ if (sum(is.na(cordat[[i]][j,]))==nvar-1) {cordat[[i]][j,j] }}#READ for each correlation matrix, for each row,#if the sum of the elements that are NA in that row equals the number of variables minus 1,#the diagonal element should be NA.# put NA on diagonal for variable with least present correlationsfor (i in 1:length(cordat)){
for (j in 1:nrow(cordat[[i]])){
for (k in 1:nvar){ if (is.na(cordat[[i]][j,k])==TRUE &is.na(cordat[[i]][j,j])!=TRUE &is.na(c