SlideShare ist ein Scribd-Unternehmen logo
1 von 50
Downloaden Sie, um offline zu lesen
『 R によるやさしい統計学』
        第 17 章
「共分散構造分析」
  Bob#3 ( @bob3bob3 )

      Tokyo.R#7
   2010 年 7 月 24 日
自己紹介
  ✔hatena:bob3
  ✔twitter:@bob3bob3

      ✔   マーケティングリサーチャー
      ✔
          文系
      ✔
          歌えません。
      ✔
          踊れません。
      ✔
          好きな音楽
          ✔
              プログレッシブ・ロック
          ✔
              フォークトロニカ
共分散構造分析とは?

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

●   別名「構造方程式モデリング」
    ●   Structural Esuation Modeling 、略して SEM 。
         ● なので、“ sem” パッケージという名前。




●   複雑な変数間の関係を統計的に検証できる。
    ●
        モデルとデータの当てはまりを検証、評価する。
         ●
           「適合度」が重要。
共分散構造分析とは?

●   何がうれしいの?
    ●
        因果関係推論の強力な道具になる。
    ●
        パス図による表現で変数の関係が分かりやすい。

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

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




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

●   AMOS(SPSS)
    ●   デファクトスタンダード。デモ版( Student Version )あり。
●   EQS
●
    CALIS(SAS)
●
    Mplus
    ●   最強説もあるが、まだ利用者が少ない。
    ●   「ブランドジャパン」は Mplus を使っているらしい。
パス図について


       相互作用経験
          f2




母親価値
 f1




        協調性
         f3
パス図のお約束


 〔観測変数〕           パス係数
 既知の変数。          (回帰係数)
 直接測定できるデータ。


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



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


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




〔内生変数〕
他の変数から矢印を受けている変数。        〔残差〕
回帰分析における「従属変数(目的変数)」。
必ず残差を伴う。
パス図と数式
 ★ 重回帰分析モデル                        ★ 因子分析モデル(1因子)
    x1                                  e1   y1
          b1                                            b1
    x2    b2                            e2    y2        b2
          b3       y        e                                         x
    x3                                                  b3
                                        e3    y3
          b4                                            b4
    x4                                  e4    y4
y = b1*x1 + b2*x2 + b3*x3 + b4*x4 + e        y1   =   b1*x   +   e1
                                             y2   =   b2*x   +   e2
                                             y3   =   b3*x   +   e3
                                             y4   =   b4*x   +   e4
代表的なモデル
★ 重回帰分析モデル   ★ 検証的的因子分析モデル
代表的なモデル
 ★ 多重指標モデル




★ 2次因子モデル
測定方程式、構造方程式
                 測定方程式


測定方程式            相互作用経験
                    f2



          母親価値
            f1

                 測定方程式

                  協調性
                   f3
測定方程式、構造方程式

  構造方程式


          相互作用経験
             f2



   母親価値
     f1




           協調性
            f3
SEM の難しいところ
           ●



●   モデル作りが自由過ぎる。
●   潜在変数の置き方。
    ●   事前に探索的因子分析(最尤法、斜交回転)を行い
        仮説を作っておくのが定石。
●   潜在変数に関する制約の置き方。
    ●   潜在変数から内生変数へ伸びるパスのうち一つ
        の係数を1に固定するのが定石。
    ●
        外生潜在変数の分散を1に固定する流儀もあ
        る。
分析の流れ
1.仮説に基づきモデル(パス図)を描く。
 ✔
     探索的因子分析などを利用


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

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

1.sem パッケージについて
2.例題
  1.重回帰分析モデル
  2.因子分析モデル
  3.多重指標モデル
✔   コードはすべてブログに載せておきます。
    ●   http://d.hatena.ne.jp/bob3/
Rの sem パッケージについて
●   R で構造方程式モデリングを実行するための
    パッケージ
●   Rcmdr で知られる John Fox さんが開発
●   商用のソフトと比べると不満もあるが、入門用と
    しては十分。
    ●
        特に“多母集団同時分析”ができないのが残念。
●   分析結果のパス図は R 上では描けないが、 Gra
    phviz などで使える DOT 言語で出力される。
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( 重回帰結果 ) # 偏回帰係数の出力
SEM で重回帰分析モデル(2)
# sem() で重回帰分析
# 分散共分散行列を算出                              父    b1
DATA1.cov <- cov(DATA1)                             娘    e
                                          母    b2
# モデルを入力
MODEL1 <- specify.model()
  父 -> 娘 , b1, NA # 父から娘へのパス
  母 -> 娘 , b2, NA # 母から娘へのパス                        モデルに記述するのは
  娘 <-> 娘 , e1, NA # 残差                               赤文字の部分

 ●
  specify.model() でのモデルの記述方法。
     ●   「変数間関係 , パラメータ名 , 固定パラメータ」。
         ●   「変数間関係」の記述
             ●
               「 -> 」はパス係数(回帰係数)を示す。
             ●
               「 A<->A 」は A の残差を示す。
             ●
               「 A<->B 」は A と B の共分散(相関)を示す。
         ●
             固定パラメータを指定する場合は「パラメータ名」を「 NA 」とする。
SEM で重回帰分析モデル(3)
sem( モデル , 分散共分散行列 , サンプルサイズ , fixed.x=c())
●
    外生変数である観測変数がある場合、 fixed.x に指定する。
●
    結果の Estimate がパラメータの推定値。 Pr(>|z|) が検定のp値。

    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 で重回帰分析モデル(4)
lm() の結果と、 sem() の結果が一致していることの確認。


     # lm() の結果(偏回帰係数)
     coef( 重回帰結果 )
     # (Intercept)          父           母
     # 100.66683494 0.38063875 -0.04288714

     # sem() の結果(パス係数)
     coef(SEM. 重回帰 )
     #          b1         b2         e1
     # 0.38063875 -0.04288714 3.38613595
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)
SEM で因子分析モデル(2)
●   探索的因子分析と確認的因子分析
●
    探索的因子分析( Exploratory Factor Analysis )は、事前に明確な仮説を設定せず、
    潜在する因子を探すための因子。単に「因子分析」と言った場合、探索的因子分析を
    指すことがほとんど。
●
    確認的(検証的)因子分析( Confirmatory factor analysis )は、事前に明確な仮説を設
    定し、観測変数に基づいて仮説と実際のデータがどの程度当てはまっているかを確認
    する方法。仮説上で関連がないと想定される因子と観測変数のパス係数はゼロに固
    定される。

    e1    v1           EFA       e1    国語            CFA

    e2    v2         因子1         e2    社会          因子1
    e3    v3                     e3   英語
    e4    v4         因子2         e4    理科          因子2
    e5    v5                     e5    数学
SEM で因子分析モデル( 3 )

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

SEM. 因子 .1 <- sem( 因子モデル .1, 五教科共分散行列 , 200)
SEM で因子分析モデル( 4 )
分析結果の出力。
まずは適合度の確認。

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 で因子分析モデル( 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
         ●   相対評価。より低いモデルが良いモデル。
SEM で因子分析モデル( 6 )
●   非標準解
    #   (前略)
    #    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 で因子分析モデル( 7 )
 ●
  パス係数の有意性検定。
 ●削除するパスや相関、潜在変数の目安に。




     # 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 で因子分析モデル( 8 )
●   標準化解
       # 解釈は標準化解で。因子負荷量にあたる。
       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 で因子分析モデル( 9 )
●
 修正指標
●
 A マトリクスはパスを、 P マトリクスは相関を追加する目安に。
    ●
        ただし、“実質科学的に”解釈できないパスや相関は追加するべきではない。
    ●
        この例だと「理系 -> 社会」のパスを引くか、「理系 <-> 文系」の相関を追加する。


          # 修正指標。追加するパスや相関の目安。
          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 で因子分析モデル( 10 )
   ●   モデルの修正                  e1   国語
                                         b1
# 理系 -> 社会のパスを追加してみる。        e2     社会   b2
因子モデル .2 <- specify.model()                    文系能力
  文系 -> 国語 , b1, NA # パス係数                b3
                             e3     英語
  文系 -> 社会 , b2, NA                    b4 b7
  文系 -> 英語 , b3, NA                            理系能力
  理系 -> 英語 , b4, NA          e4 理科 b5
  理系 -> 理科 , b5, NA
  理系 -> 数学 , b6, NA          e5 数学 b6
  理系 -> 社会 , 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 で因子分析モデル( 11 )
                  【モデル1】                  【モデル2】
e1   国語                    e1   国語
             b1                      b1
e2   社会      b2    文系能力    e2   社会   b2     文系能力
             b3                       b3
e3   英語                    e3   英語
        b4                         b4 b7
e4   理科 b5         理系能力    e4   理科 b5       理系能力

e5   数学 b6                 e5   数学 b6

       【モデル1】                    【モデル2】
       GFI: 0.9506               GFI: 0.98291
       AGFI: 0.81472             AGFI: 0.91456
       CFI: 0.9078               CFI: 0.97728
       RMSEA:0.17253             RMSEA:0.098897
       BIC: 6.5004               BIC: -7.0559
SEM で因子分析モデル( 12 )
# 文系 <-> 理系の相関を追加してみる。
因子モデル .3 <- specify.model()  e1 国語
  文系 -> 国語 , b1, NA # パス係数             b1
  文系 -> 社会 , b2, NA          e2 社会     b2
  文系 -> 英語 , b3, NA                            文系能力
                                        b3
  理系 -> 英語 , b4, NA          e3 英語                 c1
  理系 -> 理科 , b5, NA                 b4
  理系 -> 数学 , b6, NA
                             e4 理科 b5          理系能力
  国語 <-> 国語 , e1, NA # 残差
  社会 <-> 社会 , e2, NA
  英語 <-> 英語 , e3, NA         e5 数学 b6
  理科 <-> 理科 , e4, NA
  数学 <-> 数学 , e5, NA
  文系 <-> 文系 , NA, 1   # 因子(分散を1に固定)
  理系 <-> 理系 , NA, 1
  理系 <-> 文系 , c1, NA

SEM. 因子 .3 <- sem( 因子モデル .3, 五教科共分散行列 , 200)
summary(SEM. 因子 .3)
SEM で因子分析モデル( 13 )
                   【モデル3】                  【モデル2】
e1   国語                     e1   国語
             b1                       b1
e2   社会      b2    文系能力     e2   社会   b2     文系能力
              b3                       b3
e3   英語                c1   e3   英語
        b4                          b4 b7
e4   理科 b5         理系能力     e4   理科 b5       理系能力

e5   数学 b6                  e5   数学 b6

      【モデル3】                      【モデル2】
      GFI: 0.99457                GFI: 0.98291
      AGFI: 0.97286               AGFI: 0.91456
      CFI: 1                      CFI: 0.97728
      RMSEA:0                     RMSEA:0.098897
      BIC:-13.163                 BIC: -7.0559
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];
# }
多重指標モデル (1)
●
    朝倉書店『マーケティングのデータ分析』のサンプルデータを引用。
    ●
        サポートページからデータをダウンロードできます。
    ●   http://www.asakura.co.jp/books/isbn/978-4-254-12822-2/
●
    インターネットによるアンケート調査のデータの一部 (n=1066) 。
    ●
        ビール類の 10 銘柄についてブランドの評価など5段階評価で測定。
         ●
             銘柄
              ● アサヒスーパードライ、キリンラガービール、キリン一番絞り、サッポロ生

                ビール黒ラベル、エビスビール、サントリー・ザ・プレミアム・モルツ、アサ
                ヒ本生ドラフト、麒麟淡麗<生>、キリンのどごし<生>、サントリー金
                麦
         ●
             評価項目
              ●
                喉越しが良い。香りがよい。味が良い。飲むと幸せな気分になる。飲むと
                ほっとした気分になる。飲むと爽快な気分になる。自分らしさを表現でき
                る。自分のイメージアップになる。このブランドを選ぶ人はセンスが良
                い。このブランドを選ぶ人は洗練されている。
              ●
                総合的に見て良いブランドである。好きなブランドである。
多重指標モデル( 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)
多重指標モデル (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
多重指標モデル (4)
fa.diagram(EFA)
cor.plot(EFA, color=TRUE)
多重指標モデル (5)
●    仮説作り(パス図)
e1      喉越し     [1]
e2      香り      b1
                      機能便益
e3       味      b2
                               b9    e
e4      幸せ      [1]
                                           [1]   良い   e11
                b3    情緒便益   b10    ブランド
e5     ほっとした                         評価
                                           b8    好き   e12
e6      爽快      b4

e7     自分らしさ    [1]           b11
e8    イメージアップ   b5    自己表現
                       便益
e9      センス     b6
e10     洗練      b7
多重指標モデル (6)

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

●   多母集団“別々”分析?                         1
                                                                 プレミアム
                                                                 モルツ
                                                                 スーパード
                                                                 ライ
    ●
        評価構造のブランドによる違い                 0.8
                                                                 ラガー


        を見たい。                          0.6

    ●
        本当は「多母集団同時分析」す                 0.4

        べきだが、 sem パッケージでは
        できないので…                        0.2



                                        0
                                       機能便益           情緒便益       自己表現便益

    【多母集団       ブランド評価への影響(非標準解)               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
説明してないこと
●   飽和モデル、独立モデル
●   単純効果、総合効果
●   多母集団同時分析
参考にさせていただきました
●   『構造方程式モデリング 基本の「き」』
     ●
       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 」のための資料。
参考文献
●   『原因をさぐる統計学』豊田秀樹・前田忠彦・柳井晴夫
●
    『共分散構造分析の実際』朝野熙彦・鈴木督久・小島隆矢
●   『 Excel で学ぶ共分散構造分析とグラフィカルモデリング』小島隆矢

Weitere ähnliche Inhalte

Was ist angesagt?

多重代入法の書き方 公開用
多重代入法の書き方 公開用 多重代入法の書き方 公開用
多重代入法の書き方 公開用 Koichiro Gibo
 
心理学におけるベイズ統計の流行を整理する
心理学におけるベイズ統計の流行を整理する心理学におけるベイズ統計の流行を整理する
心理学におけるベイズ統計の流行を整理するHiroshi Shimizu
 
ベイズモデリングと仲良くするために
ベイズモデリングと仲良くするためにベイズモデリングと仲良くするために
ベイズモデリングと仲良くするためにShushi Namba
 
20180118 一般化線形モデル(glm)
20180118 一般化線形モデル(glm)20180118 一般化線形モデル(glm)
20180118 一般化線形モデル(glm)Masakazu Shinoda
 
心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズHiroshi Shimizu
 
ベイズファクターとモデル選択
ベイズファクターとモデル選択ベイズファクターとモデル選択
ベイズファクターとモデル選択kazutantan
 
SapporoR#6 初心者セッションスライド
SapporoR#6 初心者セッションスライドSapporoR#6 初心者セッションスライド
SapporoR#6 初心者セッションスライドHiroshi Shimizu
 
SEMを用いた縦断データの解析 潜在曲線モデル
SEMを用いた縦断データの解析 潜在曲線モデルSEMを用いた縦断データの解析 潜在曲線モデル
SEMを用いた縦断データの解析 潜在曲線モデルMasaru Tokuoka
 
階層ベイズと自由エネルギー
階層ベイズと自由エネルギー階層ベイズと自由エネルギー
階層ベイズと自由エネルギーHiroshi Shimizu
 
Chapter9 一歩進んだ文法(前半)
Chapter9 一歩進んだ文法(前半)Chapter9 一歩進んだ文法(前半)
Chapter9 一歩進んだ文法(前半)itoyan110
 
StanとRでベイズ統計モデリング 11章 離散値をとるパラメータ
StanとRでベイズ統計モデリング 11章 離散値をとるパラメータStanとRでベイズ統計モデリング 11章 離散値をとるパラメータ
StanとRでベイズ統計モデリング 11章 離散値をとるパラメータMiki Katsuragi
 
マルチレベルモデル講習会 理論編
マルチレベルモデル講習会 理論編マルチレベルモデル講習会 理論編
マルチレベルモデル講習会 理論編Hiroshi Shimizu
 
第4回DARM勉強会 (多母集団同時分析)
第4回DARM勉強会 (多母集団同時分析)第4回DARM勉強会 (多母集団同時分析)
第4回DARM勉強会 (多母集団同時分析)Masaru Tokuoka
 
マルチレベルモデル講習会 実践編
マルチレベルモデル講習会 実践編マルチレベルモデル講習会 実践編
マルチレベルモデル講習会 実践編Hiroshi Shimizu
 
『予測にいかす統計モデリングの基本』の売上データの分析をトレースしてみた
『予測にいかす統計モデリングの基本』の売上データの分析をトレースしてみた『予測にいかす統計モデリングの基本』の売上データの分析をトレースしてみた
『予測にいかす統計モデリングの基本』の売上データの分析をトレースしてみた. .
 
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章Shushi Namba
 
Rで階層ベイズモデル
Rで階層ベイズモデルRで階層ベイズモデル
Rで階層ベイズモデルYohei Sato
 
最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-Shintaro Fukushima
 
15分でわかる(範囲の)ベイズ統計学
15分でわかる(範囲の)ベイズ統計学15分でわかる(範囲の)ベイズ統計学
15分でわかる(範囲の)ベイズ統計学Ken'ichi Matsui
 

Was ist angesagt? (20)

多重代入法の書き方 公開用
多重代入法の書き方 公開用 多重代入法の書き方 公開用
多重代入法の書き方 公開用
 
心理学におけるベイズ統計の流行を整理する
心理学におけるベイズ統計の流行を整理する心理学におけるベイズ統計の流行を整理する
心理学におけるベイズ統計の流行を整理する
 
ベイズモデリングと仲良くするために
ベイズモデリングと仲良くするためにベイズモデリングと仲良くするために
ベイズモデリングと仲良くするために
 
20180118 一般化線形モデル(glm)
20180118 一般化線形モデル(glm)20180118 一般化線形モデル(glm)
20180118 一般化線形モデル(glm)
 
心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ
 
ベイズファクターとモデル選択
ベイズファクターとモデル選択ベイズファクターとモデル選択
ベイズファクターとモデル選択
 
SapporoR#6 初心者セッションスライド
SapporoR#6 初心者セッションスライドSapporoR#6 初心者セッションスライド
SapporoR#6 初心者セッションスライド
 
SEMを用いた縦断データの解析 潜在曲線モデル
SEMを用いた縦断データの解析 潜在曲線モデルSEMを用いた縦断データの解析 潜在曲線モデル
SEMを用いた縦断データの解析 潜在曲線モデル
 
階層ベイズと自由エネルギー
階層ベイズと自由エネルギー階層ベイズと自由エネルギー
階層ベイズと自由エネルギー
 
Chapter9 一歩進んだ文法(前半)
Chapter9 一歩進んだ文法(前半)Chapter9 一歩進んだ文法(前半)
Chapter9 一歩進んだ文法(前半)
 
StanとRでベイズ統計モデリング 11章 離散値をとるパラメータ
StanとRでベイズ統計モデリング 11章 離散値をとるパラメータStanとRでベイズ統計モデリング 11章 離散値をとるパラメータ
StanとRでベイズ統計モデリング 11章 離散値をとるパラメータ
 
マルチレベルモデル講習会 理論編
マルチレベルモデル講習会 理論編マルチレベルモデル講習会 理論編
マルチレベルモデル講習会 理論編
 
第4回DARM勉強会 (多母集団同時分析)
第4回DARM勉強会 (多母集団同時分析)第4回DARM勉強会 (多母集団同時分析)
第4回DARM勉強会 (多母集団同時分析)
 
2 3.GLMの基礎
2 3.GLMの基礎2 3.GLMの基礎
2 3.GLMの基礎
 
マルチレベルモデル講習会 実践編
マルチレベルモデル講習会 実践編マルチレベルモデル講習会 実践編
マルチレベルモデル講習会 実践編
 
『予測にいかす統計モデリングの基本』の売上データの分析をトレースしてみた
『予測にいかす統計モデリングの基本』の売上データの分析をトレースしてみた『予測にいかす統計モデリングの基本』の売上データの分析をトレースしてみた
『予測にいかす統計モデリングの基本』の売上データの分析をトレースしてみた
 
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
 
Rで階層ベイズモデル
Rで階層ベイズモデルRで階層ベイズモデル
Rで階層ベイズモデル
 
最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-
 
15分でわかる(範囲の)ベイズ統計学
15分でわかる(範囲の)ベイズ統計学15分でわかる(範囲の)ベイズ統計学
15分でわかる(範囲の)ベイズ統計学
 

Ähnlich wie Tokyo r7 sem_20100724

Rで実験計画法 前編
Rで実験計画法 前編Rで実験計画法 前編
Rで実験計画法 前編itoyan110
 
みどりぼん読書会 第4章
みどりぼん読書会 第4章みどりぼん読書会 第4章
みどりぼん読書会 第4章Masanori Takano
 
第1回R勉強会@東京
第1回R勉強会@東京第1回R勉強会@東京
第1回R勉強会@東京Yohei Sato
 
LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門Yuichiro Kobayashi
 
Yamadai.Rデモンストレーションセッション
Yamadai.RデモンストレーションセッションYamadai.Rデモンストレーションセッション
Yamadai.Rデモンストレーションセッション考司 小杉
 
Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017wada, kazumi
 
文献紹介:Prior Guided GAN Based Semantic Inpainting
文献紹介:Prior Guided GAN Based Semantic Inpainting文献紹介:Prior Guided GAN Based Semantic Inpainting
文献紹介:Prior Guided GAN Based Semantic InpaintingToru Tamaki
 
NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料
NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料
NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料nishioka1
 
データ解析のための統計モデリング入門10章前半
データ解析のための統計モデリング入門10章前半データ解析のための統計モデリング入門10章前半
データ解析のための統計モデリング入門10章前半Shinya Akiba
 
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】Tomoharu ASAMI
 
Model seminar shibata_100710
Model seminar shibata_100710Model seminar shibata_100710
Model seminar shibata_100710Kazuya Nishina
 
Analyze by StatsModels or Numpy
Analyze by StatsModels or NumpyAnalyze by StatsModels or Numpy
Analyze by StatsModels or NumpyToshiki NOGUCHI
 
形式手法とalloyの紹介
形式手法とalloyの紹介形式手法とalloyの紹介
形式手法とalloyの紹介Daisuke Tanaka
 
パターン認識モデル初歩の初歩
パターン認識モデル初歩の初歩パターン認識モデル初歩の初歩
パターン認識モデル初歩の初歩t_ichioka_sg
 
Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Prunus 1350
 
Code iq×japanr 公開用
Code iq×japanr 公開用Code iq×japanr 公開用
Code iq×japanr 公開用Nobuaki Oshiro
 
RでGISハンズオンセッション
RでGISハンズオンセッションRでGISハンズオンセッション
RでGISハンズオンセッションarctic_tern265
 

Ähnlich wie Tokyo r7 sem_20100724 (20)

Rで実験計画法 前編
Rで実験計画法 前編Rで実験計画法 前編
Rで実験計画法 前編
 
みどりぼん読書会 第4章
みどりぼん読書会 第4章みどりぼん読書会 第4章
みどりぼん読書会 第4章
 
第1回R勉強会@東京
第1回R勉強会@東京第1回R勉強会@東京
第1回R勉強会@東京
 
LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門
 
Yamadai.Rデモンストレーションセッション
Yamadai.RデモンストレーションセッションYamadai.Rデモンストレーションセッション
Yamadai.Rデモンストレーションセッション
 
Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017
 
文献紹介:Prior Guided GAN Based Semantic Inpainting
文献紹介:Prior Guided GAN Based Semantic Inpainting文献紹介:Prior Guided GAN Based Semantic Inpainting
文献紹介:Prior Guided GAN Based Semantic Inpainting
 
NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料
NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料
NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料
 
データ解析のための統計モデリング入門10章前半
データ解析のための統計モデリング入門10章前半データ解析のための統計モデリング入門10章前半
データ解析のための統計モデリング入門10章前半
 
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
 
Tokyo r6 sem3
Tokyo r6 sem3Tokyo r6 sem3
Tokyo r6 sem3
 
Tokyo r28 1
Tokyo r28 1Tokyo r28 1
Tokyo r28 1
 
Model seminar shibata_100710
Model seminar shibata_100710Model seminar shibata_100710
Model seminar shibata_100710
 
Analyze by StatsModels or Numpy
Analyze by StatsModels or NumpyAnalyze by StatsModels or Numpy
Analyze by StatsModels or Numpy
 
形式手法とalloyの紹介
形式手法とalloyの紹介形式手法とalloyの紹介
形式手法とalloyの紹介
 
パターン認識モデル初歩の初歩
パターン認識モデル初歩の初歩パターン認識モデル初歩の初歩
パターン認識モデル初歩の初歩
 
Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章
 
実践データ分析基礎
実践データ分析基礎実践データ分析基礎
実践データ分析基礎
 
Code iq×japanr 公開用
Code iq×japanr 公開用Code iq×japanr 公開用
Code iq×japanr 公開用
 
RでGISハンズオンセッション
RでGISハンズオンセッションRでGISハンズオンセッション
RでGISハンズオンセッション
 

Mehr von osamu morimoto

Tokyo.R #76 lavaan plot
Tokyo.R #76 lavaan plotTokyo.R #76 lavaan plot
Tokyo.R #76 lavaan plotosamu morimoto
 
クラスタ数の決め方(Tokyo.r#60)
クラスタ数の決め方(Tokyo.r#60)クラスタ数の決め方(Tokyo.r#60)
クラスタ数の決め方(Tokyo.r#60)osamu morimoto
 
コサインクラスタリング
コサインクラスタリングコサインクラスタリング
コサインクラスタリングosamu morimoto
 
Rでコンジョイント分析
Rでコンジョイント分析Rでコンジョイント分析
Rでコンジョイント分析osamu morimoto
 
Tokyo.R #22 Association Rules
Tokyo.R #22 Association RulesTokyo.R #22 Association Rules
Tokyo.R #22 Association Rulesosamu morimoto
 
Tokyo r 11_self_organizing_map
Tokyo r 11_self_organizing_mapTokyo r 11_self_organizing_map
Tokyo r 11_self_organizing_maposamu morimoto
 
Tokyo.R8 brand positioning 2010.08.28.
Tokyo.R8 brand positioning 2010.08.28.Tokyo.R8 brand positioning 2010.08.28.
Tokyo.R8 brand positioning 2010.08.28.osamu morimoto
 
tokyo webmining3 2010.04.17.
tokyo webmining3 2010.04.17.tokyo webmining3 2010.04.17.
tokyo webmining3 2010.04.17.osamu morimoto
 

Mehr von osamu morimoto (9)

Tokyo.R #76 lavaan plot
Tokyo.R #76 lavaan plotTokyo.R #76 lavaan plot
Tokyo.R #76 lavaan plot
 
クラスタ数の決め方(Tokyo.r#60)
クラスタ数の決め方(Tokyo.r#60)クラスタ数の決め方(Tokyo.r#60)
クラスタ数の決め方(Tokyo.r#60)
 
コサインクラスタリング
コサインクラスタリングコサインクラスタリング
コサインクラスタリング
 
Rでコンジョイント分析
Rでコンジョイント分析Rでコンジョイント分析
Rでコンジョイント分析
 
Tokyo.R #22 Association Rules
Tokyo.R #22 Association RulesTokyo.R #22 Association Rules
Tokyo.R #22 Association Rules
 
Tokyo r 11_self_organizing_map
Tokyo r 11_self_organizing_mapTokyo r 11_self_organizing_map
Tokyo r 11_self_organizing_map
 
Tokyo.R8 brand positioning 2010.08.28.
Tokyo.R8 brand positioning 2010.08.28.Tokyo.R8 brand positioning 2010.08.28.
Tokyo.R8 brand positioning 2010.08.28.
 
Tokyo webmining5
Tokyo webmining5Tokyo webmining5
Tokyo webmining5
 
tokyo webmining3 2010.04.17.
tokyo webmining3 2010.04.17.tokyo webmining3 2010.04.17.
tokyo webmining3 2010.04.17.
 

Kürzlich hochgeladen

20240427 zaim academy counseling lesson .pdf
20240427 zaim academy counseling lesson .pdf20240427 zaim academy counseling lesson .pdf
20240427 zaim academy counseling lesson .pdfssuser80a51f
 
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料シンフォニティ 株式会社
 
株式会社MAVEL会社概要_アフィリエイト広告_運用型広告_LTVを予測しLOIを最適化する広告代理店
株式会社MAVEL会社概要_アフィリエイト広告_運用型広告_LTVを予測しLOIを最適化する広告代理店株式会社MAVEL会社概要_アフィリエイト広告_運用型広告_LTVを予測しLOIを最適化する広告代理店
株式会社MAVEL会社概要_アフィリエイト広告_運用型広告_LTVを予測しLOIを最適化する広告代理店ssuserfb441f
 
Service-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadershipService-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadershipYasuyoshi Minehisa
 
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdfストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdfmasakisaito12
 
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)KayaSuetake1
 
ストックマーク株式会社がお客様へご提供しているAnews概要資料のご共有.pdf
ストックマーク株式会社がお客様へご提供しているAnews概要資料のご共有.pdfストックマーク株式会社がお客様へご提供しているAnews概要資料のご共有.pdf
ストックマーク株式会社がお客様へご提供しているAnews概要資料のご共有.pdfmasakisaito12
 
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチ
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチUP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチ
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチユニパー株式会社
 

Kürzlich hochgeladen (8)

20240427 zaim academy counseling lesson .pdf
20240427 zaim academy counseling lesson .pdf20240427 zaim academy counseling lesson .pdf
20240427 zaim academy counseling lesson .pdf
 
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料
 
株式会社MAVEL会社概要_アフィリエイト広告_運用型広告_LTVを予測しLOIを最適化する広告代理店
株式会社MAVEL会社概要_アフィリエイト広告_運用型広告_LTVを予測しLOIを最適化する広告代理店株式会社MAVEL会社概要_アフィリエイト広告_運用型広告_LTVを予測しLOIを最適化する広告代理店
株式会社MAVEL会社概要_アフィリエイト広告_運用型広告_LTVを予測しLOIを最適化する広告代理店
 
Service-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadershipService-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadership
 
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdfストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
 
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
 
ストックマーク株式会社がお客様へご提供しているAnews概要資料のご共有.pdf
ストックマーク株式会社がお客様へご提供しているAnews概要資料のご共有.pdfストックマーク株式会社がお客様へご提供しているAnews概要資料のご共有.pdf
ストックマーク株式会社がお客様へご提供しているAnews概要資料のご共有.pdf
 
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチ
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチUP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチ
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチ
 

Tokyo r7 sem_20100724

  • 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 コンサルティング「ブランドジャパン」
  • 7. 共分散構造分析の主なツール ● AMOS(SPSS) ● デファクトスタンダード。デモ版( Student Version )あり。 ● EQS ● CALIS(SAS) ● Mplus ● 最強説もあるが、まだ利用者が少ない。 ● 「ブランドジャパン」は Mplus を使っているらしい。
  • 8. パス図について 相互作用経験 f2 母親価値 f1 協調性 f3
  • 9. パス図のお約束 〔観測変数〕 パス係数 既知の変数。 (回帰係数) 直接測定できるデータ。 〔潜在変数(因子)〕 未知の変数。 共分散 直接測定できないデータ。 (相関係数) 〔残差〕 外生変数では説明しきれない 効果をひとつにまとめたもの。
  • 10. パス図のお約束 〔外生変数〕 他の変数から矢印を受けていない変数。 回帰分析における「独立変数(説明変数)」。 〔内生変数〕 他の変数から矢印を受けている変数。 〔残差〕 回帰分析における「従属変数(目的変数)」。 必ず残差を伴う。
  • 11. パス図と数式 ★ 重回帰分析モデル ★ 因子分析モデル(1因子) x1 e1 y1 b1 b1 x2 b2 e2 y2 b2 b3 y e x x3 b3 e3 y3 b4 b4 x4 e4 y4 y = b1*x1 + b2*x2 + b3*x3 + b4*x4 + e y1 = b1*x + e1 y2 = b2*x + e2 y3 = b3*x + e3 y4 = b4*x + e4
  • 12. 代表的なモデル ★ 重回帰分析モデル ★ 検証的的因子分析モデル
  • 14. 測定方程式、構造方程式 測定方程式 測定方程式 相互作用経験 f2 母親価値 f1 測定方程式 協調性 f3
  • 15. 測定方程式、構造方程式 構造方程式 相互作用経験 f2 母親価値 f1 協調性 f3
  • 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() で重回帰分析 # 分散共分散行列を算出 父 b1 DATA1.cov <- cov(DATA1) 娘 e 母 b2 # モデルを入力 MODEL1 <- specify.model() 父 -> 娘 , b1, NA # 父から娘へのパス 母 -> 娘 , b2, NA # 母から娘へのパス モデルに記述するのは 娘 <-> 娘 , e1, NA # 残差 赤文字の部分 ● specify.model() でのモデルの記述方法。 ● 「変数間関係 , パラメータ名 , 固定パラメータ」。 ● 「変数間関係」の記述 ● 「 -> 」はパス係数(回帰係数)を示す。 ● 「 A<->A 」は A の残差を示す。 ● 「 A<->B 」は A と B の共分散(相関)を示す。 ● 固定パラメータを指定する場合は「パラメータ名」を「 NA 」とする。
  • 22. SEM で重回帰分析モデル(3) sem( モデル , 分散共分散行列 , サンプルサイズ , fixed.x=c()) ● 外生変数である観測変数がある場合、 fixed.x に指定する。 ● 結果の Estimate がパラメータの推定値。 Pr(>|z|) が検定のp値。 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 娘 <--> 娘 # (後略)
  • 23. SEM で重回帰分析モデル(4) lm() の結果と、 sem() の結果が一致していることの確認。 # lm() の結果(偏回帰係数) coef( 重回帰結果 ) # (Intercept) 父 母 # 100.66683494 0.38063875 -0.04288714 # sem() の結果(パス係数) coef(SEM. 重回帰 ) # b1 b2 e1 # 0.38063875 -0.04288714 3.38613595
  • 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 )は、事前に明確な仮説を設 定し、観測変数に基づいて仮説と実際のデータがどの程度当てはまっているかを確認 する方法。仮説上で関連がないと想定される因子と観測変数のパス係数はゼロに固 定される。 e1 v1 EFA e1 国語 CFA e2 v2 因子1 e2 社会 因子1 e3 v3 e3 英語 e4 v4 因子2 e4 理科 因子2 e5 v5 e5 数学
  • 26. SEM で因子分析モデル( 3 ) # SEM で確認的因子分析 e1 国語 五教科共分散行列 <- cov( 五教科 ) b1 因子モデル .1 <- specify.model() e2 社会 b2 文系能力 文系 -> 国語 , b1, NA # パス係数 b3 文系 -> 社会 , b2, NA e3 英語 文系 -> 英語 , b3, NA b4 理系 -> 英語 , b4, NA e4 理科 b5 理系能力 理系 -> 理科 , b5, NA 理系 -> 数学 , b6, NA e5 数学 b6 国語 <-> 国語 , e1, NA # 残差 社会 <-> 社会 , e2, NA 英語 <-> 英語 , e3, NA 理科 <-> 理科 , e4, NA 数学 <-> 数学 , e5, NA 文系 <-> 文系 , NA, 1 # 因子(分散を1に固定) 理系 <-> 理系 , NA, 1 SEM. 因子 .1 <- sem( 因子モデル .1, 五教科共分散行列 , 200)
  • 27. SEM で因子分析モデル( 4 ) 分析結果の出力。 まずは適合度の確認。 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 # (続く)
  • 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. SEM で因子分析モデル( 6 ) ● 非標準解 # (前略) # 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
  • 30. SEM で因子分析モデル( 7 ) ● パス係数の有意性検定。 ●削除するパスや相関、潜在変数の目安に。 # 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
  • 31. SEM で因子分析モデル( 8 ) ● 標準化解 # 解釈は標準化解で。因子負荷量にあたる。 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 理系 <--> 理系
  • 32. SEM で因子分析モデル( 9 ) ● 修正指標 ● A マトリクスはパスを、 P マトリクスは相関を追加する目安に。 ● ただし、“実質科学的に”解釈できないパスや相関は追加するべきではない。 ● この例だと「理系 -> 社会」のパスを引くか、「理系 <-> 文系」の相関を追加する。 # 修正指標。追加するパスや相関の目安。 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
  • 33. SEM で因子分析モデル( 10 ) ● モデルの修正 e1 国語 b1 # 理系 -> 社会のパスを追加してみる。 e2 社会 b2 因子モデル .2 <- specify.model() 文系能力 文系 -> 国語 , b1, NA # パス係数 b3 e3 英語 文系 -> 社会 , b2, NA b4 b7 文系 -> 英語 , b3, NA 理系能力 理系 -> 英語 , b4, NA e4 理科 b5 理系 -> 理科 , b5, NA 理系 -> 数学 , b6, NA e5 数学 b6 理系 -> 社会 , 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)
  • 34. SEM で因子分析モデル( 11 ) 【モデル1】 【モデル2】 e1 国語 e1 国語 b1 b1 e2 社会 b2 文系能力 e2 社会 b2 文系能力 b3 b3 e3 英語 e3 英語 b4 b4 b7 e4 理科 b5 理系能力 e4 理科 b5 理系能力 e5 数学 b6 e5 数学 b6 【モデル1】 【モデル2】 GFI: 0.9506 GFI: 0.98291 AGFI: 0.81472 AGFI: 0.91456 CFI: 0.9078 CFI: 0.97728 RMSEA:0.17253 RMSEA:0.098897 BIC: 6.5004 BIC: -7.0559
  • 35. SEM で因子分析モデル( 12 ) # 文系 <-> 理系の相関を追加してみる。 因子モデル .3 <- specify.model() e1 国語 文系 -> 国語 , b1, NA # パス係数 b1 文系 -> 社会 , b2, NA e2 社会 b2 文系 -> 英語 , b3, NA 文系能力 b3 理系 -> 英語 , b4, NA e3 英語 c1 理系 -> 理科 , b5, NA b4 理系 -> 数学 , b6, NA e4 理科 b5 理系能力 国語 <-> 国語 , e1, NA # 残差 社会 <-> 社会 , e2, NA 英語 <-> 英語 , e3, NA e5 数学 b6 理科 <-> 理科 , e4, NA 数学 <-> 数学 , e5, NA 文系 <-> 文系 , NA, 1 # 因子(分散を1に固定) 理系 <-> 理系 , NA, 1 理系 <-> 文系 , c1, NA SEM. 因子 .3 <- sem( 因子モデル .3, 五教科共分散行列 , 200) summary(SEM. 因子 .3)
  • 36. SEM で因子分析モデル( 13 ) 【モデル3】 【モデル2】 e1 国語 e1 国語 b1 b1 e2 社会 b2 文系能力 e2 社会 b2 文系能力 b3 b3 e3 英語 c1 e3 英語 b4 b4 b7 e4 理科 b5 理系能力 e4 理科 b5 理系能力 e5 数学 b6 e5 数学 b6 【モデル3】 【モデル2】 GFI: 0.99457 GFI: 0.98291 AGFI: 0.97286 AGFI: 0.91456 CFI: 1 CFI: 0.97728 RMSEA:0 RMSEA:0.098897 BIC:-13.163 BIC: -7.0559
  • 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
  • 42. 多重指標モデル (5) ● 仮説作り(パス図) e1 喉越し [1] e2 香り b1 機能便益 e3 味 b2 b9 e e4 幸せ [1] [1] 良い e11 b3 情緒便益 b10 ブランド e5 ほっとした 評価 b8 好き e12 e6 爽快 b4 e7 自分らしさ [1] b11 e8 イメージアップ b5 自己表現 便益 e9 センス b6 e10 洗練 b7
  • 43. 多重指標モデル (6) # 仮説モデルの入力 機能便益 -> ブランド評価 , b9, NA # 測定方程式 library(sem) 情緒便益 -> ブランド評価 , b10, NA DATA.SEM <- cov(DATA[,-13]) 自己表現便益 -> ブランド評価 , b11, NA model1 <- specify.model() 喉越し <-> 喉越し , e1, NA # 残差 機能便益 <-> 機能便益 , f1, NA # 測定方程式 香り <-> 香り , e2, NA 機能便益 -> 喉越し , NA, 1 味 <-> 味 , e3, NA 機能便益 -> 香り , b1, NA 幸せ <-> 幸せ , e4, NA 機能便益 -> 味 , b2, NA ほっとした <-> ほっとした , e5, NA 情緒便益 <-> 情緒便益 , f2, NA 爽快 <-> 爽快 , e6, NA 情緒便益 -> 幸せ , NA, 1 自分らしさ <-> 自分らしさ , e7, NA 情緒便益 -> ほっとした , b3, NA イメージアップ <-> イメージアップ , e8, NA 情緒便益 -> 爽快 , b4, NA センス <-> センス , e9, NA 自己表現便益 <-> 自己表現便益 , f3, NA 洗練 <-> 洗練 , e10, NA 自己表現便益 -> 自分らしさ , NA, 1 良い <-> 良い , e11, NA 自己表現便益 -> イメージアップ , b5, NA 好き <-> 好き , e12, NA 自己表現便益 -> センス , b6, NA 自己表現便益 -> 洗練 , b7, NA ブランド評価 <-> ブランド評価 , f4, NA ブランド評価 -> 良い , NA, 1 ブランド評価 -> 好き , b8, 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) 1.2 ● 多母集団“別々”分析? 1 プレミアム モルツ スーパード ライ ● 評価構造のブランドによる違い 0.8 ラガー を見たい。 0.6 ● 本当は「多母集団同時分析」す 0.4 べきだが、 sem パッケージでは できないので… 0.2 0 機能便益 情緒便益 自己表現便益 【多母集団 ブランド評価への影響(非標準解) 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
  • 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 で学ぶ共分散構造分析とグラフィカルモデリング』小島隆矢