计量经济学stata小小白

Stata #13 结构方程建模学习笔记(2)

2019-05-21  本文已影响22人  847963901d13

520,感恩自然、众生、父母、你、我

1. 结构方程的基本语句

Stata语句可以完成大部分的SEM操作,远比LISREL简单。

(1)括弧、箭头、大写:用()表示一组变量的关系,用->表示变量间关系的方向,用大写字母表示潜变量,用小写字母表示可观测的变量。
如:sem (DEPRESS -> x1 x2 x3)
(2)协方差cov选项:用cov()表示特定可观测变量的残差项的相关性
如:sem (DEPRESS -> x1 x2 x3), cov (e.x1*e.x2 e.x1*e.x3)

2. 单因子验证性因子分析

演示数据来自美国的毒品使用与健康国家调查(National Survey of Drug Use and Health, NSDUH)数据库,代表性样本为725名12岁-17岁的逃学少年(3/5为白色人种,2/5为有色人种)。
下面开始分析数据:
use "L:\TranCFA_red.dta"
set more off

2.1. 变量定义

我们是这样定义男性青少年学习参与(academic involvement)相关的变量条目:

s_felt Felt about going to school
s_work Frequency of school feeling meaningful
s_imp How important things learned will be in future
s_int Courses interesting
s_job Teacher let you know you did a good job

一般来说,我们在验证性因子分析前会先进行信度分析和探索性因子分析
,二者都可以通过Stata轻松实现。

2.2 信度分析

alpha s_felt s_work s_imp s_int s_job, item

信度分析结果 观察结果,发现克隆巴赫系数(Cronbach's alpha)为0.7795,非常容易接受。但s_job的条目测试(item-test)和条目放松(item-rest)相关系数都比较低,这在后续分析中值得注意。

注意:如果想对个别组进行内部一致性检验(internal consistency analysis),比如你想了解种族(racecat==1)的情况,你可以使用alpha s_felt s_work s_imp s_int s_job if racecat == 1, item

2.3 探索性因子分析

factor s_felt s_work s_imp s_int s_job, blanks (.45)
其中,blanks选项允许你指定显示那些不低于界定值(在本文的情况是0.45)的因子载荷,以便使因子载荷的输出结果更容易解释。
也请注意,你还可以指定分析方法为选用“主成分因子分析(principal component factor analysis)”而不是默认的“主要因素(principal factor)”分析。每个分析方法(Method)的选择取决分析类型以及建构(construct)类型。

探索性因子分析结果 观察结果,发现所有五个条目都紧紧地挨在一个潜变量(Factor1)名下,不过呢s_job比其他条目的载荷(解释力)要更低一些。这也许可以理解为:该条目说明了教师对学生的支持,却不能代表学生本人对学习的看法。

另外,上述程序默认为旋转因子分析,你可以指定非旋转因子分析,补充选项语句“norotated”。

2.4 单因子验证性分析
学习参与因子示意图(该图已能通过最新版的Stata绘制).png 现在我们已经拥有了假设的验证下因子模型示意图(上图),接下来我们使用选项语句stand来产生具有标准化系数的结果。
sem (INVOLVE -> s_felt s_work s_imp s_int s_job), stand
单因子验证性分析结果第一部分 输出结果第一部分显示,五个变量被识别为“测量(measurement)”变量,它们被用于构建潜变量“INVOLVE(学习参与)”,此外还显示了Stata默认的极大似然(ML)拟合下的迭代结果(Iteration 3),对数似然值为-4224.0826,s_felt的因子载荷被约束为其他变量的一个标准化参照单位。
单因子验证性分析结果第二部分 输出结果第二部分为我们展示,五个观测变量中每个变量的标准化因子载荷值,以及它们的标准误差,显著性和置信区间。例如,s_felt到潜变量INVOLVE的标准化因子载荷为0.64,标准误差为0.027。它在p <.001时显著,95%置信区间为0.59至0.69。这一切看起来都不错。
我们还看到,自由度为5的卡方值为35.30以及卡方检验的显著性。还记得吗,之前的拟合优度检验表明,模型拟合并不是很好。但是Stata可以为我们提供跟多信息。
顺着刚才的分析语句,别停下。输入:
estat gof, stats(all)
我们就得到了拟合优度统计量的补充信息。
拟合优度统计量补充信息 Stata马上为我们提供了类似于LISREL的分析结果。如RMSEA(渐进误差均方根 root-mean-square error of approximation)为0.91,CFI(comparative fit index, 比较拟合指数)为0.968,TLI为0.936。CD值为0.811,提供了与OLS分析后R方相似的解释指标。总的来说,这些统计量说明模型拟合差强人意,还需要用调整的办法让模型更好。

补充:GFI(goodness-of-fit index, 拟合优度指数), NNFI(non-normed fit index)和 CFI(comparative fit index, 比较拟合指数)。

所以我们要试试引入调整指数后的模型,看看在实证意义上,是否还存在一些特定的路径能够改善模型的拟合。在完成验证性因子分析(CFA)后,我们输入:
estat mindices

调整指数输出结果 调整指数结果给出了一些被我们忽略掉的路径的重要信息。有两个信息比较突出:第一,协方差(Covariance)栏给出了潜在建议的路径。第二,调整指数(MI)栏给出了当路径纳入模型后,卡方之和的下降值。比如,当我们加入e.s_work到e.s_imp的路径后,卡方值将会下降27.714。
在理论和概念方面,我们现在有理由在这些误差项之间补充一条路径(学习意义认知和学习重要性认知很相似,它们的误差项也可能存在相关),我们写入:
sem (INVOLVE -> s_felt s_work s_imp s_int s_job), cov (e.s_imp*e.s_work) stand
结果部分在此省略,但你会看到模型的卡方值为8.88,比之前的模型卡方值下降了27个点左右。再次查看新模型的拟合优度:
estat gof, stats(all)
我们把两个模型的统计量分别收集,并创建了一个表格以便大家进行对比。
假设模型和调整模型的拟合指标比较 可以发现,调整模型的拟合优于假设模型,我们顺便把新模型路径图也画出来。
调整模型的路径图

3. 两因子验证性因子分析

在学完单因子验证性分析后,一切都会变得简单。假设我们加入一个潜变量“父母参与”,它由两个观测变量构成:

p_checkwrk Frequency of parents checking homework
p_homework Frequency of parents helping with homework

画出路径图,将有助于我们进行概念化和进一步的分析。

两个潜变量模型 我们输入语句:
sem (INVOLVE -> s_felt s_work s_imp s_int s_job) (PARENT -> p_checkwrk p_homework), stand然后观察结果
两因子模型的测量结果部分 测量结果部分表明,观测变量很好的承接了潜变量的载荷。
正如我们对单因子模型所作的那样,接下来要看一下模型的拟合优度。输入:
estat gof, stats(all)
观察调整指数结果,请接着输入:
estat mindices
如果需要考虑缺失值的影响,这里提供一种比多重插补方法更为简单的方法,可以处理随机缺失值或完全随机缺失值。
sem (INVOLVE -> s_felt s_work s_imp s_int s_job) (PARENT -> p_checkwrk p_homework), method(mlmv) stand

4. 结构方程模型

在完成验证性因子分析后,离结构方程建模也就一步之遥了。让我们先画一个简单的路径图梳理三个潜变量的关系。

4.1 画结构草图
路径模型.png

我们用该模型来检查,学习参与程度是否可以中介宗教信仰与毒品使用的关系。

4.2 新纳入潜变量的信度分析和验证性因子分析

潜变量“宗教信仰”(Alpha=0.84)由两个观测变量组成
r_import the importance of religious beliefs
r_dec religious beliefs influence my decisions
潜变量“毒品使用”(Alpha=0.78)由三个二分类观测变量(过去12个月)组成
tobacco Tobacco use
alcohol Alcohol use
marij Marijuana use

4.3 所有潜变量的结构方程建模

假定已对两个潜变量建构(Construct)做完了信度分析和验证性因子分析,我们这时可以继续进行结构方程建模。输入语句:
sem (RELIG -> r_import r_dec) (INVOLVE -> s_felt s_work s_imp s_int s_job) (SUB -> tobacco marij alcohol) (RELIG -> INVOLVE) (INVOLVE->SUB), stand

结构方程建模部分结果 如你所见,结果有两部分:测量模型和结构模型。将潜变量之间的系数计入路径图之后,如下:
加入系数后的路径图 这时你可以解释:学习参与有助于调解宗教信仰和毒品使用之间的关系。 更准确地说,宗教与学习参与的增加有关(β= 0.34,p <.001),而反过来,学习参与又与较低的毒品使用水平相关(β= -0.24,p <.001)。
4.4 结构方程模型诊断

正如我们在验证性因子分析中做的那样,你也可以进行拟合优度检验和调整指数检验(这些结果我们不再详述)。
estat gof, stats(all)
estat mindices

4.5 梳理直接、间接、总效应

结构方程建模语句中还有一个很棒的选项estat effects,这允许我们计算直接效应、间接效应和总效应以及各自的显著性。你可以在建模语句之后紧跟上:
estat teffects, stand compact nodirect
我们会得到很多结果,但化繁为简,我们一般最关注的是间接效应和总效应,如图:

宗教对毒品使用的间接效应 左侧画圈处是未标准化的间接效应,右侧画圈处是标准化的间接效应(呈显著性)。如果手动计算一下,你会发现宗教对毒品使用的间接效应刚好等于宗教对学习参与的效应与学习参与对毒品使用的效应的乘积,也就是0.3445*-0.2447 = -0.084,很好。 总效应结果 在总效应结果图中,你可以看到宗教和父母参与对孩子学习参与的总效应值及其显著性。鉴于在本模型中,宗教与毒品使用间并没有直接效应,因此其间接效应就是总效应。学习参与与毒品使用并没有间接效应,因此其直接效应就是其总效应。

5. 其他有趣的功能

5.1 方程式拟合优度(Equation by Equation Goodness of Fit)

睡不着的话,那你可以了解一下条目的拟合优度。其语句是:
estat eqgof

方程式拟合优度检验 上图是我们在做单因子验证性分析时的结果,你可以从图中发现观测变量的R方和模型总R方、mc、mc2以及方差的分解(拟合、预测、剩余)。
5.2 传统结构方程模型的结果注释

再插句话,你可以使用estat framework得到一大坨跟传统结构方程模型有关的注释(截距、协方差、均值等等),方便你和使用其他软件使用者沟通。查看help estat framework得到更多帮助。

以上就是基本的学习笔记,如果你还有什么疑问的话,就请访问以下资源:

  1. the Statalist (www.stata.com/statalist), 这是一个很全的资源库
  2. 使用Stata的help sem帮助文档(再怎么强调也不为过)
  3. 以及Stata手册(帮助文档是精简版的手册)

参考资料:
Christopher P Salas-Wright 相关教案文件 2012年

上一篇下一篇

猜你喜欢

热点阅读