第8回(12月10日) Task Check and Weekly Assignment
To Do □ 多母集団同時分析をやってみる
Assignment
□ lavaanパッケージに含まれるサンプルデータ,Holizinger-Swineford1939をもちいて, 学校school別の多母集団同時分析モデルを実行しなさい。
今回は講義の中で触れられなかったいくつかのことを,補足的に解説していきます。
探索的因子分析をすると,潜在変数がどこにどれぐらいあるか便利だよ,という説明をしました。 psychパッケージのfa関数を使ってやる方法については既に説明した通りです。 少し復習してみましょう。今回はpsychパッケージの持つbfiデータを例に話をします。
library(psych)
data(bfi)
sample.bfi <- bfi[1:25]
これを探索的因子分析にかけます。5因子構造を仮定しましょう。
result.fa <- fa(sample.bfi, nfactors = 5, fm = "ml", rotate = "promax")
print(result.fa, sort = T, digit = 3)
## Factor Analysis using method = ml
## Call: fa(r = sample.bfi, nfactors = 5, rotate = "promax", fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
## item ML2 ML1 ML3 ML5 ML4 h2 u2 com
## N1 16 0.897 0.174 0.026 -0.158 -0.062 0.705 0.295 1.95
## N2 17 0.858 0.115 0.038 -0.147 -0.003 0.657 0.343 1.06
## N3 18 0.685 -0.062 -0.034 0.058 0.021 0.525 0.475 1.15
## N5 20 0.438 -0.196 0.004 0.195 -0.137 0.338 0.662 1.78
## N4 19 0.405 -0.373 -0.126 0.080 0.092 0.478 0.522 1.57
## E2 12 0.024 -0.718 0.028 -0.058 -0.040 0.548 0.452 1.21
## E1 11 -0.126 -0.638 0.149 -0.066 -0.085 0.369 0.631 1.21
## E4 14 0.026 0.604 -0.037 0.322 -0.074 0.519 0.481 1.15
## E5 15 0.218 0.457 0.245 0.041 0.195 0.405 0.595 1.08
## E3 13 0.079 0.442 -0.064 0.275 0.291 0.441 0.559 1.27
## C2 7 0.133 -0.129 0.662 0.087 0.051 0.427 0.573 1.25
## C4 9 0.110 0.012 -0.657 0.068 -0.017 0.465 0.535 1.02
## C3 8 0.040 -0.097 0.586 0.092 -0.072 0.317 0.683 2.62
## C5 10 0.131 -0.118 -0.576 0.021 0.109 0.435 0.565 1.57
## C1 6 0.068 -0.062 0.546 -0.012 0.148 0.321 0.679 2.49
## A3 3 -0.042 0.169 0.001 0.646 0.022 0.511 0.489 1.15
## A2 2 -0.032 0.067 0.071 0.586 0.018 0.401 0.599 1.10
## A5 5 -0.141 0.256 -0.042 0.562 0.042 0.483 0.517 1.04
## A4 4 -0.066 0.071 0.191 0.439 -0.159 0.286 0.714 2.39
## A1 1 0.227 0.117 0.050 -0.373 -0.038 0.150 0.850 2.05
## O3 23 0.021 0.184 -0.033 0.084 0.620 0.473 0.527 1.10
## O1 21 0.006 0.112 0.032 0.023 0.524 0.324 0.676 1.75
## O5 25 0.111 0.055 -0.031 0.080 -0.522 0.274 0.726 1.22
## O2 22 0.161 0.035 -0.086 0.188 -0.442 0.244 0.756 2.37
## O4 24 0.066 -0.310 -0.033 0.159 0.385 0.257 0.743 1.17
##
## ML2 ML1 ML3 ML5 ML4
## SS loadings 2.552 2.312 1.992 1.930 1.566
## Proportion Var 0.102 0.092 0.080 0.077 0.063
## Cumulative Var 0.102 0.195 0.274 0.351 0.414
## Proportion Explained 0.246 0.223 0.192 0.186 0.151
## Cumulative Proportion 0.246 0.470 0.662 0.849 1.000
##
## With factor correlations of
## ML2 ML1 ML3 ML5 ML4
## ML2 1.000 -0.370 -0.259 0.066 0.006
## ML1 -0.370 1.000 0.360 0.246 0.151
## ML3 -0.259 0.360 1.000 0.226 0.243
## ML5 0.066 0.246 0.226 1.000 0.209
## ML4 0.006 0.151 0.243 0.209 1.000
##
## Mean item complexity = 1.5
## Test of the hypothesis that 5 factors are sufficient.
##
## The degrees of freedom for the null model are 300 and the objective function was 7.228 with Chi Square of 20164
## The degrees of freedom for the model are 185 and the objective function was 0.628
##
## The root mean square of the residuals (RMSR) is 0.03
## The df corrected root mean square of the residuals is 0.054
##
## The harmonic number of observations is 2762 with the empirical chi square 1475 with prob < 1.29e-199
## The total number of observations was 2800 with MLE Chi Square = 1750 with prob < 1.39e-252
##
## Tucker Lewis Index of factoring reliability = 0.8721
## RMSEA index = 0.0551 and the 90 % confidence intervals are 0.0526 0.0573
## BIC = 281.5
## Fit based upon off diagonal values = 0.979
## Measures of factor score adequacy
## ML2 ML1 ML3 ML5
## Correlation of scores with factors 0.932 0.899 0.884 0.869
## Multiple R square of scores with factors 0.868 0.807 0.781 0.756
## Minimum correlation of possible factor scores 0.736 0.615 0.562 0.511
## ML4
## Correlation of scores with factors 0.842
## Multiple R square of scores with factors 0.709
## Minimum correlation of possible factor scores 0.418
各項目から各因子が構成されている美しい作り(単純構造)です。これをSEMで書き直してみます。
library(lavaan)
## This is lavaan 0.5-15
## lavaan is BETA software! Please report any bugs.
bfi.model <- "
N =~ N1+N2+N3+N4+N5
E =~ E1+E2+E3+E4+E5
C =~ C1+C2+C3+C4+C5
A =~ A1+A2+A3+A4+A5
O =~ O1+O2+O3+O4+O5
"
result.sem <- sem(bfi.model, data = sample.bfi)
summary(result.sem, standardized = TRUE)
## lavaan (0.5-15) converged normally after 55 iterations
##
## Used Total
## Number of observations 2436 2800
##
## Estimator ML
## Minimum Function Test Statistic 4165.467
## Degrees of freedom 265
## P-value (Chi-square) 0.000
##
## Parameter estimates:
##
## Information Expected
## Standard Errors Standard
##
## Estimate Std.err Z-value P(>|z|) Std.lv Std.all
## Latent variables:
## N =~
## N1 1.000 1.300 0.825
## N2 0.947 0.024 39.899 0.000 1.230 0.803
## N3 0.884 0.025 35.919 0.000 1.149 0.721
## N4 0.692 0.025 27.753 0.000 0.899 0.573
## N5 0.628 0.026 24.027 0.000 0.816 0.503
## E =~
## E1 1.000 0.920 0.564
## E2 1.226 0.051 23.899 0.000 1.128 0.699
## E3 -0.921 0.041 -22.431 0.000 -0.847 -0.627
## E4 -1.121 0.047 -23.977 0.000 -1.031 -0.703
## E5 -0.808 0.039 -20.648 0.000 -0.743 -0.553
## C =~
## C1 1.000 0.680 0.551
## C2 1.148 0.057 20.152 0.000 0.781 0.592
## C3 1.036 0.054 19.172 0.000 0.705 0.546
## C4 -1.421 0.065 -21.924 0.000 -0.967 -0.702
## C5 -1.489 0.072 -20.694 0.000 -1.012 -0.620
## A =~
## A1 1.000 0.484 0.344
## A2 -1.579 0.108 -14.650 0.000 -0.764 -0.648
## A3 -2.030 0.134 -15.093 0.000 -0.983 -0.749
## A4 -1.564 0.115 -13.616 0.000 -0.757 -0.510
## A5 -1.804 0.121 -14.852 0.000 -0.873 -0.687
## O =~
## O1 1.000 0.635 0.564
## O2 -1.020 0.068 -14.962 0.000 -0.648 -0.418
## O3 1.373 0.072 18.942 0.000 0.872 0.724
## O4 0.437 0.048 9.160 0.000 0.277 0.233
## O5 -0.960 0.060 -16.056 0.000 -0.610 -0.461
##
## Covariances:
## N ~~
## E 0.292 0.032 9.131 0.000 0.244 0.244
## C -0.250 0.025 -10.117 0.000 -0.283 -0.283
## A 0.141 0.018 7.712 0.000 0.223 0.223
## O -0.093 0.022 -4.138 0.000 -0.112 -0.112
## E ~~
## C -0.224 0.020 -11.121 0.000 -0.357 -0.357
## A 0.304 0.025 12.293 0.000 0.683 0.683
## O -0.265 0.021 -12.347 0.000 -0.453 -0.453
## C ~~
## A -0.110 0.012 -9.254 0.000 -0.334 -0.334
## O 0.130 0.014 9.190 0.000 0.301 0.301
## A ~~
## O -0.093 0.011 -8.446 0.000 -0.303 -0.303
##
## Variances:
## N1 0.793 0.037 0.793 0.320
## N2 0.836 0.036 0.836 0.356
## N3 1.222 0.043 1.222 0.481
## N4 1.654 0.052 1.654 0.672
## N5 1.969 0.060 1.969 0.747
## E1 1.814 0.058 1.814 0.682
## E2 1.332 0.049 1.332 0.512
## E3 1.108 0.038 1.108 0.607
## E4 1.088 0.041 1.088 0.506
## E5 1.251 0.040 1.251 0.694
## C1 1.063 0.035 1.063 0.697
## C2 1.130 0.039 1.130 0.650
## C3 1.170 0.039 1.170 0.702
## C4 0.960 0.040 0.960 0.507
## C5 1.640 0.059 1.640 0.615
## A1 1.745 0.052 1.745 0.882
## A2 0.807 0.028 0.807 0.580
## A3 0.754 0.032 0.754 0.438
## A4 1.632 0.051 1.632 0.740
## A5 0.852 0.032 0.852 0.528
## O1 0.865 0.032 0.865 0.682
## O2 1.990 0.063 1.990 0.826
## O3 0.691 0.039 0.691 0.476
## O4 1.346 0.040 1.346 0.946
## O5 1.380 0.045 1.380 0.788
## N 1.689 0.073 1.000 1.000
## E 0.846 0.062 1.000 1.000
## C 0.463 0.036 1.000 1.000
## A 0.234 0.030 1.000 1.000
## O 0.404 0.033 1.000 1.000
似ているようで,ちょっと数値が違いますね。これは,実は探索的因子分析モデルは, +全ての項目に対して全ての因子がパスを出している +因子の平均は0,分散は1に標準化されている +全ての因子間相関が想定されている(Varimax回転のときは全ての因子間相関は0) という違いがあるからです。また,因子分析は相関行列から計算を始めていますが,SEMは一般的に分散共分散行列から計算を始めるという違いもあります。
SEMで書き直したモデルも因子分析ではありますが,こうした制限や関係の違いから「確認的因子分析」とか「検証的因子分析」と呼んで,fa関数でやる因子分析(探索的因子分析)と区別することがあります。
次のSEMモデルを実行してみましょう。
bfi.model2 <- "
N =~ N1+N2+N3
"
result.sem <- sem(bfi.model2, data = sample.bfi)
summary(result.sem, standardized = TRUE)
## lavaan (0.5-15) converged normally after 22 iterations
##
## Used Total
## Number of observations 2748 2800
##
## Estimator ML
## Minimum Function Test Statistic 0.000
## Degrees of freedom 0
## P-value (Chi-square) 0.000
##
## Parameter estimates:
##
## Information Expected
## Standard Errors Standard
##
## Estimate Std.err Z-value P(>|z|) Std.lv Std.all
## Latent variables:
## N =~
## N1 1.000 1.332 0.846
## N2 0.957 0.025 37.774 0.000 1.275 0.835
## N3 0.789 0.024 33.407 0.000 1.050 0.656
##
## Variances:
## N1 0.702 0.043 0.702 0.284
## N2 0.705 0.040 0.705 0.303
## N3 1.458 0.046 1.458 0.569
## N 1.774 0.075 1.000 1.000
最初のモデルを簡略化したものです。ではさらに簡略化してみましょう。
bfi.model3 <- "
N =~ N1+N2
"
result.sem <- sem(bfi.model3, data = sample.bfi)
## Warning: lavaan WARNING: could not compute standard errors!
summary(result.sem, standardized = TRUE)
## lavaan (0.5-15) converged normally after 17 iterations
##
## Used Total
## Number of observations 2757 2800
##
## Estimator ML
## Minimum Function Test Statistic NA
## Degrees of freedom -1
## Error: 引数の長さが 0 です
今度はエラーが出てしまいました。 この失敗したモデルは,ふたつの変数から一つの因子を取り出そう,というものです。因子というのは目に見えないものですから(潜在変数),目に見える変数(観測変数)から情報をもらって構成するのですが,ふたつの変数から一つの因子を取り出すには情報不足,ということからくるエラーです。もちろん,一つの項目から一つの因子を取り出すのは不可能です。一つの因子を取り出すには,最低でも三つの項目が必要なのです。
潜在変数をおくことができるかどうか,係数を計算できるかどうか,の背後には,方程式を解くのに十分な情報が与えられているかどうか,が鍵となる問題が潜んでいるのです。こうした問題のことを識別問題といい,今回のモデルは「識別不能」であったといいます。
識別問題がどのようにして生じているかについては,専門書に譲りますが,エラーが出たときには「モデルを解くにはヒントが少ないのかもしれない」と考えてみましょう。与えるヒントとして,変数を増やすだけではなく,係数を固定してやる,というのも一つです。 次に挙げるのは,潜在変数の分散を1に固定して(ヒントを増やして)答えを出した例です(負の分散が出ているので,推奨される方法ではありません)。
bfi.model3s <- "
N =~ N1+N2
N ~~ 1*N
"
result.sem <- sem(bfi.model3s, data = sample.bfi)
## Warning: lavaan WARNING: some estimated variances are negative
## Warning: lavaan WARNING: residual covariance matrix is not positive definite; use inspect(fit,"cov.ov") to investigate.
summary(result.sem, standardized = TRUE)
## lavaan (0.5-15) converged normally after 16 iterations
##
## Used Total
## Number of observations 2757 2800
##
## Estimator ML
## Minimum Function Test Statistic 0.000
## Degrees of freedom 0
## P-value (Chi-square) 0.000
##
## Parameter estimates:
##
## Information Expected
## Standard Errors Standard
##
## Estimate Std.err Z-value P(>|z|) Std.lv Std.all
## Latent variables:
## N =~
## N1 1.000 1.000 0.636
## N2 1.696 0.056 30.311 0.000 1.696 1.112
##
## Variances:
## N 1.000 1.000 1.000
## N1 1.472 0.067 1.472 0.596
## N2 -0.549 0.143 -0.549 -0.236
構造方程式モデリングでは,現象に対してモデルを当てはめる,という考え方を練習してきました。 ここではその発展系として,,一つのモデルが複数の現象に当てはまるのではないか,ということを考えてみたいと思います。
たとえば,性格の5次元モデルも,男性と女性では違いがあるのではないでしょうか?同じ5次元(5因子)であったとしても,パス係数(負荷量)が男女で違いがあるかもしれない,ということを考えます。
一つのモデルを,男性と女性という複数の集団に当てはめてその違いを見る,このやり方を多母集団同時分析,と言います。例を見てみましょう。
result.sem <- sem(bfi.model, data = bfi, group = "gender", meanstructure = FALSE)
summary(result.sem, standardized = TRUE, fit.measures = TRUE)
## lavaan (0.5-15) converged normally after 100 iterations
##
## Used Total
## Number of observations per group
## 1 805 919
## 2 1631 1881
##
## Estimator ML
## Minimum Function Test Statistic 4545.267
## Degrees of freedom 530
## P-value (Chi-square) 0.000
##
## Chi-square for each group:
##
## 1 1673.974
## 2 2871.293
##
## Model test baseline model:
##
## Minimum Function Test Statistic 18451.441
## Degrees of freedom 600
## P-value 0.000
##
## User model versus baseline model:
##
## Comparative Fit Index (CFI) 0.775
## Tucker-Lewis Index (TLI) 0.745
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -99576.868
## Loglikelihood unrestricted model (H1) -97304.234
##
## Number of free parameters 120
## Akaike (AIC) 199393.736
## Bayesian (BIC) 200089.509
## Sample-size adjusted Bayesian (BIC) 199708.241
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.079
## 90 Percent Confidence Interval 0.077 0.081
## P-value RMSEA <= 0.05 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.078
##
## Parameter estimates:
##
## Information Expected
## Standard Errors Standard
##
## Group 1 [1]:
##
## Estimate Std.err Z-value P(>|z|) Std.lv Std.all
## Latent variables:
## N =~
## N1 1.000 1.250 0.796
## N2 0.966 0.046 20.952 0.000 1.207 0.786
## N3 0.862 0.045 18.964 0.000 1.077 0.700
## N4 0.745 0.047 15.830 0.000 0.931 0.589
## N5 0.552 0.045 12.320 0.000 0.689 0.464
## E =~
## E1 1.000 0.976 0.586
## E2 1.215 0.081 14.933 0.000 1.187 0.729
## E3 -0.919 0.067 -13.811 0.000 -0.897 -0.644
## E4 -1.152 0.077 -15.003 0.000 -1.125 -0.736
## E5 -0.879 0.065 -13.544 0.000 -0.858 -0.625
## C =~
## C1 1.000 0.682 0.556
## C2 1.125 0.098 11.471 0.000 0.768 0.579
## C3 1.003 0.094 10.722 0.000 0.684 0.521
## C4 -1.430 0.114 -12.574 0.000 -0.976 -0.691
## C5 -1.527 0.127 -12.042 0.000 -1.042 -0.630
## A =~
## A1 1.000 0.449 0.315
## A2 -1.806 0.232 -7.799 0.000 -0.812 -0.639
## A3 -2.267 0.282 -8.052 0.000 -1.019 -0.764
## A4 -1.708 0.232 -7.374 0.000 -0.768 -0.516
## A5 -2.181 0.272 -8.015 0.000 -0.980 -0.739
## O =~
## O1 1.000 0.620 0.578
## O2 -0.984 0.120 -8.196 0.000 -0.610 -0.398
## O3 1.356 0.128 10.621 0.000 0.841 0.693
## O4 0.518 0.088 5.892 0.000 0.321 0.267
## O5 -1.036 0.111 -9.315 0.000 -0.642 -0.477
##
## Covariances:
## N ~~
## E 0.289 0.056 5.166 0.000 0.237 0.237
## C -0.266 0.043 -6.215 0.000 -0.312 -0.312
## A 0.108 0.028 3.869 0.000 0.192 0.192
## O -0.054 0.037 -1.458 0.145 -0.069 -0.069
## E ~~
## C -0.268 0.038 -7.061 0.000 -0.403 -0.403
## A 0.295 0.044 6.762 0.000 0.672 0.672
## O -0.221 0.035 -6.306 0.000 -0.364 -0.364
## C ~~
## A -0.089 0.019 -4.796 0.000 -0.290 -0.290
## O 0.135 0.025 5.485 0.000 0.319 0.319
## A ~~
## O -0.081 0.018 -4.636 0.000 -0.292 -0.292
##
## Variances:
## N1 0.900 0.069 0.900 0.366
## N2 0.901 0.067 0.901 0.382
## N3 1.205 0.074 1.205 0.510
## N4 1.636 0.091 1.636 0.654
## N5 1.737 0.091 1.737 0.785
## E1 1.826 0.102 1.826 0.657
## E2 1.238 0.081 1.238 0.468
## E3 1.137 0.066 1.137 0.586
## E4 1.073 0.071 1.073 0.459
## E5 1.146 0.066 1.146 0.609
## C1 1.039 0.061 1.039 0.691
## C2 1.168 0.070 1.168 0.665
## C3 1.254 0.071 1.254 0.728
## C4 1.040 0.074 1.040 0.522
## C5 1.648 0.105 1.648 0.603
## A1 1.840 0.094 1.840 0.901
## A2 0.957 0.057 0.957 0.592
## A3 0.739 0.056 0.739 0.416
## A4 1.621 0.088 1.621 0.733
## A5 0.800 0.056 0.800 0.454
## O1 0.768 0.051 0.768 0.666
## O2 1.976 0.108 1.976 0.841
## O3 0.765 0.069 0.765 0.520
## O4 1.344 0.070 1.344 0.929
## O5 1.404 0.082 1.404 0.773
## N 1.562 0.126 1.000 1.000
## E 0.953 0.114 1.000 1.000
## C 0.465 0.063 1.000 1.000
## A 0.202 0.049 1.000 1.000
## O 0.385 0.055 1.000 1.000
##
##
##
## Group 2 [2]:
##
## Estimate Std.err Z-value P(>|z|) Std.lv Std.all
## Latent variables:
## N =~
## N1 1.000 1.319 0.837
## N2 0.927 0.027 33.767 0.000 1.223 0.805
## N3 0.885 0.029 30.411 0.000 1.167 0.728
## N4 0.682 0.029 23.169 0.000 0.900 0.576
## N5 0.635 0.031 20.360 0.000 0.838 0.513
## E =~
## E1 1.000 0.859 0.539
## E2 1.273 0.070 18.267 0.000 1.093 0.682
## E3 -0.960 0.055 -17.358 0.000 -0.824 -0.620
## E4 -1.127 0.062 -18.218 0.000 -0.968 -0.678
## E5 -0.786 0.051 -15.331 0.000 -0.675 -0.510
## C =~
## C1 1.000 0.678 0.547
## C2 1.143 0.070 16.408 0.000 0.775 0.591
## C3 1.045 0.066 15.790 0.000 0.709 0.555
## C4 -1.414 0.079 -17.912 0.000 -0.958 -0.708
## C5 -1.467 0.087 -16.805 0.000 -0.994 -0.616
## A =~
## A1 1.000 0.451 0.330
## A2 -1.531 0.136 -11.294 0.000 -0.691 -0.629
## A3 -2.074 0.178 -11.630 0.000 -0.936 -0.731
## A4 -1.577 0.151 -10.452 0.000 -0.712 -0.485
## A5 -1.799 0.158 -11.413 0.000 -0.812 -0.659
## O =~
## O1 1.000 0.638 0.559
## O2 -1.000 0.082 -12.241 0.000 -0.638 -0.409
## O3 1.404 0.088 15.993 0.000 0.896 0.747
## O4 0.401 0.057 7.084 0.000 0.256 0.216
## O5 -0.904 0.070 -12.936 0.000 -0.577 -0.440
##
## Covariances:
## N ~~
## E 0.314 0.038 8.203 0.000 0.277 0.277
## C -0.263 0.031 -8.584 0.000 -0.294 -0.294
## A 0.174 0.023 7.389 0.000 0.291 0.291
## O -0.096 0.028 -3.488 0.000 -0.114 -0.114
## E ~~
## C -0.188 0.023 -8.330 0.000 -0.324 -0.324
## A 0.265 0.028 9.565 0.000 0.685 0.685
## O -0.292 0.027 -10.813 0.000 -0.532 -0.532
## C ~~
## A -0.104 0.014 -7.444 0.000 -0.341 -0.341
## O 0.132 0.017 7.617 0.000 0.304 0.304
## A ~~
## O -0.102 0.014 -7.384 0.000 -0.356 -0.356
##
## Variances:
## N1 0.746 0.043 0.746 0.300
## N2 0.812 0.042 0.812 0.352
## N3 1.209 0.052 1.209 0.470
## N4 1.632 0.062 1.632 0.668
## N5 1.960 0.073 1.960 0.736
## E1 1.803 0.071 1.803 0.710
## E2 1.375 0.062 1.375 0.535
## E3 1.085 0.045 1.085 0.615
## E4 1.100 0.049 1.100 0.540
## E5 1.296 0.050 1.296 0.740
## C1 1.076 0.044 1.076 0.701
## C2 1.120 0.047 1.120 0.651
## C3 1.131 0.046 1.131 0.692
## C4 0.914 0.047 0.914 0.499
## C5 1.616 0.070 1.616 0.620
## A1 1.672 0.061 1.672 0.891
## A2 0.729 0.031 0.729 0.604
## A3 0.762 0.040 0.762 0.465
## A4 1.646 0.063 1.646 0.765
## A5 0.858 0.038 0.858 0.566
## O1 0.896 0.039 0.896 0.688
## O2 2.027 0.077 2.027 0.833
## O3 0.636 0.046 0.636 0.442
## O4 1.344 0.048 1.344 0.953
## O5 1.384 0.054 1.384 0.806
## N 1.740 0.090 1.000 1.000
## E 0.737 0.070 1.000 1.000
## C 0.460 0.044 1.000 1.000
## A 0.204 0.034 1.000 1.000
## O 0.407 0.041 1.000 1.000
こうしてみると,男性と女性とで係数の大きさが少し異なっていることがわかります。なぜこのような違いが出るのか?ということを考えるのが研究の主たる目的になることもあります。
構造方程式モデリングはさらにいろいろ設定することが可能で,例えば負荷量を同じである,と制限することもできます。
result.sem <- sem(bfi.model, data = bfi, group = "gender", group.equal = "loadings",
meanstructure = TRUE)
summary(result.sem, standardized = TRUE, fit.measures = TRUE)
## lavaan (0.5-15) converged normally after 68 iterations
##
## Used Total
## Number of observations per group
## 1 805 919
## 2 1631 1881
##
## Estimator ML
## Minimum Function Test Statistic 4562.574
## Degrees of freedom 550
## P-value (Chi-square) 0.000
##
## Chi-square for each group:
##
## 1 1685.217
## 2 2877.357
##
## Model test baseline model:
##
## Minimum Function Test Statistic 18451.441
## Degrees of freedom 600
## P-value 0.000
##
## User model versus baseline model:
##
## Comparative Fit Index (CFI) 0.775
## Tucker-Lewis Index (TLI) 0.755
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -99585.521
## Loglikelihood unrestricted model (H1) -97304.234
##
## Number of free parameters 150
## Akaike (AIC) 199471.043
## Bayesian (BIC) 200340.760
## Sample-size adjusted Bayesian (BIC) 199864.175
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.077
## 90 Percent Confidence Interval 0.075 0.079
## P-value RMSEA <= 0.05 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.075
##
## Parameter estimates:
##
## Information Expected
## Standard Errors Standard
##
## Group 1 [1]:
##
## Estimate Std.err Z-value P(>|z|) Std.lv Std.all
## Latent variables:
## N =~
## N1 1.000 1.254 0.797
## N2 0.937 0.024 39.697 0.000 1.176 0.774
## N3 0.878 0.025 35.815 0.000 1.102 0.711
## N4 0.702 0.025 28.106 0.000 0.881 0.566
## N5 0.608 0.026 23.723 0.000 0.763 0.503
## E =~
## E1 1.000 0.977 0.587
## E2 1.247 0.053 23.600 0.000 1.219 0.741
## E3 -0.944 0.042 -22.206 0.000 -0.922 -0.655
## E4 -1.135 0.048 -23.599 0.000 -1.110 -0.730
## E5 -0.824 0.040 -20.492 0.000 -0.806 -0.598
## C =~
## C1 1.000 0.685 0.559
## C2 1.137 0.057 20.056 0.000 0.779 0.587
## C3 1.031 0.054 19.123 0.000 0.706 0.535
## C4 -1.416 0.065 -21.901 0.000 -0.970 -0.688
## C5 -1.482 0.072 -20.675 0.000 -1.015 -0.617
## A =~
## A1 1.000 0.489 0.340
## A2 -1.622 0.118 -13.693 0.000 -0.793 -0.629
## A3 -2.138 0.151 -14.125 0.000 -1.045 -0.777
## A4 -1.621 0.127 -12.785 0.000 -0.792 -0.529
## A5 -1.935 0.139 -13.956 0.000 -0.946 -0.721
## O =~
## O1 1.000 0.623 0.579
## O2 -0.994 0.068 -14.708 0.000 -0.619 -0.402
## O3 1.393 0.073 19.179 0.000 0.868 0.712
## O4 0.438 0.048 9.188 0.000 0.273 0.228
## O5 -0.944 0.059 -15.927 0.000 -0.588 -0.440
##
## Covariances:
## N ~~
## E 0.294 0.055 5.386 0.000 0.240 0.240
## C -0.265 0.041 -6.504 0.000 -0.308 -0.308
## A 0.115 0.028 4.111 0.000 0.188 0.188
## O -0.056 0.037 -1.520 0.128 -0.072 -0.072
## E ~~
## C -0.267 0.034 -7.790 0.000 -0.398 -0.398
## A 0.318 0.033 9.523 0.000 0.666 0.666
## O -0.229 0.032 -7.111 0.000 -0.376 -0.376
## C ~~
## A -0.097 0.017 -5.604 0.000 -0.290 -0.290
## O 0.137 0.023 5.973 0.000 0.320 0.320
## A ~~
## O -0.091 0.017 -5.501 0.000 -0.299 -0.299
##
## Intercepts:
## N1 2.845 0.055 51.269 0.000 2.845 1.807
## N2 3.288 0.054 61.382 0.000 3.288 2.163
## N3 2.940 0.055 53.828 0.000 2.940 1.897
## N4 3.201 0.055 58.409 0.000 3.201 2.059
## N5 2.476 0.053 46.306 0.000 2.476 1.632
## E1 3.267 0.059 55.637 0.000 3.267 1.961
## E2 3.281 0.058 56.600 0.000 3.281 1.995
## E3 3.902 0.050 78.668 0.000 3.902 2.773
## E4 4.235 0.054 78.988 0.000 4.235 2.784
## E5 4.256 0.047 89.600 0.000 4.256 3.158
## C1 4.507 0.043 104.318 0.000 4.507 3.677
## C2 4.255 0.047 90.909 0.000 4.255 3.204
## C3 4.207 0.047 90.443 0.000 4.207 3.188
## C4 2.687 0.050 54.045 0.000 2.687 1.905
## C5 3.489 0.058 60.196 0.000 3.489 2.122
## A1 2.722 0.051 53.652 0.000 2.722 1.891
## A2 4.481 0.044 100.831 0.000 4.481 3.554
## A3 4.334 0.047 91.422 0.000 4.334 3.222
## A4 4.427 0.053 83.940 0.000 4.427 2.959
## A5 4.361 0.046 94.379 0.000 4.361 3.326
## O1 4.990 0.038 131.493 0.000 4.990 4.635
## O2 2.589 0.054 47.748 0.000 2.589 1.683
## O3 4.522 0.043 105.260 0.000 4.522 3.710
## O4 4.957 0.042 117.544 0.000 4.957 4.143
## O5 2.394 0.047 50.878 0.000 2.394 1.793
## N 0.000 0.000 0.000
## E 0.000 0.000 0.000
## C 0.000 0.000 0.000
## A 0.000 0.000 0.000
## O 0.000 0.000 0.000
##
## Variances:
## N1 0.905 0.065 0.905 0.365
## N2 0.928 0.063 0.928 0.402
## N3 1.188 0.072 1.188 0.495
## N4 1.642 0.089 1.642 0.679
## N5 1.720 0.091 1.720 0.747
## E1 1.820 0.100 1.820 0.656
## E2 1.218 0.079 1.218 0.450
## E3 1.130 0.065 1.130 0.570
## E4 1.082 0.069 1.082 0.468
## E5 1.167 0.065 1.167 0.643
## C1 1.033 0.059 1.033 0.688
## C2 1.157 0.067 1.157 0.656
## C3 1.243 0.070 1.243 0.714
## C4 1.049 0.069 1.049 0.527
## C5 1.674 0.100 1.674 0.619
## A1 1.833 0.094 1.833 0.885
## A2 0.961 0.055 0.961 0.605
## A3 0.717 0.053 0.717 0.396
## A4 1.612 0.087 1.612 0.720
## A5 0.824 0.053 0.824 0.479
## O1 0.771 0.048 0.771 0.665
## O2 1.983 0.106 1.983 0.838
## O3 0.732 0.061 0.732 0.493
## O4 1.357 0.069 1.357 0.948
## O5 1.436 0.079 1.436 0.806
## N 1.574 0.104 1.000 1.000
## E 0.955 0.086 1.000 1.000
## C 0.469 0.045 1.000 1.000
## A 0.239 0.035 1.000 1.000
## O 0.388 0.040 1.000 1.000
##
##
##
## Group 2 [2]:
##
## Estimate Std.err Z-value P(>|z|) Std.lv Std.all
## Latent variables:
## N =~
## N1 1.000 1.316 0.836
## N2 0.937 0.024 39.697 0.000 1.234 0.809
## N3 0.878 0.025 35.815 0.000 1.156 0.724
## N4 0.702 0.025 28.106 0.000 0.924 0.586
## N5 0.608 0.026 23.723 0.000 0.800 0.495
## E =~
## E1 1.000 0.859 0.539
## E2 1.247 0.053 23.600 0.000 1.072 0.673
## E3 -0.944 0.042 -22.206 0.000 -0.811 -0.613
## E4 -1.135 0.048 -23.599 0.000 -0.975 -0.681
## E5 -0.824 0.040 -20.492 0.000 -0.708 -0.530
## C =~
## C1 1.000 0.678 0.547
## C2 1.137 0.057 20.056 0.000 0.771 0.588
## C3 1.031 0.054 19.123 0.000 0.699 0.549
## C4 -1.416 0.065 -21.901 0.000 -0.960 -0.709
## C5 -1.482 0.072 -20.675 0.000 -1.005 -0.621
## A =~
## A1 1.000 0.430 0.315
## A2 -1.622 0.118 -13.693 0.000 -0.698 -0.633
## A3 -2.138 0.151 -14.125 0.000 -0.920 -0.722
## A4 -1.621 0.127 -12.785 0.000 -0.697 -0.477
## A5 -1.935 0.139 -13.956 0.000 -0.833 -0.671
## O =~
## O1 1.000 0.636 0.558
## O2 -0.994 0.068 -14.708 0.000 -0.632 -0.406
## O3 1.393 0.073 19.179 0.000 0.886 0.740
## O4 0.438 0.048 9.188 0.000 0.279 0.234
## O5 -0.944 0.059 -15.927 0.000 -0.600 -0.456
##
## Covariances:
## N ~~
## E 0.312 0.037 8.380 0.000 0.276 0.276
## C -0.264 0.030 -8.848 0.000 -0.296 -0.296
## A 0.167 0.021 7.882 0.000 0.294 0.294
## O -0.094 0.027 -3.439 0.001 -0.112 -0.112
## E ~~
## C -0.191 0.022 -8.804 0.000 -0.327 -0.327
## A 0.255 0.023 11.008 0.000 0.689 0.689
## O -0.289 0.025 -11.727 0.000 -0.529 -0.529
## C ~~
## A -0.100 0.012 -8.040 0.000 -0.341 -0.341
## O 0.131 0.017 7.904 0.000 0.305 0.305
## A ~~
## O -0.098 0.012 -7.977 0.000 -0.357 -0.357
##
## Intercepts:
## N1 2.993 0.039 76.766 0.000 2.993 1.901
## N2 3.631 0.038 96.114 0.000 3.631 2.380
## N3 3.365 0.040 85.081 0.000 3.365 2.107
## N4 3.203 0.039 82.065 0.000 3.203 2.032
## N5 3.216 0.040 80.362 0.000 3.216 1.990
## E1 2.836 0.039 71.841 0.000 2.836 1.779
## E2 3.092 0.039 78.387 0.000 3.092 1.941
## E3 4.025 0.033 123.014 0.000 4.025 3.046
## E4 4.495 0.035 126.813 0.000 4.495 3.140
## E5 4.457 0.033 134.642 0.000 4.457 3.334
## C1 4.534 0.031 147.736 0.000 4.534 3.658
## C2 4.430 0.032 136.525 0.000 4.430 3.381
## C3 4.346 0.032 137.734 0.000 4.346 3.410
## C4 2.482 0.034 74.025 0.000 2.482 1.833
## C5 3.215 0.040 80.230 0.000 3.215 1.987
## A1 2.251 0.034 66.620 0.000 2.251 1.650
## A2 4.953 0.027 181.444 0.000 4.953 4.493
## A3 4.729 0.032 149.978 0.000 4.729 3.714
## A4 4.816 0.036 133.030 0.000 4.816 3.294
## A5 4.633 0.031 150.854 0.000 4.633 3.735
## O1 4.725 0.028 167.434 0.000 4.725 4.146
## O2 2.732 0.039 70.850 0.000 2.732 1.754
## O3 4.414 0.030 148.966 0.000 4.414 3.689
## O4 4.910 0.029 166.515 0.000 4.910 4.123
## O5 2.506 0.033 76.879 0.000 2.506 1.904
## N 0.000 0.000 0.000
## E 0.000 0.000 0.000
## C 0.000 0.000 0.000
## A 0.000 0.000 0.000
## O 0.000 0.000 0.000
##
## Variances:
## N1 0.746 0.042 0.746 0.301
## N2 0.805 0.041 0.805 0.346
## N3 1.214 0.052 1.214 0.476
## N4 1.630 0.062 1.630 0.656
## N5 1.971 0.073 1.971 0.755
## E1 1.804 0.070 1.804 0.710
## E2 1.389 0.061 1.389 0.547
## E3 1.089 0.045 1.089 0.624
## E4 1.098 0.049 1.098 0.536
## E5 1.286 0.050 1.286 0.719
## C1 1.076 0.043 1.076 0.701
## C2 1.123 0.047 1.123 0.654
## C3 1.135 0.045 1.135 0.699
## C4 0.912 0.046 0.912 0.497
## C5 1.609 0.069 1.609 0.614
## A1 1.677 0.060 1.677 0.901
## A2 0.729 0.031 0.729 0.600
## A3 0.776 0.038 0.776 0.478
## A4 1.651 0.063 1.651 0.773
## A5 0.845 0.038 0.845 0.549
## O1 0.895 0.038 0.895 0.689
## O2 2.026 0.077 2.026 0.835
## O3 0.647 0.043 0.647 0.452
## O4 1.340 0.048 1.340 0.945
## O5 1.373 0.053 1.373 0.792
## N 1.733 0.085 1.000 1.000
## E 0.738 0.059 1.000 1.000
## C 0.460 0.038 1.000 1.000
## A 0.185 0.026 1.000 1.000
## O 0.404 0.036 1.000 1.000
因子から観測変数への非標準化係数が同じである,という制限をつけて実行すると,違いが因子間相関や切片(平均値)に現れてきます。「男女間で構造は同じなんだけど,平均値が違うのだ」といった仮説を検証することができるわけです。
さらに進んだ統計ソフト(M-plusなど)では,特定のパス係数だけを同じにする(等値制約といいます)といったことも可能です。
本日の課題はすごく簡単。lavaanパッケージが持っているデータセットを使って多母集団同時分析をしてみましょう。 このデータは,構造方程式モデリング(SEM)に関する多くの論文や本(商用の SEM パッケージのマニュアルを含む)で利用されている 古典的な' データセットである.データは,2 つの学校(Pasteur とGrant-White)の 7 年生と 8 年生の生徒の知能検査のスコア。 詳細は次のファイルを参照のこと。 http://www.ec.kansai-u.ac.jp/user/arakit/documents/lavaanPackageVer0.5-12.pdf
モデルは次のようなもの。
HS.model <- "
visual =~ x1 + x2 + x3
textual =~ x4 + x5 + x6
speed =~ x7 + x8 + x9 "
fit <- cfa(HS.model, data = HolzingerSwineford1939)
summary(fit)
## lavaan (0.5-15) converged normally after 35 iterations
##
## Number of observations 301
##
## Estimator ML
## Minimum Function Test Statistic 85.306
## Degrees of freedom 24
## P-value (Chi-square) 0.000
##
## Parameter estimates:
##
## Information Expected
## Standard Errors Standard
##
## Estimate Std.err Z-value P(>|z|)
## Latent variables:
## 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:
## 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:
## x1 0.549 0.114
## x2 1.134 0.102
## x3 0.844 0.091
## x4 0.371 0.048
## x5 0.446 0.058
## x6 0.356 0.043
## x7 0.799 0.081
## x8 0.488 0.074
## x9 0.566 0.071
## visual 0.809 0.145
## textual 0.979 0.112
## speed 0.384 0.086
これを多母集団モデルに拡張してください。