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工作流观点:
-
建立模型 -
拟合模型: cfa()
,sem()
,growth()
,或者非标准模型用lavaan()
函数拟合,不能与前三者一样自动拟合 -
汇总拟合信息