• 本文大部分内容来自油管教程和厚杰泰的《结构方程模型及其应用》

一、基本概念

  • 《结构方程模型及其应用》里叙述:结构方程模型是验证性因子模型和潜变量(latent variable)因果模型(叫结构方程会不会更好一点?)的结合:
种类 作用
测量方程 measurement equation 描述潜变量(因子)与指标(可测量的变量)的关系
结构方程 structural equation 描述潜变量(因子)之间的关系
  • 潜变量的概念:与可观察变量相对,是不可直接观察但是通过观察到的其他变量推断(通过数学模型)的变量(直接测量),有的地方叫因子

  • 油管教程里提出的几个容易混淆的概念:

  • 回归模型:$y = \beta_1 x_1 + \beta_2 x_2 + \epsilon$
  • 路径模型:$z = \beta_1 x + \epsilon_1, \quad y = \beta_2 z + \epsilon_2$
    • 注意这里路径模型和回归模型是不一样的,$x$预测$z$,$z$预测$y$,形成了一条链chain,这就有结构的意味了
  • 因子模型:

    • 变量之间相互影响,但是这种相互影响的结构是没办法直接观察到,通常会考虑correlation
    • 所以会使用一个共同的影响因素$F$,来模拟这种相互关系
  • 油管教程叙述:结构方程模型,综合了上面三种模型。在侯的书里,所有的公式都是线性回归的方式展示出来的,所以他没有提到回归模型。

例子1

  • 下面图来自油管的教程
  • 左图就是我们设想的模型;中间图的红框,就是测量模型(因子分析);右图的红框,就是结构模型,或者叫路径模型

二、模型假设

  • 测量模型:$\mathrm{x} = \Lambda_\mathrm{x} \times \xi + \delta$,$\mathrm{y} = \Lambda_\mathrm{y}\ \eta + \epsilon$

  • 结构模型:$\eta = B \times \eta + \Gamma \times \xi +\zeta$

  • 符号解释:

    • $x$为外源指标,y是内生指标,都是可以测量得到的变量。外源只起自变量作用。虽然分不分没啥区别。。
    • $\Lambda$为系数矩阵(参数矩阵),也叫因子负荷矩阵
    • $\delta$、$\epsilon$和$\zeta$为误差项
  • 假设$\boldsymbol{E}(\epsilon) = 0$,$\boldsymbol{E}(\delta) = 0$,$\boldsymbol{cov}(\xi_i, \delta_j) = 0$,$\boldsymbol{cov}(\delta_i, \delta_j) = 0$
    • 注意,$\boldsymbol{cov}(\delta_i, \delta_j) = 0$的假设不一定是必须的
  • $\boldsymbol{E}(\zeta) = 0$

例子2

  • 下面为CFA的例子。这里我没有区别$x$和$y$,统一使用了$x$:
  • 其中假定
  • 参数为$\lambda_{11}, \lambda_{21}, \lambda_{31}, \lambda_{42}, \lambda_{52}, \boldsymbol{\phi}_{11}=\operatorname{var}\left(\xi_{1}\right),\ \boldsymbol{\phi}_{22}=\operatorname{var}\left(\xi_{2}\right), \boldsymbol{\phi}_{21}=\operatorname{cov}\left(\xi_{2}, \boldsymbol{\xi}_{1}\right),\ \theta_{i i}=\operatorname{var}\left(\delta_{i}\right)$

  • 矩阵形式为$x=\Lambda_{x} \xi+\delta$

  • 我们写出$\operatorname{var}(\mathrm{X})$的协方差矩阵,从上述模型推导出的协方差矩阵。只写下三角部分
  • 当有样本时,用样本的协方差矩阵代替$\mathbf{\Sigma}$,与$\boldsymbol{\Sigma}(\boldsymbol{\theta})$的元素一一对应,就可以解出参数。
1
2
3
4
5
# R代码
library(lavvan)
model = 'eplison_1 =~ x_1 + x_2 + x_3
eplison_2 =~ x_3 + x_4'
fit = cfa(model, data)

例子3

  • 这里举一个路径模型的例子,为了方便,写成矩阵的形式
  • 假设:$\mathrm{E}(\zeta) = \mathrm{0},\quad \mathrm{cov}(x, \zeta) = \mathrm{0}$
  • 总体的真实的协方差矩阵为$\Sigma$,根据上面模型推出来的协方差矩阵为$\Sigma(\theta)$

  • 做变换:$y=(I-B)^{-1}(\Gamma x+\zeta)=\tilde{B}(\Gamma x+\zeta)$,令$\tilde{\boldsymbol{B}}=(\boldsymbol{I}-\boldsymbol{B})^{-1}$、$\boldsymbol{\Sigma}_{x x}(\boldsymbol{\theta}) = \boldsymbol{\Phi}$, 则有

  • 如果这个模型是真的,那么有$\boldsymbol{\Sigma}=\boldsymbol{\Sigma}(\boldsymbol{\theta})$,前者用样本协方差矩阵来估计,就可以求得参数了。

三、R包

1
2
3
=~: 用来定义潜变量,用在cfa模型上
~ : 用来定义回归关系方程,用在路径分析上
~~: 用来定义协方差,用于限定一些参数

例子4

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
model <- '
# latent variables
ind60 =~ x1 + x2 + x3
dem60 =~ y1 + y2 + y3 + y4
dem65 =~ y5 + y6 + y7 + y8
# regressions
dem60 ~ ind60
dem65 ~ ind60 + dem60
# residual covariances
y1 ~~ y5
y2 ~~ y4 + y6
y3 ~~ y7
y4 ~~ y8
y6 ~~ y8
'
fit <- sem(model,data=PoliticalDemocracy)
summary(fit)
# 查看拟合效果
fitMeasures(fit)
# 画图
library(semPlot)
semPaths(fit)