50
『 R によるやさしい統計学』 第 17 章 「共分散構造分析」 Bob#3 ( @bob3bob3 ) Tokyo.R#7 2010 年 7 月 24 日

Tokyo r7 sem_20100724

Embed Size (px)

DESCRIPTION

Tokyo.R#7

Citation preview

Page 1: Tokyo r7 sem_20100724

『 R によるやさしい統計学』第 17 章

「共分散構造分析」

Bob#3 ( @bob3bob3 )

Tokyo.R#7 2010 年 7 月 24 日

Page 2: Tokyo r7 sem_20100724

自己紹介

✔hatena:bob3✔twitter:@bob3bob3

✔ マーケティングリサーチャー

✔ 文系

✔ 歌えません。

✔ 踊れません。

✔ 好きな音楽

✔ プログレッシブ・ロック✔ フォークトロニカ

Page 3: Tokyo r7 sem_20100724

共分散構造分析とは?

● 因子分析と重回帰分析を統合した分析● それだけではないが、まずはこう理解。

● 別名「構造方程式モデリング」● Structural Esuation Modeling 、略して SEM 。

● なので、“ sem” パッケージという名前。

● 複雑な変数間の関係を統計的に検証できる。● モデルとデータの当てはまりを検証、評価する。

● 「適合度」が重要。

Page 4: Tokyo r7 sem_20100724

共分散構造分析とは?

● 何がうれしいの?● 因果関係推論の強力な道具になる。

● パス図による表現で変数の関係が分かりやすい。

● どんなデータを使うの?● 分散共分散行列(相関行列)。

● 出力のどこを見ればいいの?● まずは、適合度とパス係数。

Page 5: Tokyo r7 sem_20100724

共分散構造分析とは?

● 主に心理学、社会学の世界で発達してきた。

● 近年はマーケティングの世界でも活用されている。

● 例)日経 BP コンサルティング「ブランドジャパン」

Page 6: Tokyo r7 sem_20100724

共分散構造分析とは?

★ ベネッセの「ブランド間関係性のスコア化」事例

http://www.jmra-net.or.jp/conference/2009/pdf/JKR_091201.pdf

Page 7: Tokyo r7 sem_20100724

共分散構造分析の主なツール

● AMOS(SPSS)● デファクトスタンダード。デモ版( Student Version )あり。

● EQS● CALIS(SAS)● Mplus

● 最強説もあるが、まだ利用者が少ない。

● 「ブランドジャパン」は Mplus を使っているらしい。

Page 8: Tokyo r7 sem_20100724

パス図について

母親価値f1

協調性f3

相互作用経験f2

Page 9: Tokyo r7 sem_20100724

パス図のお約束

〔観測変数〕既知の変数。直接測定できるデータ。

〔潜在変数(因子)〕未知の変数。直接測定できないデータ。

パス係数(回帰係数)

共分散(相関係数)

〔残差〕外生変数では説明しきれない効果をひとつにまとめたもの。

Page 10: Tokyo r7 sem_20100724

パス図のお約束

〔内生変数〕他の変数から矢印を受けている変数。回帰分析における「従属変数(目的変数)」。必ず残差を伴う。

〔残差〕

〔外生変数〕他の変数から矢印を受けていない変数。回帰分析における「独立変数(説明変数)」。

Page 11: Tokyo r7 sem_20100724

パス図と数式

x1

x2

x3

x4

y e

y1

y2

y3

y4

xe2

e1

e4

e3

y = b1*x1 + b2*x2 + b3*x3 + b4*x4 + e

b1

b2

b3

b4

★因子分析モデル(1因子)★重回帰分析モデル

y1 = b1*x + e1y2 = b2*x + e2y3 = b3*x + e3y4 = b4*x + e4

b1

b2

b3

b4

Page 12: Tokyo r7 sem_20100724

代表的なモデル

★検証的的因子分析モデル★重回帰分析モデル

Page 13: Tokyo r7 sem_20100724

代表的なモデル

★2次因子モデル

★多重指標モデル

Page 14: Tokyo r7 sem_20100724

測定方程式、構造方程式

母親価値f1

協調性f3

相互作用経験f2

測定方程式

測定方程式

測定方程式

Page 15: Tokyo r7 sem_20100724

測定方程式、構造方程式

母親価値f1

協調性f3

相互作用経験f2

構造方程式

Page 16: Tokyo r7 sem_20100724

●SEM の難しいところ

● モデル作りが自由過ぎる。● 潜在変数の置き方。

● 事前に探索的因子分析(最尤法、斜交回転)を行い仮説を作っておくのが定石。

● 潜在変数に関する制約の置き方。● 潜在変数から内生変数へ伸びるパスのうち一つの係数を1に固定するのが定石。

● 外生潜在変数の分散を1に固定する流儀もある。

Page 17: Tokyo r7 sem_20100724

分析の流れ

1.仮説に基づきモデル(パス図)を描く。✔ 探索的因子分析などを利用

2.分析を実行、パス係数などの各パラメーターと適合度を確認。

3.適合度に問題があればモデルの修正を検討。✔ 不要な変数、パス、相関の削除。✔ パスや相関の追加。

Page 18: Tokyo r7 sem_20100724

Rで共分散構造分析

1.sem パッケージについて

2.例題

1.重回帰分析モデル2.因子分析モデル3.多重指標モデル

✔ コードはすべてブログに載せておきます。

● http://d.hatena.ne.jp/bob3/

Page 19: Tokyo r7 sem_20100724

Rの sem パッケージについて

● R で構造方程式モデリングを実行するためのパッケージ

● Rcmdr で知られる John Foxさんが開発● 商用のソフトと比べると不満もあるが、入門用と

しては十分。● 特に“多母集団同時分析”ができないのが残念。

● 分析結果のパス図は R上では描けないが、Graphvizなどで使える DOT言語で出力される。

Page 20: Tokyo r7 sem_20100724

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(重回帰結果) # 偏回帰係数の出力

Page 21: Tokyo r7 sem_20100724

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 」とする。

モデルに記述するのは赤文字の部分

Page 22: Tokyo r7 sem_20100724

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値。

Page 23: Tokyo r7 sem_20100724

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() の結果が一致していることの確認。

Page 24: Tokyo r7 sem_20100724

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)

Page 25: Tokyo r7 sem_20100724

SEM で因子分析モデル(2)

● 探索的因子分析と確認的因子分析● 探索的因子分析( Exploratory Factor Analysis )は、事前に明確な仮説を設定せず、

潜在する因子を探すための因子。単に「因子分析」と言った場合、探索的因子分析を指すことがほとんど。

● 確認的(検証的)因子分析( Confirmatory factor analysis )は、事前に明確な仮説を設定し、観測変数に基づいて仮説と実際のデータがどの程度当てはまっているかを確認する方法。仮説上で関連がないと想定される因子と観測変数のパス係数はゼロに固定される。

v1

v2

v3

v4

v5

因子1e2

e1

e4

e3

因子2

e5

国語

社会

英語

理科

数学

因子1e2

e1

e4

e3

因子2

e5

EFA CFA

Page 26: Tokyo r7 sem_20100724

# 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

b5b4

b3b2b1

Page 27: Tokyo r7 sem_20100724

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 )

分析結果の出力。まずは適合度の確認。

Page 28: Tokyo r7 sem_20100724

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● 相対評価。より低いモデルが良いモデル。

Page 29: Tokyo r7 sem_20100724

# (前略)# 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 )

● 非標準解

Page 30: Tokyo r7 sem_20100724

# 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 )

●パス係数の有意性検定。●削除するパスや相関、潜在変数の目安に。

Page 31: Tokyo r7 sem_20100724

# 解釈は標準化解で。因子負荷量にあたる。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 )

● 標準化解

Page 32: Tokyo r7 sem_20100724

# 修正指標。追加するパスや相関の目安。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 マトリクスは相関を追加する目安に。

● ただし、“実質科学的に”解釈できないパスや相関は追加するべきではない。● この例だと「理系 ->社会」のパスを引くか、「理系 <->文系」の相関を追加する。

Page 33: Tokyo r7 sem_20100724

# 理系 ->社会のパスを追加してみる。因子モデル.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

b5b4

b3b2b1

b7

● モデルの修正

Page 34: Tokyo r7 sem_20100724

【モデル2】

SEM で因子分析モデル( 11 )

国語

社会

英語

理科

数学

文系能力e2

e1

e4

e3

理系能力

e5 b6

b5b4

b3b2b1

b7

【モデル1】国語

社会

英語

理科

数学

文系能力e2

e1

e4

e3

理系能力

e5 b6

b5b4

b3b2b1

【モデル1】GFI: 0.9506AGFI: 0.81472CFI: 0.9078RMSEA:0.17253BIC: 6.5004

【モデル2】GFI: 0.98291AGFI: 0.91456CFI: 0.97728RMSEA:0.098897BIC: -7.0559

Page 35: Tokyo r7 sem_20100724

# 文系 <->理系の相関を追加してみる。因子モデル.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

b5b4

b3b2b1

c1

Page 36: Tokyo r7 sem_20100724

【モデル2】

SEM で因子分析モデル( 13 )

国語

社会

英語

理科

数学

文系能力e2

e1

e4

e3

理系能力

e5 b6

b5b4

b3b2b1

b7

【モデル3】GFI: 0.99457AGFI: 0.97286CFI: 1RMSEA:0BIC:-13.163

【モデル2】GFI: 0.98291AGFI: 0.91456CFI: 0.97728RMSEA:0.098897BIC: -7.0559

【モデル3】国語

社会

英語

理科

数学

文系能力e2

e1

e4

e3

理系能力

e5 b6

b5b4

b3b2b1

c1

Page 37: Tokyo r7 sem_20100724

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];# }

Page 38: Tokyo r7 sem_20100724

多重指標モデル (1)● 朝倉書店『マーケティングのデータ分析』のサンプルデータを引用。

● サポートページからデータをダウンロードできます。

● http://www.asakura.co.jp/books/isbn/978-4-254-12822-2/● インターネットによるアンケート調査のデータの一部 (n=1066) 。

● ビール類の 10銘柄についてブランドの評価など5段階評価で測定。

● 銘柄● アサヒスーパードライ、キリンラガービール、キリン一番絞り、サッポロ生ビール黒ラベル、エビスビール、サントリー・ザ・プレミアム・モルツ、アサヒ本生ドラフト、麒麟淡麗<生>、キリンのどごし<生>、サントリー金麦

● 評価項目● 喉越しが良い。香りがよい。味が良い。飲むと幸せな気分になる。飲むとほっとした気分になる。飲むと爽快な気分になる。自分らしさを表現できる。自分のイメージアップになる。このブランドを選ぶ人はセンスが良い。このブランドを選ぶ人は洗練されている。

● 総合的に見て良いブランドである。好きなブランドである。

Page 39: Tokyo r7 sem_20100724

多重指標モデル( 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)

Page 40: Tokyo r7 sem_20100724

多重指標モデル (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

Page 41: Tokyo r7 sem_20100724

多重指標モデル (4)fa.diagram(EFA)cor.plot(EFA, color=TRUE)

Page 42: Tokyo r7 sem_20100724

多重指標モデル (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]

Page 43: Tokyo r7 sem_20100724

多重指標モデル (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

Page 44: Tokyo r7 sem_20100724

多重指標モデル (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

Page 45: Tokyo r7 sem_20100724

多重指標モデル (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

Page 46: Tokyo r7 sem_20100724

多重指標モデル (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)

Page 47: Tokyo r7 sem_20100724

多重指標モデル (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プレミアムモルツスーパードライラガー

Page 48: Tokyo r7 sem_20100724

説明してないこと

● 飽和モデル、独立モデル● 単純効果、総合効果● 多母集団同時分析

Page 49: Tokyo r7 sem_20100724

参考にさせていただきました

● 『構造方程式モデリング 基本の「き」』● 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 」のための資料。

Page 50: Tokyo r7 sem_20100724

参考文献

● 『原因をさぐる統計学』豊田秀樹・前田忠彦・柳井晴夫

● 『共分散構造分析の実際』朝野熙彦・鈴木督久・小島隆矢

● 『 Excel で学ぶ共分散構造分析とグラフィカルモデリング』小島隆矢