vlambda博客
学习文章列表

R语言验证性因子分析


  • 安装

  • 模型语法

  • 示例:验证性因子分析(CFA)

    • 建立模型

    • 拟合模型fit

    • 统计拟合情况

  • 用lavaan包进行cfa分析总结


cfa是验证性因子分析的缩写,经常用于检验问卷的效度。流行于经管社科类学科,常见的可以实现该功能的商业软件有IBM的SPSS软件的AMOS模块,Mplus,LISREL等。软件简单易用菜单化操作同时作为收费软件价格昂贵。

通过R语言相关包同样可以实现功能,而且不必安装过100M的软件占用计算机内存。免费,开源,功能强大。也可以通过编程实现自己的想法提高科研效率。

使用商用软件对输出结果负责,开源软件则是自己对自己负责

安装

install.package('lavaan')

library(lavaan)

提示上述文字,则安装成功

模型语法

模型用于描述要被估计的模型信息

主要有四种格式:

formula type operator mnemonic
latent vatiable definition =~ is measured by
regression ~ is regressed on
(residual)(co)variance ~~ is correlated with(方差左右变量相同,协方差不同)
intercept ~1 intercept(截距)

示例:

myModel <- '
            # regressions
              y1 + y2 ~ f1 + f2 + x1 + x2
                   f1 ~ f2 + f3            
                   f2 ~ f3 + x1 + x2
            
            # latent variable definition
              f1 =~ y1 + y2 + y3
              f2 =~ y4 + y5 + y6
              f3 =~ y7 + y8 + y9 + y10
            
            # variances and covariances
              y1 ~~ y1 
              y1 ~~ y2 
              f1 ~~ f2
            
            # intercepts
              y1 ~ 1
              f1 ~ 1
          '

注意标点符号 ' '

如果要拟合的模型比较长,可以用以lav为扩展名的文本文件保存载入。

myModel <- readLines('/mydirPath/myModel.lav')

文件需要保存在绝对路径中

示例:验证性因子分析(CFA)

数据集HolzingerSwineford1939

可以在前面加?查看数据详情

建立模型

HS.model <- 'visual  =~ x1 + x2 + x3
textual =~ x4 + x5 + x6
speed =~ x7 + x8 + x9'

拟合模型fit

fit <- cfa(HS.model,data = HolzingerSwineford1939)

统计拟合情况

输出结果与SEM模型商用软件类似

summary(fit,fit.measures=TRUE)
lavaan 0.6-5 ended normally after 35 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of free parameters                         21
                                                      
  Number of observations                           301
                                                      
Model Test User Model:
                                                      
  Test statistic                                85.306
  Degrees of freedom                                24
  P-value (Chi-square)                           0.000

Model Test Baseline Model:

  Test statistic                               918.852
  Degrees of freedom                                36
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.931
  Tucker-Lewis Index (TLI)                       0.896

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)              -3737.745
  Loglikelihood unrestricted model (H1)      -3695.092
                                                      
  Akaike (AIC)                                7517.490
  Bayesian (BIC)                              7595.339
  Sample-size adjusted Bayesian (BIC)         7528.739

Root Mean Square Error of Approximation:

  RMSEA                                          0.092
  90 Percent confidence interval - lower         0.071
  90 Percent confidence interval - upper         0.114
  P-value RMSEA <= 0.05                          0.001

Standardized Root Mean Square Residual:

  SRMR                                           0.065

Parameter Estimates:

  Information                                 Expected
  Information saturated (h1) model          Structured
  Standard errors                             Standard

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)
  visual =~                                           
    x1                1.000                           
    x2                0.554    0.100    5.554    0.000
    x3                0.729    0.109    6.685    0.000
  textual =~                                          
    x4                1.000                           
    x5                1.113    0.065   17.014    0.000
    x6                0.926    0.055   16.703    0.000
  speed =~                                            
    x7                1.000                           
    x8                1.180    0.165    7.152    0.000
    x9                1.082    0.151    7.155    0.000

Covariances:
                   Estimate  Std.Err  z-value  P(>|z|)
  visual ~~                                           
    textual           0.408    0.074    5.552    0.000
    speed             0.262    0.056    4.660    0.000
  textual ~~                                          
    speed             0.173    0.049    3.518    0.000

Variances:
                   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.000
    visual            0.809    0.145    5.564    0.000
    textual           0.979    0.112    8.737    0.000
    speed             0.384    0.086    4.451    0.000

输出结果依次为:

前六行:

  • 显示lavaan包版本数
  • 是否lavaan包常规汇总,需要多少指标
  • 被有效用于建模的样本数量
  • 用于获得参数值的模型估计方法(如ML,极大似然值)
  • 模型test统计、自由度、P值

其次为拟合结果:只有选择fit.measures=TRUE才会显示

  • 开始于 Model test baseline model
  • 终止于 SRMR

最后为参数估计:

  • 开始于 标准差信息
  • 接下来 参数信息
  • 潜变量,协方差与方差
    • 第一列为估计
    • 第二列为标准误
    • 第三列为Z值(Wald检验)
    • 最后列为P值:用于验证假设

用lavaan包进行cfa分析总结

这个示例阐释了lavaan工作流观点:

  1. 建立模型
  2. 拟合模型: cfa(), sem(), growth(),或者非标准模型用 lavaan()函数拟合,不能与前三者一样自动拟合
  3. 汇总拟合信息