基于R语言的结构方程:lavaan简明教程 [中文翻译版]

编程入门 行业动态 更新时间:2024-10-28 20:22:26

基于R语言的结构方程:lavaan<a href=https://www.elefans.com/category/jswz/34/1753864.html style=简明教程 [中文翻译版]"/>

基于R语言的结构方程:lavaan简明教程 [中文翻译版]

lavaan简明教程 [中文翻译版]

译者注:此文档原作者为比利时Ghent大学的Yves Rosseel博士,lavaan亦为其开发,完全开源、免费。我在学习的时候顺手翻译了一下,向Yves的开源精神致敬。此翻译因偷懒部分删减,但也有增加,有错误请留言

「转载请注明出处」


目录

lavaan简明教程 [中文翻译版]
目录
摘要

  1. 在开始之前
  2. 安装lavaan包
  3. 模型语法
  4. 例1:验证性因子分析(CFA)
  5. 例2:结构方程(SEM)
  6. 更多关于语法的内容
    6.1 固定参数
    6.2 初值
    6.3 参数标签
    6.4 修改器
    6.5 简单相等约束
    6.6 非线性相等和不相等约束
  7. 引入平均值
  8. 结构方程的多组分析
    8.1 在部分组中固定参数
    8.2 约束一个参数使其在各组中相等
    8.3 约束一组参数使其在各组中相等
    8.4 测量不变性
  9. 增长曲线模型
  10. 使用分类变量
  11. 将协方差矩阵作为输入
  12. 估计方法,标准误差和缺失值
    12.1 估计方法
    12.2 最大似然估计
    12.3 缺失值
  13. 间接效应和中介分析
  14. 修正指标
  15. 从拟合方程中提取信息

摘要

此教程首先介绍lavaan的基本组成部分:模型语法,拟合方程(CFA, SEM和growth),用来呈现结果的主要函数(summary, coef, fitted, inspect);
然后提供两个实例;
最后再讨论一些重要话题:均值结构模型(meanstructures),多组模型(multiple groups),增长曲线模型(growth curve models),中介分析(mediation analysis),分类数据(categorial data)等。


1. 在开始之前

在开始之前,有以下几点需要注意:

  • lavaan包需要安装 3.0.0或更新版本的R。
  • lavaan包仍处于未完成阶段,目前尚未实现的功能有:对多层数据的支持,对离散潜变量的支持,贝叶斯估计。
  • 虽然目前是测试版,但是结果精确,语法成熟,可以放心使用。
  • lavaan包对R语言预备知识要求很低。
  • 此教程不等于参考手册,相关文档正在准备。
  • lavaan包是完全免费开源的软件,不做任何承诺。
  • 发现bug,到 / 加组沟通。

2. 安装lavaan包

启动R,并输入:

install.packages("lavaan", dependencies = TRUE)  # 安装lavaan包
library(lavaan)   # 载入lavaan包

出现以下提示,表示载入成功。


3. 模型语法

lavaan包的核心是描述整个模型的“模型语法”。这部分简单介绍语法,更多细节在接下来的示例中可见。

R环境下的回归方程有如下形式:

y ~ x1 + x2 + x3 + x4  # ~左边为因变量y

在lavaan中,一个典型模型是一个回归方程组,其中可以包含潜变量,例如:

y ~ f1 + f2 + x1 + x2
f1 ~ f2 + f3
f2 ~ f3 + x1 + x2

我们必须通过指示符=~(measured by)来“定义”潜变量。例如,通过以下方式来定义潜变量f1, f2和f3:

f1 =~ y1 + y2 + y3
f2 =~ y4 + y5 + y6
f3 =~ y7 + y8 + y9 + y10

方差和协方差表示如下:

y1 ~~ y1 # 方差
y1 ~~ y2 # 协方差
f1 ~~ f2 # 协方差

只有截距项的回归方程表达如下:

y1 ~ 1
f1 ~ 1

以上4种公式种类(~, ~~, =~, ~ 1)组合成完整的模型语法,用单引号表示如下:

myModel <- ' # 主要回归方程y1 + y2 ~ f1 + f2 + x1 + x2f1 ~ f2 + f3f2 ~ f3 + x1 + x2# 定义潜变量f1 =~ y1 + y2 + y3f2 =~ y4 + y5 + y6f3 =~ y7 + y8 + y9 + y10# 方差和协方差y1 ~~ y1y1 ~~ y2f1 ~~ f2# 截距项y1 ~ 1f1 ~ 1

如果模型很长,可以将模型(单引号之间的内容)储存入myModel.lav的txt文档中,用以下命令读取:

myModel <- readLines("/mydirectory/myModel.lav")  # 这里需要绝对路径

4. 例1:验证性因子分析(CFA)

lavaan包提供了一个内置数据集叫做HolzingerSwineford,输入以下命令查看数据集描述:

?HolzingerSwineford

数据形式是这样的:

此数据集包含了来自两个学校的七、八年级孩子的智力能力测验分数。在我们的版本里,只包含原有26个测试中的9个,这9个测试分数作为9个测量变量分别对应3个潜变量:

  • 视觉因子(visual)对应x1,x2,x3
  • 文本因子(textual)对应x4,x5,x6
  • 速度因子(speed)对应x7,x8,x9

模型如下图所示:

建立模型代码如下:

HS.model <- ' visual  =~ x1 + x2 + x3textual =~ x4 + x5 + x6speed   =~ x7 + x8 + x9'
# 然后拟合cfa函数,第一个参数是模型,第二个参数是数据集
fit <- cfa(HS.model, data = HolzingerSwineford1939)
# 再通过summary函数给出结果
summary(fit, fit.measure = TRUE)

结果展示如下:

# 前6行为头部,包含版本号,收敛情况,迭代次数,观测数,用来计算参数的估计量,模型检验统计量,自由度和相关的p值
lavaan (0.5-23.1097) converged normally after  35 iterations Number of observations                           301Estimator                                         MLMinimum Function Test Statistic               85.306Degrees of freedom                                24P-value (Chi-square)                           0.000#参数fit.measure = TRUE会显示下面从model test baseline model到SRMR的部分
Model test baseline model:Minimum Function Test Statistic              918.852Degrees of freedom                                36P-value                                        0.000User model versus baseline model:Comparative Fit Index (CFI)                    0.931Tucker-Lewis Index (TLI)                       0.896Loglikelihood and Information Criteria:Loglikelihood user model (H0)              -3737.745Loglikelihood unrestricted model (H1)      -3695.092Number of free parameters                         21Akaike (AIC)                                7517.490Bayesian (BIC)                              7595.339Sample-size adjusted Bayesian (BIC)         7528.739Root Mean Square Error of Approximation:RMSEA                                          0.09290 Percent Confidence Interval          0.071  0.114P-value RMSEA <= 0.05                          0.001Standardized Root Mean Square Residual:SRMR                                           0.065#以下是参数估计部分
Parameter Estimates:Information                                 ExpectedStandard Errors                             StandardLatent Variables:Estimate  Std.Err  z-value  P(>|z|)visual =~                                           x1                1.000                           x2                0.554    0.100    5.554    0.000x3                0.729    0.109    6.685    0.000textual =~                                          x4                1.000                           x5                1.113    0.065   17.014    0.000x6                0.926    0.055   16.703    0.000speed =~                                            x7                1.000                           x8                1.180    0.165    7.152    0.000x9                1.082    0.151    7.155    0.000Covariances:Estimate  Std.Err  z-value  P(>|z|)visual ~~                                           textual           0.408    0.074    5.552    0.000speed             0.262    0.056    4.660    0.000textual ~~                                          speed             0.173    0.049    3.518    0.000Variances:Estimate  Std.Err  z-value  P(>|z|).x1                0.549    0.114    4.833    0.000.x2                1.134    0.102   11.146    0.000.x3                0.844    0.091    9.317    0.000.x4                0.371    0.048    7.779    0.000.x5                0.446    0.058    7.642    0.000.x6                0.356    0.043    8.277    0.000.x7                0.799    0.081    9.823    0.000.x8                0.488    0.074    6.573    0.000.x9                0.566    0.071    8.003    0.000visual            0.809    0.145    5.564    0.000textual           0.979    0.112    8.737    0.000speed             0.384    0.086    4.451    0.000

例1是一个定义模型、拟合模型、提取结果的过程。


5. 例2:结构方程(SEM)

例2中我们使用名为PoliticalDemocracy的数据集,图示如下:

数据形式大致如下(只显示前三行):

变量含义变量含义
ind601960年的非民主情况y51965年专家对出版物自由的评价
dem601960年的民主情况y61965年的反对党派自由
dem651965年的民主情况y71965年选举的公平性
y11960年专家对出版物自由的评价y81965年选举产生的立法机关效率
y21960年的反对党派自由x11960年每单位资本GNP
y31960年选举的公平性x21960年每单位资本的物质能量消费
y41960年选举产生的立法机关效率x31960年工业劳动力占比

模型如下:

model <- '# measurement model 测量模型ind60 =~ x1 + x2 + x3dem60 =~ y1 + y2 + y3 + y4dem65 =~ y5 + y6 + y7 + y8# regressions 回归dem60 ~ ind60dem65 ~ ind60 + dem60# residual correlations 残余相关y1 ~~ y5y2 ~~ y4 + y6y3 ~~ y7y4 ~~ y8y6 ~~ y8'# 拟合SEM
fit <- sem(model, data = PoliticalDemocracy)# 提取结果
summary(fit, standardized = TRUE)  #与上例不同,这里我们忽略了参数fit.measure = TRUE,用standardized = TRUE来标准化参数值)

结果如下:

lavaan (0.5-23.1097) converged norma

更多推荐

基于R语言的结构方程:lavaan简明教程 [中文翻译版]

本文发布于:2024-02-10 21:03:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1677276.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:简明   方程   中文翻译   语言   结构

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!