Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TokyoR#07 共分散構造分析

Ea0b0e1760fae9c7599f86c3555e071d?s=47 bob3bob3
January 12, 2022

TokyoR#07 共分散構造分析

R言語による共分散構造分析(Covariance Structure Analysis、構造方程式モデリング、Structural Equation Modeling)。
2010年7月。

Ea0b0e1760fae9c7599f86c3555e071d?s=128

bob3bob3

January 12, 2022
Tweet

More Decks by bob3bob3

Other Decks in Programming

Transcript

  1. 『 R によるやさしい統計学』 第 17 章 「共分散構造分析」 Bob#3 ( @bob3bob3

    ) Tokyo.R#7 2010 年 7 月 24 日
  2. 自己紹介 ✔ hatena:bob3 ✔ twitter:@bob3bob3 ✔ マーケティングリサーチャー ✔ 文系 ✔

    歌えません。 ✔ 踊れません。 ✔ 好きな音楽 ✔ プログレッシブ・ロック ✔ フォークトロニカ
  3. 共分散構造分析とは? • 因子分析と重回帰分析を統合した分析 • それだけではないが、まずはこう理解。 • 別名「構造方程式モデリング」 • Structural Esuation

    Modeling 、略して SEM 。 • なので、“ sem” パッケージという名前。 • 複雑な変数間の関係を統計的に検証できる。 • モデルとデータの当てはまりを検証、評価する。 • 「適合度」が重要。
  4. 共分散構造分析とは? • 何がうれしいの? • 因果関係推論の強力な道具になる。 • パス図による表現で変数の関係が分かりやすい。 • どんなデータを使うの? •

    分散共分散行列(相関行列)。 • 出力のどこを見ればいいの? • まずは、適合度とパス係数。
  5. 共分散構造分析とは? • 主に心理学、社会学の世界で発達してきた。 • 近年はマーケティングの世界でも活用されている。 • 例)日経 BP コンサルティング「ブランドジャパン」

  6. 共分散構造分析とは? ★ ベネッセの「ブランド間関係性のスコア化」事例 http://www.jmra-net.or.jp/conference/2009/pdf/JKR_091201.pdf

  7. 共分散構造分析の主なツール • AMOS(SPSS) • デファクトスタンダード。デモ版( Student Version )あり。 • EQS

    • CALIS(SAS) • Mplus • 最強説もあるが、まだ利用者が少ない。 • 「ブランドジャパン」は Mplus を使っているらしい。
  8. パス図について 母親価値 f1 協調性 f3 相互作用経験 f2

  9. パス図のお約束 〔観測変数〕 既知の変数。 直接測定できるデータ。 〔潜在変数(因子)〕 未知の変数。 直接測定できないデータ。 パス係数 (回帰係数) 共分散

    (相関係数) 〔残差〕 外生変数では説明しきれない 効果をひとつにまとめたもの。
  10. パス図のお約束 〔内生変数〕 他の変数から矢印を受けている変数。 回帰分析における「従属変数(目的変数)」。 必ず残差を伴う。 〔残差〕 〔外生変数〕 他の変数から矢印を受けていない変数。 回帰分析における「独立変数(説明変数)」。

  11. パス図と数式 x1 x2 x3 x4 y e y1 y2 y3

    y4 x e2 e1 e4 e3 y = b1*x1 + b2*x2 + b3*x3 + b4*x4 + e b1 b2 b3 b4 ★ 因子分析モデル(1因子) ★ 重回帰分析モデル y1 = b1*x + e1 y2 = b2*x + e2 y3 = b3*x + e3 y4 = b4*x + e4 b1 b2 b3 b4
  12. 代表的なモデル ★ 検証的的因子分析モデル ★ 重回帰分析モデル

  13. 代表的なモデル ★ 2次因子モデル ★ 多重指標モデル

  14. 測定方程式、構造方程式 母親価値 f1 協調性 f3 相互作用経験 f2 測定方程式 測定方程式 測定方程式

  15. 測定方程式、構造方程式 母親価値 f1 協調性 f3 相互作用経験 f2 構造方程式

  16. • SEM の難しいところ • モデル作りが自由過ぎる。 • 潜在変数の置き方。 • 事前に探索的因子分析(最尤法、斜交回転)を行い 仮説を作っておくのが定石。

    • 潜在変数に関する制約の置き方。 • 潜在変数から内生変数へ伸びるパスのうち一つ の係数を1に固定するのが定石。 • 外生潜在変数の分散を1に固定する流儀もあ る。
  17. 分析の流れ 1.仮説に基づきモデル(パス図)を描く。 ✔ 探索的因子分析などを利用 2.分析を実行、パス係数などの各パラメーターと 適合度を確認。 3.適合度に問題があればモデルの修正を検討。 ✔ 不要な変数、パス、相関の削除。 ✔

    パスや相関の追加。
  18. Rで共分散構造分析 1.sem パッケージについて 2.例題 1.重回帰分析モデル 2.因子分析モデル 3.多重指標モデル ✔ コードはすべてブログに載せておきます。 •

    http://d.hatena.ne.jp/bob3/
  19. Rの sem パッケージについて • R で構造方程式モデリングを実行するための パッケージ • Rcmdr で知られる

    John Fox さんが開発 • 商用のソフトと比べると不満もあるが、入門用と しては十分。 • 特に“多母集団同時分析”ができないのが残念。 • 分析結果のパス図は R 上では描けないが、 Gra phviz などで使える DOT 言語で出力される。
  20. SEM で重回帰分析モデル(1) install.packages("sem") # sem パッケージのインストール library(sem) # sem パッケージの呼び出し

    # 重回帰分析用デモデータ生成。テキストの 298 ページ。 set.seed(1234) 切片 <- 102.385888 父係数 <- 0.316514 母係数 <- 0.021370 父 <- rnorm(n=19, mean=166.84211, sd=5.90916) 母 <- rnorm(n=19, mean=155.94737, sd=4.63649) 残差 <- rnorm(n=19, mean=0, sd=2.15664) 娘 <- 切片 + 父係数 * 父 + 母係数 * 母 + 残差 DATA1 <- cbind( 娘 , 父 , 母 ) # lm() で重回帰分析 重回帰結果 <- lm( 娘 ~ 父 + 母 ) coef( 重回帰結果 ) # 偏回帰係数の出力
  21. SEM で重回帰分析モデル(2) # sem() で重回帰分析 # 分散共分散行列を算出 DATA1.cov <- cov(DATA1)

    # モデルを入力 MODEL1 <- specify.model() 父 -> 娘 , b1, NA # 父から娘へのパス 母 -> 娘 , b2, NA # 母から娘へのパス 娘 <-> 娘 , e1, NA # 残差 父 母 娘 e b1 b2 • specify.model() でのモデルの記述方法。 • 「変数間関係 , パラメータ名 , 固定パラメータ」。 • 「変数間関係」の記述 • 「 -> 」はパス係数(回帰係数)を示す。 • 「 A<->A 」は A の残差を示す。 • 「 A<->B 」は A と B の共分散(相関)を示す。 • 固定パラメータを指定する場合は「パラメータ名」を「 NA 」とする。 モデルに記述するのは 赤文字の部分
  22. SEM で重回帰分析モデル(3) SEM. 重回帰 <- sem(MODEL1, DATA1.cov, 19, fixed.x=c(" 父

    ", " 母 ")) summary(SEM. 重回帰 ) # 結果の出力 # Model Chisquare = 0 Df = 0 Pr(>Chisq) = NA # Chisquare (null model) = 12.997 Df = 3 # Goodness-of-fit index = 1 # BIC = 0 # ( 中略 ) # Parameter Estimates # Estimate Std Error z value Pr(>|z|) # b1 0.380639 0.090213 4.21932 2.4504e-05 娘 <--- 父 # b2 -0.042887 0.088313 -0.48563 6.2723e-01 娘 <--- 母 # e1 3.386136 1.128938 2.99940 2.7051e-03 娘 <--> 娘 # (後略) sem( モデル , 分散共分散行列 , サンプルサイズ , fixed.x=c()) • 外生変数である観測変数がある場合、 fixed.x に指定する。 • 結果の Estimate がパラメータの推定値。 Pr(>|z|) が検定のp値。
  23. SEM で重回帰分析モデル(4) # lm() の結果(偏回帰係数) coef( 重回帰結果 ) # (Intercept)

    父 母 # 100.66683494 0.38063875 -0.04288714 # sem() の結果(パス係数) coef(SEM. 重回帰 ) # b1 b2 e1 # 0.38063875 -0.04288714 3.38613595 lm() の結果と、 sem() の結果が一致していることの確認。
  24. SEM で因子分析モデル(1) # 因子分析用デモデータ生成。テキストの 308 ページ。 set.seed(9999) n <- 200

    因子負荷行列 <- matrix(c(0.09884, 0.17545, 0.52720, 0.73462, 0.45620, 0.72141, 0.47258, 0.17901, 0.07984, 0.37204), nrow=5) 独自性 <- diag(sqrt(c(0.530201, 0.254119, 0.309986, 0.546036, 0.346539))) 因子得点 <- matrix(rnorm(2*n), nrow=2) 独自因子 <- matrix(rnorm(5*n), nrow=5) 五教科 <- round(t( 因子負荷行列 %*% 因子得点 + 独自性 %*% 独自因子 ) * 10 + 50) colnames( 五教科 ) <- c(" 国語 "," 社会 "," 数学 "," 理科 "," 英語 ") # factanal() で探索的因子分析(最尤法、バリマックス回転)。 五教科因子分析 <- factanal( 五教科 , factors=2) print( 五教科因子分析 , cutoff=0, sort=TRUE)
  25. SEM で因子分析モデル(2) • 探索的因子分析と確認的因子分析 • 探索的因子分析( Exploratory Factor Analysis )は、事前に明確な仮説を設定せず、

    潜在する因子を探すための因子。単に「因子分析」と言った場合、探索的因子分析を 指すことがほとんど。 • 確認的(検証的)因子分析( Confirmatory factor analysis )は、事前に明確な仮説を設 定し、観測変数に基づいて仮説と実際のデータがどの程度当てはまっているかを確認 する方法。仮説上で関連がないと想定される因子と観測変数のパス係数はゼロに固 定される。 v1 v2 v3 v4 v5 因子1 e2 e1 e4 e3 因子2 e5 国語 社会 英語 理科 数学 因子1 e2 e1 e4 e3 因子2 e5 EFA CFA
  26. # SEM で確認的因子分析 五教科共分散行列 <- cov( 五教科 ) 因子モデル .1

    <- specify.model() 文系 -> 国語 , b1, NA # パス係数 文系 -> 社会 , b2, NA 文系 -> 英語 , b3, NA 理系 -> 英語 , b4, NA 理系 -> 理科 , b5, NA 理系 -> 数学 , b6, NA 国語 <-> 国語 , e1, NA # 残差 社会 <-> 社会 , e2, NA 英語 <-> 英語 , e3, NA 理科 <-> 理科 , e4, NA 数学 <-> 数学 , e5, NA 文系 <-> 文系 , NA, 1 # 因子(分散を1に固定) 理系 <-> 理系 , NA, 1 SEM. 因子 .1 <- sem( 因子モデル .1, 五教科共分散行列 , 200) SEM で因子分析モデル( 3 ) 国語 社会 英語 理科 数学 文系能力 e2 e1 e4 e3 理系能力 e5 b6 b5 b4 b3 b2 b1
  27. summary(SEM. 因子 .1) # Model Chisquare = 27.694 Df =

    4 Pr(>Chisq) = 1.4389e-05 # Chisquare (null model) = 267.00 Df = 10 # Goodness-of-fit index = 0.9506 # Adjusted goodness-of-fit index = 0.81472 # RMSEA index = 0.17253 90% CI: (0.11540, 0.23581) # Bentler-Bonnett NFI = 0.89628 # Tucker-Lewis NNFI = 0.76952 # Bentler CFI = 0.9078 # SRMR = 0.14677 # BIC = 6.5004 # (続く) SEM で因子分析モデル( 4 ) 分析結果の出力。 まずは適合度の確認。
  28. SEM で因子分析モデル( 5 ) • 様々な適合度 • GFI(Goodness-of-fit index) •

    1に近いほど良い。 0.90 以上が及第点、 0.95 以上が合格点。 • AGFI(Adjusted goodness-of-fit index) • GFI との差が大きいときはパラメータを減らしたほうが良い。 • CFI(Comparative Fit Index) • 1に近いほど良い。 0.90 以上が及第点、 0.95 以上が合格点。 • RMSEA(Root Mean Square Error of Approximation) • 0に近いほど良い。 0.10 以下が及第点、 0.05 以下が合格点。 • BIC • 相対評価。より低いモデルが良いモデル。
  29. # (前略) # Parameter Estimates # Estimate Std Error z

    value Pr(>|z|) # a1 6.8522 0.77559 8.8348 0.0000e+00 国語 <--- 文系 # a2 5.6846 0.59512 9.5521 0.0000e+00 社会 <--- 文系 # a3 4.3648 0.61677 7.0769 1.4737e-12 英語 <--- 文系 # b3 3.5242 0.62665 5.6239 1.8667e-08 英語 <--- 理系 # b4 6.9527 0.91663 7.5851 3.3307e-14 理科 <--- 理系 # b5 5.9235 0.70054 8.4556 0.0000e+00 数学 <--- 理系 # e1 47.4985 8.28690 5.7318 9.9397e-09 国語 <--> 国語 # e2 20.7860 5.11146 4.0665 4.7715e-05 社会 <--> 社会 # e3 35.8932 4.96522 7.2289 4.8694e-13 英語 <--> 英語 # e4 60.6162 10.81770 5.6034 2.1015e-08 理科 <--> 理科 # e5 20.3063 6.80658 2.9833 2.8513e-03 数学 <--> 数学 # # Iterations = 48 SEM で因子分析モデル( 6 ) • 非標準解
  30. # p値を見やすくする。 round(summary(SEM. 因子 .1)$coeff[4], 4) # Pr(>|z|) # a1

    0.0000 # a2 0.0000 # a3 0.0000 # b3 0.0000 # b4 0.0000 # b5 0.0000 # e1 0.0000 # e2 0.0000 # e3 0.0000 # e4 0.0000 # e5 0.0029 SEM で因子分析モデル( 7 ) • パス係数の有意性検定。 • 削除するパスや相関、潜在変数の目安に。
  31. # 解釈は標準化解で。因子負荷量にあたる。 std.coef(SEM. 因子 .1) # Std. Estimate # 1

    a1 0.7050592 国語 <--- 文系 # 2 a2 0.7801019 社会 <--- 文系 # 3 a3 0.5318013 英語 <--- 文系 # 4 b3 0.4293836 英語 <--- 理系 # 5 b4 0.6660833 理科 <--- 理系 # 6 b5 0.7958771 数学 <--- 理系 # 7 e1 0.5028916 国語 <--> 国語 # 8 e2 0.3914410 社会 <--> 社会 # 9 e3 0.5328171 英語 <--> 英語 # 10 e4 0.5563330 理科 <--> 理科 # 11 e5 0.3665797 数学 <--> 数学 # 12 1.0000000 文系 <--> 文系 # 13 1.0000000 理系 <--> 理系 SEM で因子分析モデル( 8 ) • 標準化解
  32. # 修正指標。追加するパスや相関の目安。 mod.indices(SEM. 因子 .1) # 5 largest modification indices,

    A matrix: # 理系 : 社会 理系 : 文系 文系 : 理系 文系 : 数学 社会 : 理系 # 24.95807 20.75158 20.75158 18.44795 15.21006 # # 5 largest modification indices, P matrix: # 理系 : 文系 理系 : 社会 文系 : 数学 数学 : 社会 文系 : 理科 # 20.751581 15.210057 6.879754 4.495674 2.930716 SEM で因子分析モデル( 9 ) • 修正指標 • A マトリクスはパスを、 P マトリクスは相関を追加する目安に。 • ただし、“実質科学的に”解釈できないパスや相関は追加するべきではない。 • この例だと「理系 -> 社会」のパスを引くか、「理系 <-> 文系」の相関を追加する。
  33. # 理系 -> 社会のパスを追加してみる。 因子モデル .2 <- specify.model() 文系 ->

    国語 , b1, NA # パス係数 文系 -> 社会 , b2, NA 文系 -> 英語 , b3, NA 理系 -> 英語 , b4, NA 理系 -> 理科 , b5, NA 理系 -> 数学 , b6, NA 理系 -> 社会 , b7, NA 国語 <-> 国語 , e1, NA # 残差 社会 <-> 社会 , e2, NA 英語 <-> 英語 , e3, NA 理科 <-> 理科 , e4, NA 数学 <-> 数学 , e5, NA 文系 <-> 文系 , NA, 1 # 因子(分散を1に固定) 理系 <-> 理系 , NA, 1 SEM. 因子 .2 <- sem( 因子モデル .2, 五教科共分散行列 , 200) summary(SEM. 因子 .2) SEM で因子分析モデル( 10 ) 国語 社会 英語 理科 数学 文系能力 e2 e1 e4 e3 理系能力 e5 b6 b5 b4 b3 b2 b1 b7 • モデルの修正
  34. 【モデル2】 SEM で因子分析モデル( 11 ) 国語 社会 英語 理科 数学

    文系能力 e2 e1 e4 e3 理系能力 e5 b6 b5 b4 b3 b2 b1 b7 【モデル1】 国語 社会 英語 理科 数学 文系能力 e2 e1 e4 e3 理系能力 e5 b6 b5 b4 b3 b2 b1 【モデル1】 GFI: 0.9506 AGFI: 0.81472 CFI: 0.9078 RMSEA:0.17253 BIC: 6.5004 【モデル2】 GFI: 0.98291 AGFI: 0.91456 CFI: 0.97728 RMSEA:0.098897 BIC: -7.0559
  35. # 文系 <-> 理系の相関を追加してみる。 因子モデル .3 <- specify.model() 文系 ->

    国語 , b1, NA # パス係数 文系 -> 社会 , b2, NA 文系 -> 英語 , b3, NA 理系 -> 英語 , b4, NA 理系 -> 理科 , b5, NA 理系 -> 数学 , b6, NA 国語 <-> 国語 , e1, NA # 残差 社会 <-> 社会 , e2, NA 英語 <-> 英語 , e3, NA 理科 <-> 理科 , e4, NA 数学 <-> 数学 , e5, NA 文系 <-> 文系 , NA, 1 # 因子(分散を1に固定) 理系 <-> 理系 , NA, 1 理系 <-> 文系 , c1, NA SEM. 因子 .3 <- sem( 因子モデル .3, 五教科共分散行列 , 200) summary(SEM. 因子 .3) SEM で因子分析モデル( 12 ) 国語 社会 英語 理科 数学 文系能力 e2 e1 e4 e3 理系能力 e5 b6 b5 b4 b3 b2 b1 c1
  36. 【モデル2】 SEM で因子分析モデル( 13 ) 国語 社会 英語 理科 数学

    文系能力 e2 e1 e4 e3 理系能力 e5 b6 b5 b4 b3 b2 b1 b7 【モデル3】 GFI: 0.99457 AGFI: 0.97286 CFI: 1 RMSEA:0 BIC:-13.163 【モデル2】 GFI: 0.98291 AGFI: 0.91456 CFI: 0.97728 RMSEA:0.098897 BIC: -7.0559 【モデル3】 国語 社会 英語 理科 数学 文系能力 e2 e1 e4 e3 理系能力 e5 b6 b5 b4 b3 b2 b1 c1
  37. SEM で因子分析モデル( 14 ) # パス図の出力(出力された DOT 言語をテキストファイルに保存し Graphviz などで処理する。)

    path.diagram(SEM. 因子 .3, ignore.double=FALSE, edge.labels="values", digits=2, standardize=TRUE) # digraph "SEM. 因子 .3" { # rankdir=LR; # size="8,8"; # node [fontname="Helvetica" fontsize=14 shape=box]; # edge [fontname="Helvetica" fontsize=10]; # center=1; # " 文系 " [shape=ellipse] # " 理系 " [shape=ellipse] # " 文系 " -> " 国語 " [label="0.66"]; # " 文系 " -> " 社会 " [label="0.83"]; # " 文系 " -> " 英語 " [label="0.46"]; # " 理系 " -> " 英語 " [label="0.36"]; # " 理系 " -> " 理科 " [label="0.67"]; # " 理系 " -> " 数学 " [label="0.79"]; # " 国語 " -> " 国語 " [label="0.56" dir=both]; # " 社会 " -> " 社会 " [label="0.31" dir=both]; # " 英語 " -> " 英語 " [label="0.5" dir=both]; # " 理科 " -> " 理科 " [label="0.55" dir=both]; # " 数学 " -> " 数学 " [label="0.38" dir=both]; # " 文系 " -> " 文系 " [label="1" dir=both]; # " 理系 " -> " 理系 " [label="1" dir=both]; # " 理系 " -> " 文系 " [label="0.48" dir=both]; # }
  38. 多重指標モデル (1) • 朝倉書店『マーケティングのデータ分析』のサンプルデータを引用。 • サポートページからデータをダウンロードできます。 • http://www.asakura.co.jp/books/isbn/978-4-254-12822-2/ • インターネットによるアンケート調査のデータの一部

    (n=1066) 。 • ビール類の 10 銘柄についてブランドの評価など5段階評価で測定。 • 銘柄 • アサヒスーパードライ、キリンラガービール、キリン一番絞り、サッポロ生 ビール黒ラベル、エビスビール、サントリー・ザ・プレミアム・モルツ、アサ ヒ本生ドラフト、麒麟淡麗<生>、キリンのどごし<生>、サントリー金 麦 • 評価項目 • 喉越しが良い。香りがよい。味が良い。飲むと幸せな気分になる。飲むと ほっとした気分になる。飲むと爽快な気分になる。自分らしさを表現でき る。自分のイメージアップになる。このブランドを選ぶ人はセンスが良 い。このブランドを選ぶ人は洗練されている。 • 総合的に見て良いブランドである。好きなブランドである。
  39. 多重指標モデル( 2 ) # Excel データの取り込みと整理 library(RODBC) conn <- odbcConnectExcel("data.xls")

    sqlTables(conn) tbl1 <- sqlQuery(conn,"select * from [G1 ローデータ $]" ) tbl2 <- sqlQuery(conn,"select * from [G2 ローデータ $]" ) odbcClose(conn) A <- cbind(tbl1[, 24:26], tbl1[, 39:41], tbl1[, 54:57], tbl1[, 74:75]) B <- cbind(tbl1[, 27:29], tbl1[, 42:44], tbl1[, 58:61], tbl1[, 76:77]) C <- cbind(tbl1[, 30:32], tbl1[, 45:47], tbl1[, 62:65], tbl1[, 78:79]) D <- cbind(tbl1[, 33:35], tbl1[, 48:50], tbl1[, 66:69], tbl1[, 80:81]) E <- cbind(tbl1[, 36:38], tbl1[, 51:53], tbl1[, 70:73], tbl1[, 82:83]) DATA1 <- rbind(data.matrix(A), data.matrix(B), data.matrix(C), data.matrix(D), data.matrix(E)) DATA1 <- data.frame(DATA1, " 銘柄 "=rep(c(" スーパードライ ", " ラガー ", " エビス ", " 淡麗 ", " 金麦 "), eac=577) ) # 警告が出るけど問題なし。 F <- cbind(tbl2[, 24:26], tbl2[, 39:41], tbl2[, 54:57], tbl2[, 74:75]) G <- cbind(tbl2[, 27:29], tbl2[, 42:44], tbl2[, 58:61], tbl2[, 76:77]) H <- cbind(tbl2[, 30:32], tbl2[, 45:47], tbl2[, 62:65], tbl2[, 78:79]) I <- cbind(tbl2[, 33:35], tbl2[, 48:50], tbl2[, 66:69], tbl2[, 80:81]) J <- cbind(tbl2[, 36:38], tbl2[, 51:53], tbl2[, 70:73], tbl2[, 82:83]) DATA2 <- rbind(data.matrix(F), data.matrix(G), data.matrix(H), data.matrix(I), data.matrix(J)) DATA2 <- data.frame(DATA2, brand=rep(c(" 一番搾り ", " 黒ラベル ", " プレミアムモルツ "," 本生 ", " のどごし "), eac=530) ) # 警告が出るけど問題なし。 colnames(DATA1) <- colnames(DATA2) <- c(" 喉越し ", " 香り ", " 味 ", " 幸せ ", " ほっとした ", " 爽快 ", " 自分らしさ ", " イメージアップ ", " センス ", " 洗練 ", " 良い ", " 好き ", " 銘柄 ") DATA <- rbind(DATA1, DATA2) DATA <- na.omit(DATA)
  40. 多重指標モデル (3) # 探索的因子分析 library(psych) DATA.FA <- DATA[,1:10] # 説明変数相当の変数のみを使う

    fa.parallel(DATA.FA, fm="ml") # 平行分析で因子数を推定 EFA <- fa(DATA.FA, nfactors=3, rotate="promax", fm="ml") print(EFA, sort=TRUE) > ML1 ML2 ML3 h2 u2 > 洗練 0.97 0.04 -0.04 0.92 0.319 > センス 0.96 0.04 -0.03 0.93 0.189 > イメージアップ 0.90 -0.01 0.05 0.87 0.081 > 自分らしさ 0.78 0.01 0.14 0.79 0.102 > 味 0.03 0.94 0.00 0.92 0.118 > 香り 0.07 0.85 0.00 0.81 0.262 > 喉越し -0.05 0.72 0.17 0.68 0.209 > ほっとした 0.03 0.05 0.88 0.88 0.135 > 幸せ 0.04 0.04 0.88 0.90 0.071 > 爽快 -0.01 0.19 0.71 0.74 0.078
  41. 多重指標モデル (4) fa.diagram(EFA) cor.plot(EFA, color=TRUE)

  42. 多重指標モデル (5) • 仮説作り(パス図) 喉越し 香り 味 幸せ 爽快 機能便益

    e2 e1 e4 e3 情緒便益 e6 [1] b2 b1 b9 [1] ほっとした 自分らしさ イメージアップ センス 洗練 e7 e5 e9 e8 自己表現 便益 e10 b11 b7 b6 b5 b8 [1] ブランド 評価 好き e12 良い e11 e b10 b4 b3 [1]
  43. 多重指標モデル (6) # 仮説モデルの入力 library(sem) DATA.SEM <- cov(DATA[,-13]) model1 <-

    specify.model() 機能便益 <-> 機能便益 , f1, NA # 測定方程式 機能便益 -> 喉越し , NA, 1 機能便益 -> 香り , b1, NA 機能便益 -> 味 , b2, NA 情緒便益 <-> 情緒便益 , f2, NA 情緒便益 -> 幸せ , NA, 1 情緒便益 -> ほっとした , b3, NA 情緒便益 -> 爽快 , b4, NA 自己表現便益 <-> 自己表現便益 , f3, NA 自己表現便益 -> 自分らしさ , NA, 1 自己表現便益 -> イメージアップ , b5, NA 自己表現便益 -> センス , b6, NA 自己表現便益 -> 洗練 , b7, NA ブランド評価 <-> ブランド評価 , f4, NA ブランド評価 -> 良い , NA, 1 ブランド評価 -> 好き , b8, NA 機能便益 -> ブランド評価 , b9, NA # 測定方程式 情緒便益 -> ブランド評価 , b10, NA 自己表現便益 -> ブランド評価 , b11, NA 喉越し <-> 喉越し , e1, NA # 残差 香り <-> 香り , e2, NA 味 <-> 味 , e3, NA 幸せ <-> 幸せ , e4, NA ほっとした <-> ほっとした , e5, NA 爽快 <-> 爽快 , e6, NA 自分らしさ <-> 自分らしさ , e7, NA イメージアップ <-> イメージアップ , e8, NA センス <-> センス , e9, NA 洗練 <-> 洗練 , e10, NA 良い <-> 良い , e11, NA 好き <-> 好き , e12, NA
  44. 多重指標モデル (7) # SEM の実行 model1.sem <- sem(model1, DATA.SEM, N=nrow(DATA))

    summary(model1.sem) # 出力は省略 round(summary(model1.sem)$coeff[4], 4) # p 値を見やすく # 出力は省略 mod.indices(model1.sem) # 修正指標 > 5 largest modification indices, A matrix: > 情緒便益 : 機能便益 機能便益 : 情緒便益 情緒便益 : 味 機能便益 : 幸せ > 3404.840 3404.840 3256.222 3166.385 > 機能便益 : ほっとした > 3101.308 > > 5 largest modification indices, P matrix: > 情緒便益 : 機能便益 自己表現便益 : 情緒便益 自己表現便益 : 機能便益 > 3404.8395 2583.0519 2308.1715 > イメージアップ : 自分らしさ 爽快 : 喉越し > 650.8733 372.1877
  45. 多重指標モデル (8) 【適合度の比較】 GFI AGFI CFI RMSEA BIC モデル1 (仮説モデル)

    0.7602 0.63324 0.85773 0.20367 10887 モデル2 (因子間相関追加) 0.93947 0.90164 0.97533 0.087427 1591.3 モデル3 (「情緒 -> 自分らしさ」パス追加) 0.94637 0.91099 0.97767 0.084048 1413 モデル4 ( 「「情緒 -> 喉越し」パス追加) 0.94722 0.9105 0.97855 0.083267 1350.9
  46. 多重指標モデル (9) # パス図の出力。 DOT 言語で出力される。 # テキストファイルにして保存し、 # GraphViz

    などで処理する。 # ここでは EasyGraphViz というソフトを使った。 model1.sem <- sem(model4, DATA.SEM, N=nrow(DATA)) path.diagram(model4.sem, ignore.double=FALSE , edge.labels="values", digits=3, standardize=TRUE)
  47. 多重指標モデル (10) • 多母集団“別々”分析? • 評価構造のブランドによる違い を見たい。 • 本当は「多母集団同時分析」す べきだが、

    sem パッケージでは できないので… 【多母集団 “別々”分析】 ブランド評価への影響(非標準解) CFI RMSEA 機能便益 情緒便益 自己表現便益 プレミアムモルツ 0.458 0.138 0.405 0.980 0.083 スーパードライ 0.980 0.153 0.109 0.966 0.107 ラガー 0.364 0.371 0.098 0.984 0.071 機能便益 情緒便益 自己表現便益 0 0.2 0.4 0.6 0.8 1 1.2 プレミアム モルツ スーパード ライ ラガー
  48. 説明してないこと • 飽和モデル、独立モデル • 単純効果、総合効果 • 多母集団同時分析

  49. 参考にさせていただきました • 『構造方程式モデリング 基本の「き」』 • http://www.slideshare.net/MasahiroShinohar a/100614-4502873 • 篠原正裕さん (@slowtempo) による「

    Twiccher 勉強会」のための資料。 • 『 R で SEM 入門  SEM は(そんなに)怖くない』 • http://m884.jp/Osaka.R/osaka.r_no.3 • 林真広さん( @phosphor_m )による「 Osaka.R# 3 」のための資料。
  50. 参考文献 • 『原因をさぐる統計学』豊田秀樹・前田忠彦・柳井晴夫 • 『共分散構造分析の実際』朝野熙彦・鈴木督久・小島隆矢 • 『 Excel で学ぶ共分散構造分析とグラフィカルモデリング』小島隆矢