R与结构方程模型
原文链接:Michael Clark电子书《Graphical&Latent Variable Modeling》
简介
lavaan包中定义的符号如下:
公式 | 操作 | 含义 |
---|---|---|
定义潜变量 | =~ | 潜变量的测量的公式 |
回归 | ~ | |
协方差、方差 | ~~ | 相关性 |
截距 | ~1 | ~0为截距为0 |
固定参数 | _* | 固定某一个 |
命名 | abc* | 被命名为 |
MPlus的功能在R中对应的包
model | package |
---|---|
标准CFA、路径分析、SEM、增长模型(growth) | lavaan |
缺失值 | lavaan::FIML,semTools::MI+ |
多组分析 | lavaan, semTools |
固定效应模型 | flexmix, poLCA |
Bayesian | blavaan |
因子评分回归 | lavvan |
可视化 | lavaanPlot |
图形模型
图形模型可以看作是通过边(或链接)连接节点(或顶点)的数学或统计构造。当看做统计模型时,节点表示我们数据集中感兴趣的变量,并且边代表它们之间的关系。他们看起来如下。
您执行的任何统计模型都可以表示为这样的图形模型。例如,第一个图形,具有 X、Y 和 Z 三个节点,表示 X 和 Z 预测 Y 的回归模型;中间的图表示间接效应,1、2、3图表示一个相关矩阵。
图形模型的一个关键思想是条件独立性,在构建模型时应该记住这一点。该概念可以通过下图进行演示。
在此图中,在给定 Y 的条件下,X 条件独立于 Z :一旦要去解释 Y (即 Y 做因变量时),那么 X 与 Z 之间是不相关的。在讨论路径分析和潜在变量模型时,我们将重新审视这个概念。图形可以是有向的、无向的或混合的。有向图有箭头,有时暗示因果流(很难明确证明)或注意时间分量(时序先后性)。无向图仅表示节点之间的关系,而混合图可能包含方向和对称关系。本文档中讨论的大多数模型都将是定向的或混合的。
有向图(directed graphs)
- 标准回归模型
- 路径分析
- 关系类型
- 多目标
- 间接效应
- 多调节
- 术语的问题
- 工具变量
- 非递归模型
- 跟踪原则
如前所述,我们可以将标准模型表示为图形模型。在大多数情况下,我们将处理有向图或混合图。我们几乎总是专门处理有向非循环图(即没有反馈循环的模型)。
1、标准回归模型
让我们从标准线性模型(SLM)开始,即我们可以通过普通最小二乘法(OLS,并非都是如此)估计的基本回归。在此设置中,我们要检查每个潜在预测变量(图中的 xn )对目标变量 (y) 的影响。下面显示了图形模型的外观。
尽管看起来很简单,但是后续复杂模型中会用到相同的思维。我们将展示利用标准的R建模与用lavvan中sem建模的结果是否相同(尽管sem使用极大似然的方法,因此方差可能会有轻微不同。)。
首先利用lm
进行建模
mcclelland = haven::read_dta('data/path_analysis_data.dta') #路径为存储该数据的路径
lmModel = lm(math21 ~ male + math7 + read7 + momed, data=mcclelland)
随后我们用lavaan包,虽然输入格式与结果会轻微不同(以SEM展示),但是参数完全相同。
library(lavaan) #载入lavaan包
model = "
math21 ~ male + math7 + read7 + momed #模型与lm建模完全一致
"
semModel = sem(model, data=mcclelland, meanstructure = TRUE)
summary(lmModel)
Call:
lm(formula = math21 ~ male + math7 + read7 + momed, data = mcclelland)
Residuals:
Min 1Q Median 3Q Max
-6.9801 -1.2571 0.1376 1.4544 5.7471
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4.84310 1.16418 4.160 4.08e-05 ***
male 1.20609 0.25831 4.669 4.44e-06 ***
math7 0.31306 0.04749 6.592 1.76e-10 ***
read7 0.08176 0.01638 4.991 9.81e-07 ***
momed -0.01684 0.06651 -0.253 0.8
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2.329 on 324 degrees of freedom
(101 observations deleted due to missingness)
Multiple R-squared: 0.258, Adjusted R-squared: 0.2488
F-statistic: 28.16 on 4 and 324 DF, p-value: < 2.2e-16
summary(semModel, rsq=T)
lavaan 0.6-2 ended normally after 21 iterations
Optimization method NLMINB
Number of free parameters 6
Used Total
Number of observations 329 430
Estimator ML
Model Fit Test Statistic 0.000
Degrees of freedom 0
Minimum Function Value 0.0000000000000
Parameter Estimates:
Information Expected
Information saturated (h1) model Structured
Standard Errors Standard
Regressions:
Estimate Std.Err z-value P(>|z|)
math21 ~
male 1.206 0.256 4.705 0.000
math7 0.313 0.047 6.642 0.000
read7 0.082 0.016 5.030 0.000
momed -0.017 0.066 -0.255 0.799
Intercepts:
Estimate Std.Err z-value P(>|z|)
.math21 4.843 1.155 4.192 0.000
Variances:
Estimate Std.Err z-value P(>|z|)
.math21 5.341 0.416 12.826 0.000
R-Square:
Estimate
math21 0.258
正如我们稍后将更详细地看到的那样,SEM包含更复杂的回归模型,但在这一点上,参数具有与我们的标准回归完全相同的理解,因为除了概念上之外,两个模型之间没有区别,因为SEM明确地为解释带来了因果关系。随着我们的前进,我们可以在统计上看到结构方程模型是我们已经非常熟悉的那些的推广,因此人们可以利用这些先验知识作为理解新知识的基础。
2、路径分析
路径分析实际上是一种非常古老的技术,可以看做是标准线性回归(SLM)的一种推广。可以允许间接效应和多个目标变量。
2.1、关系类型
大多数模型只处理直接效应。在这种情况下,我们不希望考虑干预变量。如确实存在干预变量(例如图中的B),那么我们所处理的是通常称为中介模型的东西,并且必须报告间接和(潜在的)直接影响。
在处理多个结果时,有些结果可能具有共同的预测因子,因此结果的相关性可以通过这些共同诱因来解释(这将在稍后的因子分析中出现)。通常存在未分析的相关。例如,每次运行回归时,预测变量之间的相关性都是“未分析”。
2.2、多个目标
虽然相对较少使用,但多变量线性回归(多个因变量)实际上在某些编程环境(如R)中非常简单,并且执行具有多变量结果的模型不需要任何特定于SEM的内容,但这是我们将坚持的领域。
使用McClelland的数据,让我们自己尝试一下。首先,让我们看一下数据的大体情况。
虽然一开始这些变量之间相关很弱,但一个合理的模型可能能够预测21岁时的数学和阅读,并在前几年采取措施。
model = "
read21 ~ attention4 + vocab4 + read7
math21 ~ attention4 + math7
read21 ~~ 0*math21 #~~代表相关改代码表示read21和math21是相互独立的。
"
mvregModel = sem(model, data=mcclelland, missing='listwise', meanstructure = T)
coef(mvregModel)
read21~attention4 read21~vocab4 read21~read7 math21~attention4 math21~math7 read21~~read21
0.128 0.377 0.537 0.091 0.347 51.837
math21~~math21 read21~1 math21~1
5.965 50.290 5.856
模型代码的最后一行阐明了我们将math21和read21视为独立的,因此我们只是同时运行两个单独的回归。
另请注意,输出中有**~1**的系数是截距。
我们可以将其与标准R回归进行比较。第一步使数据等于lavan中使用的数据。为此,我们可以使用 dplyr 包为模型选择必要的变量,然后省略缺少的个案。
library(dplyr)
mcclellandComplete = select(mcclelland,
read21, math21, attention4, vocab4, read7, math7) %>% na.omit
lm(read21 ~ attention4 + vocab4 + read7, data=mcclellandComplete)
Call:
lm(formula = read21 ~ attention4 + vocab4 + read7, data = mcclellandComplete)
###
Coefficients:
(Intercept) attention4 vocab4 read7
50.2904 0.1275 0.3770 0.5368
###
lm(math21 ~ attention4 + math7, data=mcclellandComplete)
###
Call:
lm(formula = math21 ~ attention4 + math7, data = mcclellandComplete)
Coefficients:
(Intercept) attention4 math7
5.85633 0.09103 0.34732
###
其中使用sem函数估算模型read21 ~ attention4 + vocab4 + read7
得到的参数分别为:
read21 ~ attention = 40.128
read21 ~ vocab4 = 0.377
read21 ~ read7 = 0.537
read21 ~ 1 = 50.290
使用sem函数估算模型math21 ~ attention4 + math7
得到的参数分别为
math21 ~ attention4 = 0.091
math21 ~ math7 = 0.347
math21 ~ 1 = 5.856
math21 ~ ~ math21表示math的方差为5.965 ;read21 ~ ~ read21表示read21的方差为51.837
可以看见用sem函数估算的参数值和lm函数的参数完全相同。
删除math21和read21之间不相关(math21 ~ 0*read21
)的约束,这是可以计算得到二者的协方差。而此时得到的参数与lm函数的结果不同。read21~~math21
表示read与math21之间的协方差。
model = "
read21 ~ attention4 + vocab4 + read7
math21 ~ attention4 + math7
"
mvregModel = sem(model, data=mcclelland, missing='listwise', meanstructure = T)
coef(mvregModel)
read21~attention4 read21~vocab4 read21~read7 math21~attention4 math21~math7 read21~~read21
0.140 0.388 0.494 0.092 0.330 51.958
math21~~math21 read21~~math21 read21~1 math21~1
5.968 3.202 51.316 6.020
使用summary
函数查看模型的拟合结果,同时要求输出标准化后的结果。
summary(mvregModel, standardized=T)
lavaan 0.6-2 ended normally after 38 iterations
Optimization method NLMINB
Number of free parameters 10
Used Total
Number of observations 304 430
Estimator ML
Model Fit Test Statistic 26.965
Degrees of freedom 3
P-value (Chi-square) 0.000
Parameter Estimates:
Information Expected
Information saturated (h1) model Structured
Standard Errors Standard
Regressions:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
read21 ~
attention4 0.140 0.134 1.043 0.297 0.140 0.051
vocab4 0.388 0.163 2.378 0.017 0.388 0.116
read7 0.494 0.050 9.942 0.000 0.494 0.486
math21 ~
attention4 0.092 0.045 2.041 0.041 0.092 0.109
math7 0.330 0.049 6.674 0.000 0.330 0.351
Covariances:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
.read21 ~~
.math21 3.202 1.026 3.119 0.002 3.202 0.182
Intercepts:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
.read21 51.316 3.045 16.854 0.000 51.316 6.056
.math21 6.020 0.951 6.327 0.000 6.020 2.285
Variances:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
.read21 51.958 4.214 12.329 0.000 51.958 0.724
.math21 5.968 0.484 12.329 0.000 5.968 0.860
采用* 多变量回归/路径分析* 还是单独回归的问题留给研究人员。在某些情况下,解释单变量模型可能更容易。但如上所述,单独的回归没有太多考虑因变量之间的相关。
2.3、间接效应
路径分析允许使用多个目标变量,每个目标具有相同或混合的协变量。
那间接影响呢?标准回归模型仅检查直接效应,回归系数反映该直接效应。但是,有一个特定的协变量会引起另一个协变量的一些变化,从而导致因变量的相应的变化。当在不同时间点收集某些度量值时尤其如此。
请注意,在SEM中,在图形描述中任何有箭头指向通常称为内源变量(endogenous),而只有箭头伸出的变量是外源变量(exogenous)。外源变量之间可能仍具有(未分析的)相关性。正如我们稍后将看到的,观察变量和潜变量都可能是内源性的或外源性的。
请考虑以下模型。
在这里,我们认为4岁时的注意力跨度和词汇量影响7岁时阅读技能的期望,这最终被视为成人阅读能力的先驱。在这个模型中,注意力跨度和词汇量在4时仅通过早期的阅读技能对成人阅读能力产生间接影响。至少在时间上它是有意义的,所以让我们把它编码起来。
model = "
read21 ~ read7
read7 ~ attention4 + vocab4
"
mediationModel = sem(model, data=mcclelland)
summary(mediationModel, rsquare=TRUE)
lavaan 0.6-2 ended normally after 21 iterations
Optimization method NLMINB
Number of free parameters 5
Used Total
Number of observations 305 430
Estimator ML
Model Fit Test Statistic 6.513
Degrees of freedom 2
P-value (Chi-square) 0.039
Parameter Estimates:
Information Expected
Information saturated (h1) model Structured
Standard Errors Standard
Regressions:
Estimate Std.Err z-value P(>|z|)
read21 ~
read7 0.559 0.050 11.152 0.000
read7 ~
attention4 0.270 0.151 1.791 0.073
vocab4 0.488 0.186 2.629 0.009
Variances:
Estimate Std.Err z-value P(>|z|)
.read21 53.047 4.296 12.349 0.000
.read7 66.779 5.408 12.349 0.000
R-Square:
Estimate
read21 0.290
read7 0.035
我们像以前一样解释结果,从概念上讲,有两组模型需要考虑(尽管它们是同时估计的),一个是7岁时的阅读,一个是21速时的阅读。诚然,人们可以将路径分析视为一系列连续的回归模型。在这里,我们在4岁时的注意力和词汇与7岁时的阅读之间存在正相关关系,7岁时阅读对21岁时阅读有积极影响。从统计学上讲,我们的模型似乎是可行的,因为每条路径似乎都有统计上显着的估计。
然而,read7模型的R方(0.035),4岁时的自变量对因变量(read4)几乎没有实际效应(practical effect),R2 小于4%。我们能够通过这个分析得出的结论仅仅是read7对read21有影响。
我们可以通过在代码中标记的方式测试间接效应。在下列代码中,我根据首字母贴上标签(比如vr
代表vocab和read之间路径)。注意,这是随意的名字,也就是说可以随意命名。
这里也添加了其他早期变量的直接效应,虽然对词汇的间接影响在统计学上是显着的,因为我们已经知道这两个变量之间没有很强的相关性,但它在很大程度上是由7岁时的阅读和21岁的阅读之间的强关系驱动的,这可能并不是我们感兴趣的。
比较AIC的值(等下会再讲)适用于只有直接效应的模型
model = "
read21 ~ rr*read7 + attention4 + vocab4
read7 ~ ar*attention4 + vr*vocab4
# Indirect effects
att4_read21 := ar*rr #attention4到read21的间接效应
vocab4_read21 := vr*rr #vocab4到read21的间接效应
"
mediationModel = sem(model, data=mcclelland)
summary(mediationModel, rsquare=TRUE, fit=T, std=T)
###
lavaan 0.6-2 ended normally after 28 iterations
Optimization method NLMINB
Number of free parameters 7
Used Total
Number of observations 305 430
Estimator ML
Model Fit Test Statistic 0.000
Degrees of freedom 0
Model test baseline model:
Minimum Function Test Statistic 121.544
Degrees of freedom 5
P-value 0.000
User model versus baseline model:
Comparative Fit Index (CFI) 1.000
Tucker-Lewis Index (TLI) 1.000
Loglikelihood and Information Criteria:
Loglikelihood user model (H0) -2108.612
Loglikelihood unrestricted model (H1) -2108.612
Number of free parameters 7
Akaike (AIC) 4231.224
Bayesian (BIC) 4257.267
Sample-size adjusted Bayesian (BIC) 4235.066
Root Mean Square Error of Approximation:
RMSEA 0.000
90 Percent Confidence Interval 0.000 0.000
P-value RMSEA <= 0.05 NA
Standardized Root Mean Square Residual:
SRMR 0.000
Parameter Estimates:
Information Expected
Information saturated (h1) model Structured
Standard Errors Standard
Regressions:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
read21 ~
read7 (rr) 0.536 0.050 10.607 0.000 0.536 0.515
attentin4 0.134 0.134 0.998 0.318 0.134 0.048
vocab4 0.381 0.166 2.299 0.021 0.381 0.111
read7 ~
attentin4 (ar) 0.270 0.151 1.791 0.073 0.270 0.101
vocab4 (vr) 0.488 0.186 2.629 0.009 0.488 0.148
Variances:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
.read21 51.926 4.205 12.349 0.000 51.926 0.695
.read7 66.779 5.408 12.349 0.000 66.779 0.965
R-Square:
Estimate
read21 0.305
read7 0.035
Defined Parameters:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
att4_read21 0.145 0.082 1.766 0.077 0.145 0.052
vocab4_read21 0.261 0.102 2.552 0.011 0.261 0.076
由于原文章中没有清晰地说明其他变量,因此这里提供一个可以参考的模型
modReading = "
read21 ~ read7 + attention4 + vocab4 + male + adopted + momed
read7 ~ attention4 + vocab4
"
reading = sem(modReading, data=mcclelland, missing='fiml', mimic = 'Mplus', std.ov=TRUE)
summary(reading, rsquare=TRUE)
2.4、多中介模型
这里展示一个用“lmai”的mediation包进行中介模型的方式。它基于一个允许对中介模型、结果模型或两者进行特别复杂的模型,包括中介变量和结果的不同类型的变量。虽然进行起来很简单,但结果表明,在中介方面,还有更多的事情需要考虑。
开始的时候,我们将运行两个模型,一个是中介模型,另一个是结果模型。使用mediate函数来计算中介效应。这次我们将聚焦于间接效应。
library(mediation)
mediator_model = lm(read7 ~ attention4 + vocab4, data=mcclellandComplete)
outcome_model = lm(read21 ~ read7 + attention4 + vocab4, data=mcclellandComplete)
results = mediate(mediator_model, outcome_model, treat="attention4", mediator = 'read7')
summary(results)
###
Causal Mediation Analysis
Quasi-Bayesian Confidence Intervals
Estimate 95% CI Lower 95% CI Upper p-value
ACME 0.1451 -0.0102 0.31 0.068 .
ADE 0.1281 -0.1213 0.39 0.348
Total Effect 0.2732 -0.0193 0.58 0.060 .
Prop. Mediated 0.5232 -0.6462 2.72 0.092 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Sample Size Used: 304
Simulations: 1000
首先要注意的是,有多种结果需要考虑,我们有平均因果中介效应(ACME,average causal mediated effect),平均直接效应,总效应和部分中介。
什么是平均因果中介效应:首先,考虑一个标准的实验设计,其中参与者被分配到对照组和治疗组。理想情况下,如果我们真的想知道真正的效果,我们会看对照组情况下这个个体的结果以及他接受治疗时的结果。真正的因果效应是他们在对照组和治疗时的分数之间的差异。因此,有两种不同条件或与事实相反的假设情况令人感兴趣 —— 对照组在实验处理情况下潜在的结果是什么,反之,实验组在不处理时的潜在结果是什么。
这种潜在的结果框架是中介的本质。在存在中介变量的情况下,我们可以从定义平均直接效应(ζ)开始,如下所示,其中Yi是单个个体(i)的潜在结果,Mi是中介变量的潜在结果,而Ti则是实验组(treatment)的状态。
当治疗改变,但中介保持在治疗等于 t 时将实现的值时,潜在结果的预期差异: ξ ( t ) = E [ Y ( t 1 , M ( t ) ) − Y ( t 0 , M ( t ) ) ] \xi(t)=E[Y(t_1,M(t)) - Y(t_0, M(t))] ξ(t)=E[Y(t1,M(t))−Y(t0,M(t))]
平均因果中介效应(AMCE)为:
当中介变量在治疗条件下相对于对照条件获取将实现的值时,潜在结果的预期差异(δ),而治疗状态本身保持不变。 δ ( t ) = E [ Y ( t 1 , M ( t 1 ) ) − Y ( t , M ( t 0 ) ) ] \delta(t)=E[Y(t_1,M(t_1)) - Y(t, M(t_0))] δ(t)=E[Y(t1,M(t1))−Y(t,M(t0))]
t0、t1、t分别是处理T的值,M(t)是潜在中介变量。Y(t,M)是潜在结果便量
将这两者相加将获得总效应(total effect),即总效应=直接效应+中介效应(间接效应)。
对于连续变量,“控制”和“处理”的值固定为感兴趣的特定值,但默认情况下表示变量值的单位差。mediate函数的结果基于模拟方法,并在这些模拟上取平均值。
你会注意到还有一个“中介的效应比例”,这是 ACME 占总效应的大小。它也在模拟中取平均值(因此不仅仅是ACME/总效应报告的值)。我不清楚这个概念有多大用处,正如边界所指出的,它实际上是一个比率,而不是一个真实的比例(计算出来),因此在某些模拟下,该值可以是负数或大于1。
您可以将结果与以前的lavaan包的结果进行比较。我已经用bootstrap的方法(设置se=‘boot’),以更符合Imai的模拟方法。也可以用blavaan包来得到真实的贝叶斯估计。
正如预期的那样,lavaan和mediation包的结果大体上是一致的。然而,潜在结果框架将路径乘积方法作为特例,因此推广到中介和结果的不同模型和变量类型。
2.4、例子
举一个例子,以下内容跟随Pearl文章中第4.4节。
现在我们有一个虚拟变量Treatment,0=对照组;1=治疗组。一个连续的中介变量和一个目标变量。
此外我们将只考虑单个个案,当观测到的值为0 = “control”时,中介=3,目标=2。我们定义 ϵ ∗ \epsilon _* ϵ∗,代表干预变化时的不变特征(无论是否处理都有这一个epsilon),并设定:
ϵ 1 = 0 ; ϵ 1 \epsilon _1 = 0 \quad;\quad \epsilon _1 ϵ1=0;ϵ1 代表Treatment
ϵ 2 = 3 − 0 ∗ 0.3 = 3 ; ϵ 2 \epsilon _2 = 3 - 0*0.3 = 3 \quad;\quad \epsilon _2 ϵ2=3−0∗0.3=3;ϵ2 代表Mediator中不变的量
ϵ 3 = 2 − 0 ∗ 0.5 − 3 ∗ 0.2 = 1.4 ; ϵ 3 \epsilon _3 = 2 - 0*0.5 - 3*0.2 = 1.4 \quad;\quad \epsilon _3 ϵ3=2−0∗0.5−3∗0.2=1.4;ϵ3 代表target中不变的量
如果某个人在对照组中,此设置预测目标的值为 3*.2 + 1.4 = 2(中介到target的值,加上epsilon3)。现在让我们弄清楚如果这个人在处理组(Treatment = 1)的值。中介值现在将为 3 + 10.3 = 3.3。这反过来会产生目标的值(1.4 + 3.3.2 + 1*.5 = 2.56)。
我们可以在其他情况下采用这种方法。例如,我们可以问,如果治疗为0,无论中介在何值时,这个人接受了处理时预期值应该是多少?该值为3.3*.2 + 1.4 = 2.06,如果我们从它们完全在对照组中减去,则得到中介效应2.06 - 2 = .06。在这个线性模型中,它等效于通过路径积方法的间接效应,.3*.2 = .06。但是现在,通过基于目标变量而不是系数的估计,我们不必局限于线性模型。
关于上述需要注意的一点是,尽管没有数据集或统计结果,但我们试图理解理论考虑下的变量之间的因果关系。尽管我们可能使用统计分析工具,但将SEM和常见回归方法区分开来的关键因素是因果关系的明确假设以及测试某些因果关系的能力。
间接效应的注意事项
人们应该非常认真地考虑假设间接效应,特别是在没有时间分量或明显的伪因果路径的情况下。如果效果不是很明显,或者您正在处理横断数据(cross-sectional data),那么您可能应该只检查直接影响。
与人们使用模型进行的其他标准探索(例如,寻找非线性关系)不同,潜在的因果关系和相关假设在这种情况下更加明确。我在咨询中看到的许多模型都让我感到武断,因为哪个协变量作为调解,需要一个相当复杂的解释来证明其合理性,或者为了减少推理上过多的间接效应而忽略了其他相关变量。此外,我经常可以问一两个问题,并会发现研究人员实际上对相互作用(即调节)感兴趣,而不是间接影响。
本文档不会介绍具有调节的中介或有中介的调节模型。根据我的经验,这些模型通常与那些难以解释的模型有关,或者没有非常强烈地基于实质性问题。然而,有些时候,例如在实验环境中,令人惊讶的是,由于未知的原因,很少有SEM被应用,也许这是非常合适的。当时间到来时,留给读者去研究这些特殊的复杂性。
很多时候,调查人员只会抛出这些间接影响,而只是报告这种影响是否显著。如果你隐藏他们的结果,并询问间接影响是积极的还是消极的,我怀疑他们甚至可能不知道。即使不使用,我认为潜在结果框架的视角可以帮助人们适当地思考情况,并避免不必要的复杂化。如果想要探索可能的间接路径,有更好的方法仍然植根于结构因果模型框架中,我们很快就会看到。此外,应始终将中介模型与没有中介的更简单模型进行比较(例如,通过AIC)。
术语问题
作者认为中介=间接效应,调节=交互作用,因此真正的调节作用图应像下图左侧的图。
有人将具有间接效应的模型称作中介模型,并且该术语通常出现在SEM(尤其是心理学)文献中。许多刚开始使用SEM的应用研究人员经常将术语与调节混淆,这在所有其他统计建模上下文中称为交互作用。当您开始SEM之旅时,说明间接效应(indirect effect)和交互作用(interaction)可能会让您清楚您正在建模的内容,并且对于那些在您展示工作时可能不熟悉SEM的人来说,可能会更清楚。
在具有调节的模型中,人们经常会看到一个被表示为调节变量的特定变量。但是,在使用它的绝大多数情况下,这完全是任意的。在一个典型的交互作用模型中,A→Y关系作为B的函数而变化和B→Y 关系作为A函数而变化一杨有道理。
有些人建议仅在存在潜在的因果关系时使用术语“调节”,这种关系几乎总是时间性的,因此调节变量在所讨论的变量之前。此外,调节变量与被调节的变量之间必须是不相关的。然而这样的限制会阻碍我所见到的几乎所有模型,那些模型中使用“调节”来表示交互作用。但这个想法是,调节变量对所讨论的变量与其目标之间的路径具有因果效应。这就是为什么你会看到像下面右边的图表,它与任何统计模型都没有联系,并且通常使人们感到困惑的次数多于它所使人明白的次数(正确的图表在左边)。同样,实际模型在统计上与包括交互在内的标准模型没有区别,因此,如果您想了解调节,则只需了解交互是什么即可。
就像SEM与标准建模技术(standard modeling techniques)有联系一样,间接效应和交互作用对于中介和调节也是如此。从统计学上讲,它们是无法区分的模型。然而,从理论上讲,存在一个潜在的因果框架,在某些情况下,可以测试特定的因果关系主张(例如通过模拟)。
最近,我还听到“聚光灯分析”这个短语,指的是通过连续变量相互作用进行分类。请不要将新术语应用于非常旧的技术,以使模型听起来更有趣。这项工作应该为自己说话,并尽可能清楚地表达出来。
要点是,如果你想用“调节”和“中介”这两个术语来谈论你的关系,你会希望变量之间有具体和明确的因果关系。如果你不确定,那么答案显然是你没有这种情况。但是,您仍然可以像往常一样合并交互作用,并通过对相关性进行建模来探索潜在的间接影响,例如,将间接路径保持无向。
题外话1:工具变量(instrumental variable)
工具变量(instrumental variable,IV)回归是当回归变量X与误差项u相关时获得总体回归方程未知系数一致估计量的一般方法,详见工具变量回归
不同类型的路径分析在计量经济学中有着悠久的历史。人们可能看到的一种非常常见的方法是工具变量分析。该模型可以按如下图形方式描述:
在图表中,Y是我们的目标变量,X是感兴趣的因果变量,Z是工具变量。工具变量不得与目标变量的波动(即U)相关,并且仅有通过X到Y的一个间接效应。目标变量和因果变量都不允许直接或间接影响工具变量。
在图中这包括诸如“在给定X条件下Z不可与Y相关”等条件,换句话说,如果去除X->Y的路径,那么Z与Y之间相互独立。此外,Z与X并非条件独立。
这种模型的激励因素(motivating factor)是X→Y另可能无法提供确定的因果关系。特别是如果X与误差相关的时候。作为示例,我们看一下收入与教育的关系,未指明的收入因素可能包括诸如“一般能力”的因素,这将与教育获得的潜在因果相关。有了误差U我们可以有如下的图来描述问题:
此时X是内生变量,但事实并非如此,X的改变会同时影响Y和U。
此时有X对Y有多重效应,即来自X的直接效应和来自U的间接效应。我们可以测量X和Y的联系,但是不能测量因果关系。
这是尝试添加一个工具变量Z可能修正这个问题,如下:
工具变量Z影响X并因此与Y间接相关。然而与X不同,Z与U不相关。该假设排除了Z从模型中的对Y的直接效应。如果X和Z同时影响Y,但是只有X有直接影响,那么Z基本上就被当做误差了。由于没有Z到Y 的直接路径,那Z只对X有影响。
这些模型通常与已知的两阶段最小二乘法技术相吻合,这里对此进行了演示。我使用香烟SW数据集和AER包中的ivreg函数的子集进行比较。这些数据涉及1985年至1995年美国48个大陆州的卷烟消费量,尽管只有最后一年用于我们的目的。在这里,我们把州级收入(rincom)当做工具变量,检验价格(rprice)对人均包(packs)的影响。
head(Cigarettes) # raw, logged values actually used in models
state rprice rincome tdiff tax cpi packs year
1 AL 103.9182 12.91535 0.9216975 40.50000 1.524 101.08543 1995
2 AR 115.1854 12.16907 5.4850193 55.50000 1.524 111.04297 1995
3 AZ 130.3199 13.53964 6.2057067 65.33333 1.524 71.95417 1995
4 CA 138.1264 16.07359 9.0363074 61.00000 1.524 56.85931 1995
5 CO 109.8097 16.31556 0.0000000 44.00000 1.524 82.58292 1995
6 CT 143.2287 20.96236 8.1072834 74.00000 1.524 79.47219 1995
# explicit 2sls(2 stage least square)
mod0 = lm(rprice ~ rincome , data = Cigarettes)
lm(packs ~ fitted(mod0), data = Cigarettes) #fitted(fit):计算模型的预测值y-hat
Call:
lm(formula = packs ~ fitted(mod0), data = Cigarettes)
Coefficients:
(Intercept) fitted(mod0)
7.919 -0.707
## using AER package
ivmod = AER::ivreg(packs ~ rprice | rincome, data = Cigarettes)#竖线后的是工具变量
summary(ivmod)
Call:
AER::ivreg(formula = packs ~ rprice | rincome, data = Cigarettes)
Residuals:
Min 1Q Median 3Q Max
-0.64455 -0.08910 0.01721 0.11352 0.45742
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 7.9191 2.0819 3.804 0.000419 ***
rprice -0.7070 0.4354 -1.624 0.111265
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.2006 on 46 degrees of freedom
Multiple R-Squared: 0.3351, Adjusted R-squared: 0.3207
Wald test: 2.637 on 1 and 46 DF, p-value: 0.1113
ymod = lm(packs ~ rincome, data = Cigarettes)
可见两个方法产生相同的结果,但是进行分布的回归会产生误差问题。但是通过X-Z回归拟合值再进行两阶段回归,我们基本能够得到未受U污染的X-Z。为了看到效应来自哪里,pack(X)- incom(Z)的回归系数为-0.347(通过summary(mod0)
查看),并除以 price(Y) - incom(Z)的系数(-0.7070),将得到pack-price的最终的效应。
当然我们也可以通过lavaan包进行路径分析,为了获得与工具变量回归相同等结果,这里添加一个packs与price协方差的估算。
mod = '
packs ~ rprice
rprice ~ rincome
packs ~~ rprice #估算packs与rprice的协方差
'
modiv = sem(mod, data=Ciglog, meanstructure = T, se = 'robust')
summary(modiv)
lavaan 0.6-2 ended normally after 49 iterations
Optimization method NLMINB
Number of free parameters 7
Number of observations 48
Estimator ML
Model Fit Test Statistic 0.000
Degrees of freedom 0
Minimum Function Value 0.0000000000000
Parameter Estimates:
Information Expected
Information saturated (h1) model Structured
Standard Errors Robust.sem
Regressions:
Estimate Std.Err z-value P(>|z|)
packs ~
rprice -0.707 0.427 -1.655 0.098
rprice ~
rincome 0.492 0.083 5.899 0.000
Covariances:
Estimate Std.Err z-value P(>|z|)
.packs ~~
.rprice -0.008 0.006 -1.290 0.197
Intercepts:
Estimate Std.Err z-value P(>|z|)
.packs 7.919 2.053 3.857 0.000
.rprice 3.464 0.221 15.695 0.000
Variances:
Estimate Std.Err z-value P(>|z|)
.packs 0.039 0.015 2.541 0.011
.rprice 0.012 0.002 6.028 0.000
虽然工具变量回归很常见,但这可能不是SEM中的典型路径模型。使用SEM,可以采用模型比较方法来比较具有竞争复杂性的模型。一个没有讨论的问题是工具从何而来。通常,收集数据时不会考虑获取数据,因此使用此类分析可能非常困难。此外,包括SEM在内的结构化因果框架通常是一种更灵活的方法。
Heckman 选择模型1
题外:2:非递归模型
递归模型具有所有单向因果效应,干扰不相关。如果模型中存在循环的关系、反馈循环或 相关干扰,则模型被视为非递归模型。当没有足够的信息来估计模型(未识别的模型)时,非递归模型可能会出现问题,这是它们普遍关注的问题。
非递归关系的一个典型例子是婚姻满意度:一方越满意,另一方就越满意,反之亦然(至少这是理论)。这可以通过一个简单的模型来表示(如下)。
众所周知,这些模型在识别方面很难指定,我们将在后面详细讨论。目前,我们可以简单地说,上面的模型甚至不会被估计,因为要估计的参数(两条路径,两个方差)比数据中的信息(两个方差和一个协方差)还要多。
为了识别这个模型,我们像以前一样使用工具变量。在这种情况下,工具变量直接影响递归关系中的一个变量,但不影响另一个变量。例如,妻子的教育程度可以直接影响她的满意度,丈夫的教育程度可以直接影响他的满意度,但丈夫的教育程度不能直接影响妻子的满意度,反之亦然(至少对于这个调查是这样)。这些工具变量可以间接影响配偶的满意度。以下模型中还包括家庭收入。虚线表示未经分析的相关性。
许多非递归模型可能最好用相关性来表示。人们必须有强大的理论模型支撑,这可能就是为什么它们在SEM文献中并不经常出现的原因,尽管它们实际上在经济学等一些领域非常普遍,在这些领域,理论被(经济学家)认为更强大。
题外话3:跟踪原则
在递归模型中可以使用跟踪规则找到两个变量 X1 和 X2 之间的隐含相关性。模型中变量之间的隐含相关性等于它们之间路径的所有标准化系数的乘积之和。有效跟踪是 X1 和 X2 之间的所有路径,a) 不输入同一变量两次,b) 不通过箭头输入变量,通过箭头离开。以下示例假定变量已标准化(方差值等于 1),如果未发生标准化,则传递的变量的方差应包含在跟踪的乘积中。
考虑以下变量 A、B 和 C(在名为 abc 的数据中),其模型如下图所示。我们感兴趣的是通过将关系分解为其不同的组件并使用跟踪规则来识别x和z之间的隐含相关性
cor(abc)
# A B C
#A 1.0 0.2 0.3
#B 0.2 1.0 0.7
#C 0.3 0.7 1.0
model = "
C ~ B + A
B ~ A
"
pathMod = sem(model, data=abc)
coef(pathMod)
# C~B C~A B~A C~~C B~~B
#0.667 0.167 0.200 0.478 0.950
重现A与C之间的相关(有时被称为总效应)
- Corra-c = ac + ab * bc = 0.667 + 0.033 = 0.7
在SEM模型中,重要的是要考虑我们的模型隐含相关性与实际观察到的相关性的对应程度。对于过度识别的模型,相关性不会被精确地再现,因此可以作为我们模型拟合数据的程度的度量。我们稍后将对此进行更多讨论。此外,路径的追踪对于理解Judea Pearl的结构因果模型方法非常重要,其中SEM和潜在结果框架是其中的一部分。
贝叶斯网络
在路径分析的许多情况下,路径模型没有得到先前研究或直觉的强烈支持,而在其他情况下,人们愿意在事后使用修改指数来改变模型中的路径。这是不幸的,因为他们的模型通常一开始就过于合适,如果以这种临时的方式进行更改,则更是如此。
但是,可以使用更具探索性的图形模型方法。贝叶斯网络是Pearl结构因果模型框架中的一种方法,并导致了它的发展,是我们一直在做的那种图形建模的替代方案。虽然它们可以用来产生与我们通过最大似然估计通过路径分析获得的结果完全相同的结果,但它们也可以用于约束或完全探索性的努力,可能具有正则化来帮助减少过度拟合。
例如,我使用McClelland数据通过bnlearn包探索潜在的路径。我提出了一些约束,即时间较晚的变量不会在较早的时间内影响变量25,没有变量是针对性等背景特征的,至少出于这些目的,我在特定时间保持数学和阅读不再有相互接触的路径。我在这里展示了一些所谓的限制黑名单。请注意,我们还可以要求通过白名单将某些路径放在模型中。
from to
1 read21 read7
2 read21 math7
3 read21 attention4
4 read21 vocab4
5 read21 adopted
6 read21 male
现在我们可以运行模型了。在本例中,我们将使用 Grow-Shrink 算法,这是包中可用的更简单算法之一,尽管其他人得出了相同的结论。
library(bnlearn)
model = gs(mcclellandNoCollege, blacklist = blacklist, test='mi-g-sh')
模型结果的图表明,4岁时的注意力跨度与其他变量没有有用的关系,我们已经根据以前的模型怀疑了这一点,甚至可以在一开始就猜测,因为它的相关性很低。由于它没有连接,因此我已将其从可视化中删除。此外,其余的路径在概念上是有意义的。可以使用 bn.fit 函数提取参数、拟合值和残差,还可以使用其他诊断图、交叉验证和新数据的预测。
我们不会深入探讨这些模型的细节,只是说应该将它们放在工具箱中。如果一个人真的处于更具探索性的情况下,他们通常会提供比SEM工具更适合这种情况的方法,而我遇到的没有一个工具非常强烈地考虑了预测能力。贝叶斯网络的发现过程也可以很有趣。即使一个人有很强的理论,自然总是比我们更聪明,你可能会发现一些有趣的东西。另请参阅 bnpa、autoSEM 和 regsem 软件包以了解更多信息。
无序图
ahhhhhhhhhhhhhhhhhhh not going to translate it
总结
图形模型是制定和可视化统计模型的一般方法。所有统计模型都可以在此框架内开发。结构化因果模型提供了一种使用图形模型来假设因果思维的方法,而结构方程模型可以被视为其中的子集。SEM中的路径分析是一种理论动机的图形模型,仅涉及观察到的变量。这些模型可能包括间接效应和感兴趣的多个结果,并且可以被视为更熟悉的回归模型到此类设置的扩展。但是,路径分析只是许多学科中广泛使用的广泛图形建模工具之一,其中任何一个都可能对特定的数据情况有用。
看不懂,不翻译了。 ↩︎