Rで共分散構造分析・構造方程式モデル
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
COLOR(red){SIZE(30){Rで共分散構造分析・構造方程式モデル}}
#contents
*パッケージ [#s5504cb5]
-[[sem(構造方程式モデル)パッケージ中のオブジェクト一覧]]
-[[plotSEMM: SEMM の非線形潜在変数相互作用のグラフ化:http...
-[[OpenMx: OpenMx(構造方程式モデル)Mx: 共分散構造分析ソフ...
--[[OpenMx package for Structural Equation Model in R:htt...
-[[semtools - Methods for SEMs:https://r-forge.r-project....
-[[simsem: SIMulated Structural Equation Modeling:http://...
-[[semPLS: Structural Equation Modeling Using Partial Lea...
*使用方法 [#e6587b3f]
**パッケージのロード [#qd9d2629]
library(sem)
***共分散行列計算 [#ie63acc2]
cov(data)で分散共分散行列を、cor(data)で相関行列を計算で...
**モデルの指定 [#a62e8f9b]
specifyModel()関数でモデルを指定する方法は次の通り。
1.表現は順に、変数間関係、パラメタの名前、初期値である。
2.矢印による関係の表現:
大なり・小なりの記号とハイフンを使った矢印、すなわち「<-...
また、両方向の矢印、A<->AはAの分散を、A<->BはAとBの共分...
ここでのAやBは変数名で、データセットの中に同名の変数があ...
ハイフンの数に制限はなく、0本以上、何本でも良い。すなわ...
3.パラメタの名前
回帰係数、分散、共分散を特定するために名前をつける。同じ...
ここにNAと表記すると、固定パラメタとして扱われる。
4.初期値
自由母数の初期値、あるいは固定母数の値を入れる。ここにNA...
初心者の方へ: モデル式中にはパス係数、分散、共分散の全て...
**semの実行 [#rf4a0e22]
sem(モデル,データ行列,サンプル数)
で推定する。モデルはspecifyModel()関数で指定したもの、デ...
summary()
で推定値、適合度等の結果を返す。
**潜在変数を仮定しないモデル [#j12acd36]
下のMacintoshでの実行例を参照。
**潜在変数を仮定するモデル [#rb420b01]
[[青木先生の因子分析を行うRコード:http://aoki2.si.gunma-u...
コードは次の通り。
dat <- matrix(c( # 10 ケース,5 変数のデータ行列例(ファ...
-1.89, -0.02, 0.42, 1.23, -1.53,
0.06, 1.81, -0.59, -0.75, -0.12,
2.58, -0.20, -1.92, -0.49, -0.35,
0.69, -0.66, -0.77, -1.92, 0.38,
-1.05, 0.07, -0.37, -0.89, -1.62,
-2.73, 1.40, 0.18, -0.09, 0.13,
0.95, 0.84, 1.19, 1.19, 0.10,
0.93, 1.17, -1.70, 1.46, -0.25,
-0.04, -0.12, -0.34, -0.24, 1.88,
0.16, 1.03, -0.05, -0.73, 0.04
), byrow=TRUE, ncol=5)
colnames(dat) <- c("v1","v2","v3","v4","v5")
model <- specifyModel()
v1 < F1,path1,1
v2 < F1,path2,NA
v3 < F1,path3,NA
v4 < F1,path4,NA
v5 < F1,path5,NA
v1 <> v1,s1,NA
v2 <> v2,s2,NA
v3 <> v3,s3,NA
v4 <> v4,s4,NA
v5 <> v5,s5,NA
F1 <> F1,NA,1
ans <- sem(model,cor(dat),10)
summary(ans)
因子F1の分散を1に固定する(因子分析の仮定より)ことを忘れ...
結果は次の通り。
Model Chisquare = 1.9254 Df = 5 Pr(>Chisq) = 0.85937
Chisquare (null model) = 6.2471 Df = 10
Goodness-of-fit index = 0.93485
Adjusted goodness-of-fit index = 0.80454
RMSEA index = 0 90% CI: (NA, 0.24729)
Bentler-Bonnett NFI = 0.6918
Tucker-Lewis NNFI = -0.63854
Bentler CFI = NaN
SRMR = 0.087271
BIC = -9.5876
Normalized Residuals
Min. 1st Qu. Median Mean 3rd Qu. Ma...
-3.98e-01 -2.98e-06 1.55e-02 1.22e-01 2.43e-01 6.97e...
Parameter Estimates
Estimate Std Error z value Pr(>|z|)
path1 -0.79356 0.60066 -1.32113 0.186458 v1 <--- F1
path2 0.28438 0.39750 0.71543 0.474344 v2 <--- F1
path3 0.67625 0.51706 1.30789 0.190912 v3 <--- F1
path4 0.24147 0.52052 0.46390 0.642723 v4 <--- F1
path5 -0.22484 0.43513 -0.51671 0.605360 v5 <--- F1
s1 0.37027 0.86496 0.42808 0.668594 v1 <--> v1
s2 0.91913 0.45215 2.03280 0.042073 v2 <--> v2
s3 0.54268 0.63075 0.86037 0.389584 v3 <--> v3
s4 0.94169 0.48496 1.94179 0.052162 v4 <--> v4
s5 0.94945 0.46562 2.03909 0.041441 v5 <--> v5
Iterations = 17
path1〜path5が因子負荷量。s1〜s5が残差の分散であり、1-sx...
ついでにパス図も画かせてみた。
pathDiagram(ans, ignore.double=FALSE, edge.labels="value...
上のコードでR上に出力されたdotファイルを、graphvizのGVedi...
#ref(FAmodel.jpg)
**パス図 [#rcc6f04d]
pathDiagram
***graphviz による出力 [#g64877f2]
pathDiagramコマンドの出力したGraphviz用シンタックスを読み...
***dynamicGraph [#z62979ff]
Amos のようなことはできるか?
*グラフィカルモデリング [#efb871b8]
GMのソフトMIMは、CRANのパッケージmimRを使って
リモート操作できるようです。
-[[MIMのHP:http://www.hypergraph.dk/]]
-[[mimRのHP:http://gbi.agrsci.dk/~shd/public/mimR/]]
*Macintoshでの実行例 [#q59a14d4]
小島隆矢 「Excel で学ぶ共分散構造分析とグラフィカルモデ...
図を日本語で描くことにする。
camera <- structure(list(小型軽量 = c(3, 5, 2, 4, 4, 5, ...
1, 4, 4, 5, 2, 5, 1, 2, 4, 1, 5, 2, 2, 4, 3, 5, 5, 4, 3,...
3, 2, 4, 4, 2, 5, 2, 1, 1, 2, 2, 2, 2, 3, 2, 4, 5, 1, 5,...
2, 2, 4, 4, 1, 4, 2, 2, 3, 3, 2, 5, 3, 1, 3, 1, 4, 3, 4,...
4, 2, 2, 3, 3, 2, 1, 5, 2, 2, 4, 1, 1, 3, 1, 1, 4, 4, 1,...
2, 3, 5, 2, 1, 5, 2, 5, 1), 可搬性 = c(3, 4,
2, 4, 4, 4, 3, 2, 4, 3, 4, 2, 5, 2, 2, 3, 2, 5, 2, 2, 2,...
4, 3, 2, 2, 1, 3, 2, 3, 4, 2, 4, 2, 1, 2, 2, 2, 3, 2, 3,...
5, 2, 4, 1, 4, 1, 2, 4, 3, 2, 3, 2, 2, 1, 3, 3, 4, 4, 2,...
4, 3, 4, 3, 3, 4, 1, 3, 3, 3, 2, 2, 4, 2, 3, 4, 1, 1, 2,...
3, 4, 1, 2, 3, 3, 3, 5, 2, 3, 4, 2, 5, 1), 操作性 = c(4,
2, 2, 3, 2, 2, 3, 3, 5, 4, 2, 2, 1, 4, 2, 3, 5, 3, 3, 4,...
1, 1, 1, 1, 5, 4, 1, 4, 3, 2, 2, 1, 4, 3, 3, 3, 3, 2, 2,...
2, 1, 4, 1, 3, 3, 5, 4, 3, 3, 3, 3, 5, 3, 1, 3, 4, 2, 2,...
2, 3, 3, 3, 1, 3, 4, 4, 3, 3, 3, 4, 3, 3, 3, 4, 1, 4, 2,...
5, 1, 5, 3, 3, 2, 4, 3, 2, 5, 3, 2, 2, 2, 3), 満足度 = c...
2, 1, 2, 3, 1, 3, 1, 5, 3, 3, 1, 4, 1, 1, 2, 4, 5, 2, 2,...
3, 1, 2, 1, 2, 2, 2, 3, 3, 3, 2, 2, 5, 1, 3, 1, 2, 4, 1,...
2, 2, 5, 2, 1, 3, 3, 1, 4, 1, 2, 1, 3, 3, 1, 4, 4, 1, 3,...
1, 4, 1, 2, 2, 3, 2, 3, 4, 3, 1, 2, 4, 4, 2, 4, 3, 1, 1,...
3, 3, 4, 1, 1, 2, 3, 1, 4, 2, 2, 3, 1, 4, 2)), .Names = ...
"可搬性", "操作性", "満足度"
), class = "data.frame", row.names = 1:100)
r <- cor(camera)
r
model <- specifyModel()
小型軽量 -> 満足度, gamma, NA
操作性 -> 満足度, delta, NA
可搬性 -> 満足度, kappa, NA
小型軽量 -> 操作性, alpha, NA
小型軽量 -> 可搬性, beta, NA
小型軽量 <-> 小型軽量, theta1, NA
操作性 <-> 操作性, theta2, NA
可搬性 <-> 可搬性, theta3, NA
満足度 <-> 満足度, theta4, NA
ans <- sem(model, r, nrow(camera))
summary(ans)
pathDiagram(ans, "camera", ignore.double=FALSE, edge.lab...
pathDiagram 関数で,ファイル "camera.dot" に書き出され(...
分析結果は以下のごとし。
> r <- cor(camera)
> r
小型軽量 可搬性 操作性 満足度
小型軽量 1.0000000 0.8421738 -0.4114817 0.2123832
可搬性 0.8421738 1.0000000 -0.3721873 0.3844472
操作性 -0.4114817 -0.3721873 1.0000000 0.2728988
満足度 0.2123832 0.3844472 0.2728988 1.0000000
> model <- specify.model()
1: 小型軽量 -> 満足度, gamma, NA
2: 操作性 -> 満足度, delta, NA
3: 可搬性 -> 満足度, kappa, NA
4: 小型軽量 -> 操作性, alpha, NA
5: 小型軽量 -> 可搬性, beta, NA
6: 小型軽量 <-> 小型軽量, theta1, NA
7: 操作性 <-> 操作性, theta2, NA
8: 可搬性 <-> 可搬性, theta3, NA
9: 満足度 <-> 満足度, theta4, NA
10:
Read 9 records
> ans <- sem(model, r, nrow(camera))
> summary(ans)
Model Chisquare = 0.27002 Df = 1 Pr(>Chisq) = 0.60332
Chisquare (null model) = 185.63 Df = 6
Goodness-of-fit index = 0.99864
Adjusted goodness-of-fit index = 0.9864
RMSEA index = 0 90% CI: (NA, 0.21369)
Bentler-Bonnett NFI = 0.99855
Tucker-Lewis NNFI = 1.0244
Bentler CFI = 1
BIC = -4.3351
Normalized Residuals
Min. 1st Qu. Median Mean 3rd Qu. M...
-2.41e-01 -1.36e-01 0.00e+00 -7.39e-02 0.00e+00 1.07e...
Parameter Estimates
Estimate Std Error z value Pr(>|z|) ...
gamma -0.22909 0.151662 -1.5105 1.3092e-01 満足度 <---...
delta 0.45680 0.088107 5.1847 2.1641e-07 満足度 <---...
kappa 0.74739 0.148927 5.0185 5.2069e-07 満足度 <---...
alpha -0.41148 0.091601 -4.4921 7.0521e-06 操作性 <---...
beta 0.84217 0.054192 15.5405 0.0000e+00 可搬性 <---...
theta1 1.00000 0.142162 7.0342 2.0037e-12 小型軽量 <-...
theta2 0.83068 0.118097 7.0339 2.0079e-12 操作性 <-->...
theta3 0.29074 0.041353 7.0308 2.0537e-12 可搬性 <-->...
theta4 0.63666 0.090519 7.0334 2.0155e-12 満足度 <-->...
Iterations = 0
> pathDiagram(ans, "camera", ignore.double=FALSE, edge.l...
Graphvis による図は以下のごとし(日本語で描けた)。
#ref(camera.png)
*lavaanパッケージの使用例 [#geb21fab]
[[上の例 (潜在変数を仮定するモデル) :http://www.okada.jp....
dat <- data.frame(matrix(c( # 上のものと同じデータ。型を...
-1.89, -0.02, 0.42, 1.23, -1.53,
0.06, 1.81, -0.59, -0.75, -0.12,
2.58, -0.20, -1.92, -0.49, -0.35,
0.69, -0.66, -0.77, -1.92, 0.38,
-1.05, 0.07, -0.37, -0.89, -1.62,
-2.73, 1.40, 0.18, -0.09, 0.13,
0.95, 0.84, 1.19, 1.19, 0.10,
0.93, 1.17, -1.70, 1.46, -0.25,
-0.04, -0.12, -0.34, -0.24, 1.88,
0.16, 1.03, -0.05, -0.73, 0.04
), byrow=TRUE, ncol=5))
colnames(dat) <- c("v1","v2","v3","v4","v5")
library(lavaan)
model.lavaan <- '
F1 =~ v1+v2+v3+v4+v5
'
ans.lavaan <- cfa(model.lavaan, data=dat, std.lv=TRUE, m...
# mimicオプションを"EQS"とするとsemパッケージの結果と一...
summary(ans.lavaan, fit.measures=TRUE, standardize = TRUE)
結果は以下のとおり。semパッケージの結果とほぼ一致
Lavaan (0.4-9) converged normally after 28 iterations
Number of observations 10
Estimator ML
Minimum Function Chi-square 1.925
Degrees of freedom 5
P-value 0.859
Chi-square test baseline model:
Minimum Function Chi-square 6.247
Degrees of freedom 10
P-value 0.794
Full model versus baseline model:
Comparative Fit Index (CFI) NaN
Tucker-Lewis Index (TLI) -0.639
Loglikelihood and Information Criteria:
Loglikelihood user model (H0) -70.837
Loglikelihood unrestricted model (H1) -69.768
Number of free parameters 10
Akaike (AIC) 161.675
Bayesian (BIC) 164.701
Root Mean Square Error of Approximation:
RMSEA 0.000
90 Percent Confidence Interval 0.000 0.235
P-value RMSEA <= 0.05 0.866
Standardized Root Mean Square Residual:
SRMR 0.087
Parameter estimates:
Information Expected
Standard Errors Standard
Estimate Std.err Z-value P(>|z|) ...
Latent variables:
F1 =~
v1 -1.214 0.747 -1.625 0.104 ...
v2 0.233 0.315 0.739 0.460 ...
v3 0.631 0.422 1.494 0.135 ...
v4 0.264 0.423 0.625 0.532 ...
v5 -0.221 0.380 -0.582 0.561 ...
Variances:
v1 0.866 1.550 0.559 0.576 ...
v2 0.616 0.301 2.049 0.040 ...
v3 0.473 0.463 1.020 0.308 ...
v4 1.129 0.545 2.071 0.038 ...
v5 0.917 0.441 2.079 0.038 ...
F1 1.000 ...
Machintoshでの実行例 (小島隆矢 「Excel で学ぶ共分散構造...
camera2 <- data.frame(camera) # データ入力は上のコードで...
colnames(camera2) <- c("koga", "kaso", "sosa", "mann")
library(lavaan)
model.camera <- '
sosa~koga
kaso~koga
mann~koga+sosa+kaso
'
ans.camera <- cfa(model.camera, data=camera2, std.lv=TRU...
summary(ans.camera, fit.measures=TRUE, standardize = TRUE)
**記号の使い方 [#r4ffb3ee]
|"=~" | 潜在変数の定義 |
|"~" | 回帰 (単方向矢印 <-) |
| "~~" | 共変 (双方向矢印 <-> ) |
|"~ 1" | 切片 |
|"~ 0*" | 直交 (f1 ~ 0*f2 とするとf1とf2が直交すると仮定) |
*Windowsでの日本語フォント使用のTips [#tdaabb78]
Windowsでの日本語の利用方法がうまくいかず、ネットを調べて...
で、Windowsでやる場合、
+フォントファイルを直接指定する(C:\WINDOWS\Fonts\msmincho...
+out.fileを指定せず、Rに結果を表示させ、エディタにコピペ...
> pathDiagram(ans, ignore.double=FALSE, edge.labels="val...
そしてGraphvizで処理することで、日本語が表示できるようで...
-- コメント:もし経常的に日本語表示をするということなら、...
handle <- file(out.file, "w")
を
handle <- file(out.file, "w", encoding="utf-8")
とでもしておけば、出力ファイルは utf-8 になります。と、思...
-[[RでSEM:http://d.hatena.ne.jp/kosugitti/20070528]]
-[[共分散構造分析:http://www.ic.nanzan-u.ac.jp/~kamiya/r/...
*リンク [#e66c30b0]
-[[R のpackageSEM使用経験:http://www.nuis.ac.jp/~mat/fpr/...
-[[Structural Equation Models - Appendix to An R and S-PL...
-[[R言語による統計学:http://akimichi.homeunix.net/~emile...
-『Rによるやさしい統計学』 山田 剛史 杉澤 武俊 村井 潤...
-[[SEM による確定型因子分析の例 in "Structual Equation M...
-[[RでSEM:http://sites.google.com/site/officeoga/r/rde-se...
-[[RでSEM入門 SEMは(そんなに)怖くない:http://m884.jp/Os...
-[[lavaan - latent variable analysis:http://lavaan.ugent....
-[[主成分分析と因子分析:http://eau.uijin.com/advstats/fac...
-[[semdiag - Structural equation modeling diagnostics:htt...
----
-お分かりの方、どうぞ、どんどん書いちゃってください -- &...
- dotファイルからjpegを作るには、dot.exeにパスを通してか...
- ついでに、system('dot camera.dot -Tjpg -o "camera.jpg" ...
- BioconductorのパッケージRgraphvizを使えば、Graphvizと協...
- pathDiagramのout.fileの拡張子を.dotとしたら,MacのGraph...
- > pathDiagramのout.fileの拡張子を.dotとしたら~
ファイルの属性をテキストファイルにするとドラッグ&ドロッ...
クリエータに "GRVZ" を指定しても良いが。
ans <- sem(model, r, nrow(camera))
summary(ans)
pathDiagram(ans, out.file="camera.dat", ignore.double=FA...
edge.labels="values", digits=3, node.font=c...
system("/Developer/Tools/SetFile -t TEXT -c JEDX camera....
こんな風に。 -- &new{2008-08-07 (木) 15:35:08};
- 修正指数の算出の仕方 -- [[覚え書き]] &new{2009-11-16 (...
ans <- sem(model, r, nrow(data))
mod.indices(ans)
- OpenMxはどうかな。 -- &new{2009-11-17 (火) 18:40:34};
- [[OpenMx - Advanced Structural Equation Modeling:http:/...
- pathDiagramで、standardize=TRUE のオプション。標準化係...
- [[「食物とガン」のデータをもとにした3種類の共分散構造...
- lavaanパッケージのlavaan()コマンドで多母集団が分析でき...
- 現在のバージョンでは,pathDiagram の第二引数は名前を持...
Mac版では,"foo.dot" ファイルを出力した後 "foo.pdf" が出...
- lavaanパッケージについて書いてみました。ご意見や修正等...
// 「可搬性」は,「かはんせい」と読むのですけど?kaso と...
#comment
終了行:
COLOR(red){SIZE(30){Rで共分散構造分析・構造方程式モデル}}
#contents
*パッケージ [#s5504cb5]
-[[sem(構造方程式モデル)パッケージ中のオブジェクト一覧]]
-[[plotSEMM: SEMM の非線形潜在変数相互作用のグラフ化:http...
-[[OpenMx: OpenMx(構造方程式モデル)Mx: 共分散構造分析ソフ...
--[[OpenMx package for Structural Equation Model in R:htt...
-[[semtools - Methods for SEMs:https://r-forge.r-project....
-[[simsem: SIMulated Structural Equation Modeling:http://...
-[[semPLS: Structural Equation Modeling Using Partial Lea...
*使用方法 [#e6587b3f]
**パッケージのロード [#qd9d2629]
library(sem)
***共分散行列計算 [#ie63acc2]
cov(data)で分散共分散行列を、cor(data)で相関行列を計算で...
**モデルの指定 [#a62e8f9b]
specifyModel()関数でモデルを指定する方法は次の通り。
1.表現は順に、変数間関係、パラメタの名前、初期値である。
2.矢印による関係の表現:
大なり・小なりの記号とハイフンを使った矢印、すなわち「<-...
また、両方向の矢印、A<->AはAの分散を、A<->BはAとBの共分...
ここでのAやBは変数名で、データセットの中に同名の変数があ...
ハイフンの数に制限はなく、0本以上、何本でも良い。すなわ...
3.パラメタの名前
回帰係数、分散、共分散を特定するために名前をつける。同じ...
ここにNAと表記すると、固定パラメタとして扱われる。
4.初期値
自由母数の初期値、あるいは固定母数の値を入れる。ここにNA...
初心者の方へ: モデル式中にはパス係数、分散、共分散の全て...
**semの実行 [#rf4a0e22]
sem(モデル,データ行列,サンプル数)
で推定する。モデルはspecifyModel()関数で指定したもの、デ...
summary()
で推定値、適合度等の結果を返す。
**潜在変数を仮定しないモデル [#j12acd36]
下のMacintoshでの実行例を参照。
**潜在変数を仮定するモデル [#rb420b01]
[[青木先生の因子分析を行うRコード:http://aoki2.si.gunma-u...
コードは次の通り。
dat <- matrix(c( # 10 ケース,5 変数のデータ行列例(ファ...
-1.89, -0.02, 0.42, 1.23, -1.53,
0.06, 1.81, -0.59, -0.75, -0.12,
2.58, -0.20, -1.92, -0.49, -0.35,
0.69, -0.66, -0.77, -1.92, 0.38,
-1.05, 0.07, -0.37, -0.89, -1.62,
-2.73, 1.40, 0.18, -0.09, 0.13,
0.95, 0.84, 1.19, 1.19, 0.10,
0.93, 1.17, -1.70, 1.46, -0.25,
-0.04, -0.12, -0.34, -0.24, 1.88,
0.16, 1.03, -0.05, -0.73, 0.04
), byrow=TRUE, ncol=5)
colnames(dat) <- c("v1","v2","v3","v4","v5")
model <- specifyModel()
v1 < F1,path1,1
v2 < F1,path2,NA
v3 < F1,path3,NA
v4 < F1,path4,NA
v5 < F1,path5,NA
v1 <> v1,s1,NA
v2 <> v2,s2,NA
v3 <> v3,s3,NA
v4 <> v4,s4,NA
v5 <> v5,s5,NA
F1 <> F1,NA,1
ans <- sem(model,cor(dat),10)
summary(ans)
因子F1の分散を1に固定する(因子分析の仮定より)ことを忘れ...
結果は次の通り。
Model Chisquare = 1.9254 Df = 5 Pr(>Chisq) = 0.85937
Chisquare (null model) = 6.2471 Df = 10
Goodness-of-fit index = 0.93485
Adjusted goodness-of-fit index = 0.80454
RMSEA index = 0 90% CI: (NA, 0.24729)
Bentler-Bonnett NFI = 0.6918
Tucker-Lewis NNFI = -0.63854
Bentler CFI = NaN
SRMR = 0.087271
BIC = -9.5876
Normalized Residuals
Min. 1st Qu. Median Mean 3rd Qu. Ma...
-3.98e-01 -2.98e-06 1.55e-02 1.22e-01 2.43e-01 6.97e...
Parameter Estimates
Estimate Std Error z value Pr(>|z|)
path1 -0.79356 0.60066 -1.32113 0.186458 v1 <--- F1
path2 0.28438 0.39750 0.71543 0.474344 v2 <--- F1
path3 0.67625 0.51706 1.30789 0.190912 v3 <--- F1
path4 0.24147 0.52052 0.46390 0.642723 v4 <--- F1
path5 -0.22484 0.43513 -0.51671 0.605360 v5 <--- F1
s1 0.37027 0.86496 0.42808 0.668594 v1 <--> v1
s2 0.91913 0.45215 2.03280 0.042073 v2 <--> v2
s3 0.54268 0.63075 0.86037 0.389584 v3 <--> v3
s4 0.94169 0.48496 1.94179 0.052162 v4 <--> v4
s5 0.94945 0.46562 2.03909 0.041441 v5 <--> v5
Iterations = 17
path1〜path5が因子負荷量。s1〜s5が残差の分散であり、1-sx...
ついでにパス図も画かせてみた。
pathDiagram(ans, ignore.double=FALSE, edge.labels="value...
上のコードでR上に出力されたdotファイルを、graphvizのGVedi...
#ref(FAmodel.jpg)
**パス図 [#rcc6f04d]
pathDiagram
***graphviz による出力 [#g64877f2]
pathDiagramコマンドの出力したGraphviz用シンタックスを読み...
***dynamicGraph [#z62979ff]
Amos のようなことはできるか?
*グラフィカルモデリング [#efb871b8]
GMのソフトMIMは、CRANのパッケージmimRを使って
リモート操作できるようです。
-[[MIMのHP:http://www.hypergraph.dk/]]
-[[mimRのHP:http://gbi.agrsci.dk/~shd/public/mimR/]]
*Macintoshでの実行例 [#q59a14d4]
小島隆矢 「Excel で学ぶ共分散構造分析とグラフィカルモデ...
図を日本語で描くことにする。
camera <- structure(list(小型軽量 = c(3, 5, 2, 4, 4, 5, ...
1, 4, 4, 5, 2, 5, 1, 2, 4, 1, 5, 2, 2, 4, 3, 5, 5, 4, 3,...
3, 2, 4, 4, 2, 5, 2, 1, 1, 2, 2, 2, 2, 3, 2, 4, 5, 1, 5,...
2, 2, 4, 4, 1, 4, 2, 2, 3, 3, 2, 5, 3, 1, 3, 1, 4, 3, 4,...
4, 2, 2, 3, 3, 2, 1, 5, 2, 2, 4, 1, 1, 3, 1, 1, 4, 4, 1,...
2, 3, 5, 2, 1, 5, 2, 5, 1), 可搬性 = c(3, 4,
2, 4, 4, 4, 3, 2, 4, 3, 4, 2, 5, 2, 2, 3, 2, 5, 2, 2, 2,...
4, 3, 2, 2, 1, 3, 2, 3, 4, 2, 4, 2, 1, 2, 2, 2, 3, 2, 3,...
5, 2, 4, 1, 4, 1, 2, 4, 3, 2, 3, 2, 2, 1, 3, 3, 4, 4, 2,...
4, 3, 4, 3, 3, 4, 1, 3, 3, 3, 2, 2, 4, 2, 3, 4, 1, 1, 2,...
3, 4, 1, 2, 3, 3, 3, 5, 2, 3, 4, 2, 5, 1), 操作性 = c(4,
2, 2, 3, 2, 2, 3, 3, 5, 4, 2, 2, 1, 4, 2, 3, 5, 3, 3, 4,...
1, 1, 1, 1, 5, 4, 1, 4, 3, 2, 2, 1, 4, 3, 3, 3, 3, 2, 2,...
2, 1, 4, 1, 3, 3, 5, 4, 3, 3, 3, 3, 5, 3, 1, 3, 4, 2, 2,...
2, 3, 3, 3, 1, 3, 4, 4, 3, 3, 3, 4, 3, 3, 3, 4, 1, 4, 2,...
5, 1, 5, 3, 3, 2, 4, 3, 2, 5, 3, 2, 2, 2, 3), 満足度 = c...
2, 1, 2, 3, 1, 3, 1, 5, 3, 3, 1, 4, 1, 1, 2, 4, 5, 2, 2,...
3, 1, 2, 1, 2, 2, 2, 3, 3, 3, 2, 2, 5, 1, 3, 1, 2, 4, 1,...
2, 2, 5, 2, 1, 3, 3, 1, 4, 1, 2, 1, 3, 3, 1, 4, 4, 1, 3,...
1, 4, 1, 2, 2, 3, 2, 3, 4, 3, 1, 2, 4, 4, 2, 4, 3, 1, 1,...
3, 3, 4, 1, 1, 2, 3, 1, 4, 2, 2, 3, 1, 4, 2)), .Names = ...
"可搬性", "操作性", "満足度"
), class = "data.frame", row.names = 1:100)
r <- cor(camera)
r
model <- specifyModel()
小型軽量 -> 満足度, gamma, NA
操作性 -> 満足度, delta, NA
可搬性 -> 満足度, kappa, NA
小型軽量 -> 操作性, alpha, NA
小型軽量 -> 可搬性, beta, NA
小型軽量 <-> 小型軽量, theta1, NA
操作性 <-> 操作性, theta2, NA
可搬性 <-> 可搬性, theta3, NA
満足度 <-> 満足度, theta4, NA
ans <- sem(model, r, nrow(camera))
summary(ans)
pathDiagram(ans, "camera", ignore.double=FALSE, edge.lab...
pathDiagram 関数で,ファイル "camera.dot" に書き出され(...
分析結果は以下のごとし。
> r <- cor(camera)
> r
小型軽量 可搬性 操作性 満足度
小型軽量 1.0000000 0.8421738 -0.4114817 0.2123832
可搬性 0.8421738 1.0000000 -0.3721873 0.3844472
操作性 -0.4114817 -0.3721873 1.0000000 0.2728988
満足度 0.2123832 0.3844472 0.2728988 1.0000000
> model <- specify.model()
1: 小型軽量 -> 満足度, gamma, NA
2: 操作性 -> 満足度, delta, NA
3: 可搬性 -> 満足度, kappa, NA
4: 小型軽量 -> 操作性, alpha, NA
5: 小型軽量 -> 可搬性, beta, NA
6: 小型軽量 <-> 小型軽量, theta1, NA
7: 操作性 <-> 操作性, theta2, NA
8: 可搬性 <-> 可搬性, theta3, NA
9: 満足度 <-> 満足度, theta4, NA
10:
Read 9 records
> ans <- sem(model, r, nrow(camera))
> summary(ans)
Model Chisquare = 0.27002 Df = 1 Pr(>Chisq) = 0.60332
Chisquare (null model) = 185.63 Df = 6
Goodness-of-fit index = 0.99864
Adjusted goodness-of-fit index = 0.9864
RMSEA index = 0 90% CI: (NA, 0.21369)
Bentler-Bonnett NFI = 0.99855
Tucker-Lewis NNFI = 1.0244
Bentler CFI = 1
BIC = -4.3351
Normalized Residuals
Min. 1st Qu. Median Mean 3rd Qu. M...
-2.41e-01 -1.36e-01 0.00e+00 -7.39e-02 0.00e+00 1.07e...
Parameter Estimates
Estimate Std Error z value Pr(>|z|) ...
gamma -0.22909 0.151662 -1.5105 1.3092e-01 満足度 <---...
delta 0.45680 0.088107 5.1847 2.1641e-07 満足度 <---...
kappa 0.74739 0.148927 5.0185 5.2069e-07 満足度 <---...
alpha -0.41148 0.091601 -4.4921 7.0521e-06 操作性 <---...
beta 0.84217 0.054192 15.5405 0.0000e+00 可搬性 <---...
theta1 1.00000 0.142162 7.0342 2.0037e-12 小型軽量 <-...
theta2 0.83068 0.118097 7.0339 2.0079e-12 操作性 <-->...
theta3 0.29074 0.041353 7.0308 2.0537e-12 可搬性 <-->...
theta4 0.63666 0.090519 7.0334 2.0155e-12 満足度 <-->...
Iterations = 0
> pathDiagram(ans, "camera", ignore.double=FALSE, edge.l...
Graphvis による図は以下のごとし(日本語で描けた)。
#ref(camera.png)
*lavaanパッケージの使用例 [#geb21fab]
[[上の例 (潜在変数を仮定するモデル) :http://www.okada.jp....
dat <- data.frame(matrix(c( # 上のものと同じデータ。型を...
-1.89, -0.02, 0.42, 1.23, -1.53,
0.06, 1.81, -0.59, -0.75, -0.12,
2.58, -0.20, -1.92, -0.49, -0.35,
0.69, -0.66, -0.77, -1.92, 0.38,
-1.05, 0.07, -0.37, -0.89, -1.62,
-2.73, 1.40, 0.18, -0.09, 0.13,
0.95, 0.84, 1.19, 1.19, 0.10,
0.93, 1.17, -1.70, 1.46, -0.25,
-0.04, -0.12, -0.34, -0.24, 1.88,
0.16, 1.03, -0.05, -0.73, 0.04
), byrow=TRUE, ncol=5))
colnames(dat) <- c("v1","v2","v3","v4","v5")
library(lavaan)
model.lavaan <- '
F1 =~ v1+v2+v3+v4+v5
'
ans.lavaan <- cfa(model.lavaan, data=dat, std.lv=TRUE, m...
# mimicオプションを"EQS"とするとsemパッケージの結果と一...
summary(ans.lavaan, fit.measures=TRUE, standardize = TRUE)
結果は以下のとおり。semパッケージの結果とほぼ一致
Lavaan (0.4-9) converged normally after 28 iterations
Number of observations 10
Estimator ML
Minimum Function Chi-square 1.925
Degrees of freedom 5
P-value 0.859
Chi-square test baseline model:
Minimum Function Chi-square 6.247
Degrees of freedom 10
P-value 0.794
Full model versus baseline model:
Comparative Fit Index (CFI) NaN
Tucker-Lewis Index (TLI) -0.639
Loglikelihood and Information Criteria:
Loglikelihood user model (H0) -70.837
Loglikelihood unrestricted model (H1) -69.768
Number of free parameters 10
Akaike (AIC) 161.675
Bayesian (BIC) 164.701
Root Mean Square Error of Approximation:
RMSEA 0.000
90 Percent Confidence Interval 0.000 0.235
P-value RMSEA <= 0.05 0.866
Standardized Root Mean Square Residual:
SRMR 0.087
Parameter estimates:
Information Expected
Standard Errors Standard
Estimate Std.err Z-value P(>|z|) ...
Latent variables:
F1 =~
v1 -1.214 0.747 -1.625 0.104 ...
v2 0.233 0.315 0.739 0.460 ...
v3 0.631 0.422 1.494 0.135 ...
v4 0.264 0.423 0.625 0.532 ...
v5 -0.221 0.380 -0.582 0.561 ...
Variances:
v1 0.866 1.550 0.559 0.576 ...
v2 0.616 0.301 2.049 0.040 ...
v3 0.473 0.463 1.020 0.308 ...
v4 1.129 0.545 2.071 0.038 ...
v5 0.917 0.441 2.079 0.038 ...
F1 1.000 ...
Machintoshでの実行例 (小島隆矢 「Excel で学ぶ共分散構造...
camera2 <- data.frame(camera) # データ入力は上のコードで...
colnames(camera2) <- c("koga", "kaso", "sosa", "mann")
library(lavaan)
model.camera <- '
sosa~koga
kaso~koga
mann~koga+sosa+kaso
'
ans.camera <- cfa(model.camera, data=camera2, std.lv=TRU...
summary(ans.camera, fit.measures=TRUE, standardize = TRUE)
**記号の使い方 [#r4ffb3ee]
|"=~" | 潜在変数の定義 |
|"~" | 回帰 (単方向矢印 <-) |
| "~~" | 共変 (双方向矢印 <-> ) |
|"~ 1" | 切片 |
|"~ 0*" | 直交 (f1 ~ 0*f2 とするとf1とf2が直交すると仮定) |
*Windowsでの日本語フォント使用のTips [#tdaabb78]
Windowsでの日本語の利用方法がうまくいかず、ネットを調べて...
で、Windowsでやる場合、
+フォントファイルを直接指定する(C:\WINDOWS\Fonts\msmincho...
+out.fileを指定せず、Rに結果を表示させ、エディタにコピペ...
> pathDiagram(ans, ignore.double=FALSE, edge.labels="val...
そしてGraphvizで処理することで、日本語が表示できるようで...
-- コメント:もし経常的に日本語表示をするということなら、...
handle <- file(out.file, "w")
を
handle <- file(out.file, "w", encoding="utf-8")
とでもしておけば、出力ファイルは utf-8 になります。と、思...
-[[RでSEM:http://d.hatena.ne.jp/kosugitti/20070528]]
-[[共分散構造分析:http://www.ic.nanzan-u.ac.jp/~kamiya/r/...
*リンク [#e66c30b0]
-[[R のpackageSEM使用経験:http://www.nuis.ac.jp/~mat/fpr/...
-[[Structural Equation Models - Appendix to An R and S-PL...
-[[R言語による統計学:http://akimichi.homeunix.net/~emile...
-『Rによるやさしい統計学』 山田 剛史 杉澤 武俊 村井 潤...
-[[SEM による確定型因子分析の例 in "Structual Equation M...
-[[RでSEM:http://sites.google.com/site/officeoga/r/rde-se...
-[[RでSEM入門 SEMは(そんなに)怖くない:http://m884.jp/Os...
-[[lavaan - latent variable analysis:http://lavaan.ugent....
-[[主成分分析と因子分析:http://eau.uijin.com/advstats/fac...
-[[semdiag - Structural equation modeling diagnostics:htt...
----
-お分かりの方、どうぞ、どんどん書いちゃってください -- &...
- dotファイルからjpegを作るには、dot.exeにパスを通してか...
- ついでに、system('dot camera.dot -Tjpg -o "camera.jpg" ...
- BioconductorのパッケージRgraphvizを使えば、Graphvizと協...
- pathDiagramのout.fileの拡張子を.dotとしたら,MacのGraph...
- > pathDiagramのout.fileの拡張子を.dotとしたら~
ファイルの属性をテキストファイルにするとドラッグ&ドロッ...
クリエータに "GRVZ" を指定しても良いが。
ans <- sem(model, r, nrow(camera))
summary(ans)
pathDiagram(ans, out.file="camera.dat", ignore.double=FA...
edge.labels="values", digits=3, node.font=c...
system("/Developer/Tools/SetFile -t TEXT -c JEDX camera....
こんな風に。 -- &new{2008-08-07 (木) 15:35:08};
- 修正指数の算出の仕方 -- [[覚え書き]] &new{2009-11-16 (...
ans <- sem(model, r, nrow(data))
mod.indices(ans)
- OpenMxはどうかな。 -- &new{2009-11-17 (火) 18:40:34};
- [[OpenMx - Advanced Structural Equation Modeling:http:/...
- pathDiagramで、standardize=TRUE のオプション。標準化係...
- [[「食物とガン」のデータをもとにした3種類の共分散構造...
- lavaanパッケージのlavaan()コマンドで多母集団が分析でき...
- 現在のバージョンでは,pathDiagram の第二引数は名前を持...
Mac版では,"foo.dot" ファイルを出力した後 "foo.pdf" が出...
- lavaanパッケージについて書いてみました。ご意見や修正等...
// 「可搬性」は,「かはんせい」と読むのですけど?kaso と...
#comment
ページ名: