ユーザ用ツール

サイト用ツール


メモ:マルチレベルモデル

文書の過去の版を表示しています。


マルチレベルモデルに関するメモ

[安藤正人(2011)『マルチレベルモデル入門 実習:継時データ分析』ナカニシヤ出版]に基づいて、マルチレベルモデルを勉強したメモ。 本書は、SPSS/SASをベースに分析が進められているが、この内容をRでできるだけ再現してみる。Rについても、併せて勉強する。

R環境の準備

必要なライブラリをあらかじめインストールしておく。線形モデルを扱う関数(lm)は標準で入っているが、分散分析でType2/3平方和を計算する関数や混合モデルのためのライブラリが無いので、carおよびlme4をインストールしておく。

install.packages("car");
install.packages("lme4");

library(car);
library(lme4);

サンプルデータも読み込んでおく。

df1 <- read.csv("sample.csv");

一般線形モデル

分散分析、共分散分析、(重)回帰分析を一般線形モデルで統一的に把握する。

1元配置分散分析

lm関数で学科間の平均得点について分散分析する。

>m1.2.1 <- lm(ACHIEVE ~ DEPART, data=df1);
> summary(m1.2.1);

Call:
lm(formula = ACHIEVE ~ DEPART, data = df1)

Residuals:
   Min     1Q Median     3Q    Max
-7.000 -3.542  0.000  2.625  7.500

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)   85.500      1.828  46.772   <2e-16 ***
DEPARTb       -6.833      2.585  -2.643   0.0129 *
DEPARTc       -6.833      2.585  -2.643   0.0129 *
DEPARTd       -3.167      2.585  -1.225   0.2301
DEPARTe        1.500      2.585   0.580   0.5661
DEPARTf       -2.500      2.585  -0.967   0.3413
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.478 on 30 degrees of freedom
Multiple R-squared:  0.3701,    Adjusted R-squared:  0.2652
F-statistic: 3.526 on 5 and 30 DF,  p-value: 0.01261

> anova(m1.2.1);

Analysis of Variance Table

Response: ACHIEVE
          Df Sum Sq Mean Sq F value  Pr(>F)
DEPART     5 353.47  70.694  3.5259 0.01261 *
Residuals 30 601.50  20.050
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

学科(DEPART)変数はカテゴリカルなので、Rでは自動的に第1番目のカテゴリを基準にダミー変数になって分析される。この場合は学科aが基準になり、Coefficientsの(Intercept)の値が学科aの平均の推定値となる。その他の学科については、Interceptにそれぞれの係数を加えて計算すると、書籍に示される推定値に一致する。

標本平均の標準誤差(Std. Error)については、従来の分散分析では学科の不偏分散を観測数で除した値の平方根となるため、学科ごとに異なる値になるが、一般線形モデルでは分析モデルの誤差の平方平均に基づいて決定されるため、学科間で値は共通となる。この例では、各学科の平均の推定値の標準誤差は、誤差の平均平方(20.050)を各学科における観測数6で除した値の平方根になる。Rでの分析では、この値は(Intercept)のStd. Errorの値(1.828)となる。Rで表示される各学科の係数の標準誤差の値については、書籍では言及なし。

平方和、R2乗、調整済みR2乗、F値、p値などについては、Rの各出力と書籍の内容は一致する。

ネストした分散分析

下位カテゴリが上位カテゴリにもれなく含まれるような場合の分散分析。上位カテゴリで説明される分散と下位カテゴリで説明される分散を分けてみる。両者の合計は、上位カテゴリだけで分析した場合に説明される分散の大きさと一致する。

ここでは、学科は学部にネストされているデータを用いる。まずは、学部だけの分散分析の結果。

> m1.3.1 <- lm(ACHIEVE ~ FACULTY, data=df1);
> summary(m1.3.1);

Call:
lm(formula = ACHIEVE ~ FACULTY, data = df1)

Residuals:
    Min      1Q  Median      3Q     Max
-7.9444 -4.3194 -0.1111  3.8889 12.0556

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)   80.944      1.189  68.096   <2e-16 ***
FACULTYS       3.167      1.681   1.884   0.0682 .
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 5.043 on 34 degrees of freedom
Multiple R-squared:  0.09451,   Adjusted R-squared:  0.06787
F-statistic: 3.549 on 1 and 34 DF,  p-value: 0.06817

> anova(m1.3.1);
Analysis of Variance Table

Response: ACHIEVE
          Df Sum Sq Mean Sq F value  Pr(>F)
FACULTY    1  90.25  90.250  3.5485 0.06817 .
Residuals 34 864.72  25.433
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

書籍と一致。

続いて、ネストした分散分析。

> m1.3.2 <- lm(ACHIEVE ~ FACULTY/DEPART, data=df1);
> summary(m1.3.2);

Call:
lm(formula = ACHIEVE ~ FACULTY/DEPART, data = df1)

Residuals:
   Min     1Q Median     3Q    Max
-7.000 -3.542  0.000  2.625  7.500

Coefficients: (6 not defined because of singularities)
                 Estimate Std. Error t value Pr(>|t|)
(Intercept)       85.5000     1.8280  46.772   <2e-16 ***
FACULTYS          -2.5000     2.5852  -0.967   0.3413
FACULTYL:DEPARTb  -6.8333     2.5852  -2.643   0.0129 *
FACULTYS:DEPARTb       NA         NA      NA       NA
FACULTYL:DEPARTc  -6.8333     2.5852  -2.643   0.0129 *
FACULTYS:DEPARTc       NA         NA      NA       NA
FACULTYL:DEPARTd       NA         NA      NA       NA
FACULTYS:DEPARTd  -0.6667     2.5852  -0.258   0.7983
FACULTYL:DEPARTe       NA         NA      NA       NA
FACULTYS:DEPARTe   4.0000     2.5852   1.547   0.1323
FACULTYL:DEPARTf       NA         NA      NA       NA
FACULTYS:DEPARTf       NA         NA      NA       NA
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.478 on 30 degrees of freedom
Multiple R-squared:  0.3701,    Adjusted R-squared:  0.2652
F-statistic: 3.526 on 5 and 30 DF,  p-value: 0.01261

> anova(m1.3.2);
Analysis of Variance Table

Response: ACHIEVE
               Df Sum Sq Mean Sq F value  Pr(>F)
FACULTY         1  90.25  90.250  4.5012 0.04224 *
FACULTY:DEPART  4 263.22  65.806  3.2821 0.02404 *
Residuals      30 601.50  20.050
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

各学科の平均の推定値の計算は、やや面倒。学部はLとSがあり、それぞれa,b,c学科とd,e,f学科が含まれる。学部は、L学科がリファレンス、学科はa学科がリファレンスなので、L学部a学科の推定値は(Intercept)の値。標準誤差は、(Intercept)値で共通(学科の平均の推定値の標準誤差。学部については以下に示す方法で計算の必要あり)。b,c学科は、(Intercept)の値に、それぞれの係数の値を加えればよい。d,e,f学科は、S学部なのでFACULTYSの係数と各学科の係数の両方を加えた数値が、推定値となる。ただし、最後のカテゴリのf学科については、S学部に所属する学科のリファレンスとなるようで、FACULTYSの値を加えるだけでよい。

各学部の平均の推定値に関しては、Rでは直接出力はされない。切片の値は学部の平均の推定値ではなく、この場合はL学部a学科の推定値。学部の推定値を求めるには、学部だけで1元配置分散分析をして平均の推定値を求めて、標準誤差はネストしたモデルに基づいて計算する必要がある。

その他、各数値は整理されていないので値を拾うか計算が必要。平方和、平方平均は、分散分析表(anovaの結果)から拾える。モデル全体のR2乗、調整R2乗はlmの結果のsummary下部に表示。F値およびp値の検定に関する数値も、表示されたものを拾う。書籍にあるもので計算しなければならないのは、学部および学科個別の偏η2乗値で、分散分析表から誤差の平方和と学部および学科変数の平方和をもってきて、[学部の平方和/(学科の平方和+誤差の平方和)]で、各変数の効果量を求めることができる。具体的には、学部の場合[90.25/(90.25+601.50)=0.130]となる。全体の平方和で除するのではなく、対象となる変数の平方和+誤差の平方和で除するのがポイント。SPSSでは、自動的に計算されて出力される。

平均の推定値の標準誤差は、一般線形モデルでは先に書いたように誤差の平均平方を観測数で除した値となる。したがって、学部レベルの平均の推定値の標準誤差は、このデータ(学部、学科ともに全ての同水準カテゴリで観測数が同じバランスデータ)については、誤差の平均平方を各学部の観測数18で除した値の平方根となる。学科についても、計算手続きは同じ。カテゴリ間で観測数が異なるアンバランスデータに関しては、当然ながら標準誤差はカテゴリごとに異なることになる。

以上で、一通り書籍に示された値をRで得ることができた。なお、1節前のネスト無しの1変数の場合は、変数が1つなので偏η2乗はR2乗と一致するので計算の手間はない。

2元配置分散分析

説明変数が2つの分散分析。平方和のタイプなどが問題になってくる。ここでは、性別と学部によって達成度を比較。

まずは、性別のみの1元配置分散分析。

> m1.4.1 <- lm(ACHIEVE ~ GENDER, data=df1);
> summary(m1.4.1);

Call:
lm(formula = ACHIEVE ~ GENDER, data = df1)

Residuals:
    Min      1Q  Median      3Q     Max
-8.8333 -4.4722  0.9722  3.0278 10.1667

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)   83.222      1.238  67.236   <2e-16 ***
GENDERm       -1.389      1.750  -0.793    0.433
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 5.251 on 34 degrees of freedom
Multiple R-squared:  0.01818,   Adjusted R-squared:  -0.0107
F-statistic: 0.6296 on 1 and 34 DF,  p-value: 0.433

> anova(m1.4.1);
Analysis of Variance Table

Response: ACHIEVE
          Df Sum Sq Mean Sq F value Pr(>F)
GENDER     1  17.36  17.361  0.6296  0.433
Residuals 34 937.61  27.577

単純な1元配置分散分析なので、先述の要領で値を読み取る。

次に、性別と学部を組み合わせて作成した性別×学部変数による1元配置分散分析。

> m1.4.2 <- lm(ACHIEVE ~ FAC_GEN, data=df1);
> summary(m1.4.2);

Call:
lm(formula = ACHIEVE ~ FAC_GEN, data = df1)

Residuals:
    Min      1Q  Median      3Q     Max
-7.0000 -2.8056 -0.2222  1.7222  8.0000

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)   85.000      1.237  68.716  < 2e-16 ***
FAC_GENLm     -8.111      1.749  -4.637 5.69e-05 ***
FAC_GENSf     -3.556      1.749  -2.033   0.0505 .
FAC_GENSm      1.778      1.749   1.016   0.3171
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.711 on 32 degrees of freedom
Multiple R-squared:  0.5386,    Adjusted R-squared:  0.4953
F-statistic: 12.45 on 3 and 32 DF,  p-value: 1.468e-05

> anova(m1.4.2);
Analysis of Variance Table

Response: ACHIEVE
          Df Sum Sq Mean Sq F value    Pr(>F)
FAC_GEN    3 514.31 171.435  12.449 1.468e-05 ***
Residuals 32 440.67  13.771
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

続いて、性別、学部および両者の交互作用を含めた2元配置分散分析。モデルの式は、「*」で直接効果と全ての組み合わせでの交互作用を検討する。省略しなければ[ACHIEVE ~ FACULTY+GENDER+FACULTY:GENDER]になる。

> m1.4.3 <- lm(ACHIEVE ~ FACULTY*GENDER, data=df1);
> summary(m1.4.3);

Call:
lm(formula = ACHIEVE ~ FACULTY * GENDER, data = df1)

Residuals:
    Min      1Q  Median      3Q     Max
-7.0000 -2.8056 -0.2222  1.7222  8.0000

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)
(Intercept)        85.000      1.237  68.716  < 2e-16 ***
FACULTYS           -3.556      1.749  -2.033   0.0505 .
GENDERm            -8.111      1.749  -4.637 5.69e-05 ***
FACULTYS:GENDERm   13.444      2.474   5.434 5.61e-06 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.711 on 32 degrees of freedom
Multiple R-squared:  0.5386,    Adjusted R-squared:  0.4953
F-statistic: 12.45 on 3 and 32 DF,  p-value: 1.468e-05

> anova(m1.4.3);
Analysis of Variance Table

Response: ACHIEVE
               Df Sum Sq Mean Sq F value    Pr(>F)
FACULTY         1  90.25   90.25  6.5537   0.01539 *
GENDER          1  17.36   17.36  1.2607   0.26987
FACULTY:GENDER  1 406.69  406.69 29.5330 5.612e-06 ***
Residuals      32 440.67   13.77
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

各変数の平均の推定値の求め方は、学部、学科についてはそれぞれで1元配置分散分析をした値で、標準誤差はこれまでに見たように誤差の平均平方を観測数で除した値とする。学部×学科については、L学部女性が基準になっているので、L学部男性(基準に対して性別のみ違う)ならGENDERの係数を加え、S学部女性(基準に対して学部のみ違う)ならFACULTYの係数を加え、S学部男性(基準に対して、学部・性別とも異なる)なら、GENDER+FACULTY+GENDER:FACULTY(交互作用)を全て加える。

上記の性別×学部変数と、性別+学部+交互作用での2つの分析は、モデルとして説明される分散の総和は同じ(R2乗や平方和が一致)。つまり、性別×学部変数で説明された情報量を、性別の効果、学部の効果、および交互作用に分割して分析したのが、後者のモデル。要素に分割してみると、交互作用による効果が大きいことがわかる。

分散分析の基本的な考え方は、説明変数によって目的変数の分散をどの程度説明できるか、という点に尽きる。したがって、説明変数の投入方法を変更してみても、モデル全体として見れば説明される分散(情報量)は等価。この点は、マルチレベルモデルを理解する上で、大事だと思われる。すなわち、書籍で後に解説されていくことになるが、説明変数を固定効果として投入しても変量効果として投入しても、モデルとしてその説明変数が目的変数の分散を説明する割合は変わらない。なので、変量効果そのものに関心がなく、その変数の影響を統制したいということであれば、固定効果としてモデルに投入しても、概ね同じ分析結果が得られる(と思う)。

重(単)回帰分析

単回帰分析のパラメータの推定結果については、SPSSの出力(書籍の数値)との対応は容易に判断できるので、省略。

平方和のタイプ

重回帰分析(ないしは、2元以上の分散分析=説明変数が複数の一般線形モデル)のモデルについて回帰分析を行う際には、平方和のタイプに注意をする必要がある。平方和のタイプには1,2,3があり、それぞれ計算方法が異なる(ただし説明変数が1つの場合には結果は同じ)。

  • タイプ1平方和
    • モデル式で与えられた順に変数を投入し、その都度増加する平方和。変数の投入順序が変わると、変数間に相関がある場合には平方和の値も変化する。これは、変数間で情報が共有されている部分(相関)があると、先に投入された変数の平方和に、相関(情報の重なり)部分が含まれるため、後に投入された変数の平方和が小さくなる。
  • タイプ2平方和
    • モデル式での変数の投入順序に関わらず、他の変数が全て投入された状態で最後に目的の変数が投入されたときの平方和を、それぞれの変数について計算する。したがって、投入順序に関係なく同じ値が得られる。また、計算方法から考えれば、タイプ2平方和は、他の変数が既に投入された状態で計算されているため、他の変数の影響が統制された値(他の変数との相関部分を除く)が得られているはず。
  • タイプ3平方和
    • タイプ2の計算と同様だが、交互作用も投入したうえで、目的の変数の平方和を計算する。
    • RのcarパッケージAnova関数でタイプ3平方和を計算する際には、オプションを指定しないとSPSSなどの計算結果と一致しない(後述)。

p.24の表1-10、表1-11の確認。達成度を興味と自主学習で説明するモデルで、変数の投入順序を入れ替えたとき、平方和のタイプがどう変化するか。

自主学習を先に投入

> m1.6.2a <- lm(ACHIEVE ~ STUDY + INTEREST, data=df1);
> anova(m1.6.2a);
Analysis of Variance Table

Response: ACHIEVE
          Df Sum Sq Mean Sq F value    Pr(>F)
STUDY      1 485.58  485.58  238.48 < 2.2e-16 ***
INTEREST   1 402.19  402.19  197.52 1.744e-15 ***
Residuals 33  67.19    2.04
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> Anova(m1.6.2a, type=2);
Anova Table (Type II tests)

Response: ACHIEVE
          Sum Sq Df F value    Pr(>F)
STUDY     388.36  1  190.73 2.864e-15 ***
INTEREST  402.19  1  197.52 1.744e-15 ***
Residuals  67.19 33
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

興味を先に投入

> m1.6.2b <- lm(ACHIEVE ~ INTEREST + STUDY, data=df1);
> anova(m1.6.2b);
Analysis of Variance Table

Response: ACHIEVE
          Df Sum Sq Mean Sq F value    Pr(>F)
INTEREST   1 499.42  499.42  245.27 < 2.2e-16 ***
STUDY      1 388.36  388.36  190.73 2.864e-15 ***
Residuals 33  67.19    2.04
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> Anova(m1.6.2b, type=2);
Anova Table (Type II tests)

Response: ACHIEVE
          Sum Sq Df F value    Pr(>F)
INTEREST  402.19  1  197.52 1.744e-15 ***
STUDY     388.36  1  190.73 2.864e-15 ***
Residuals  67.19 33
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

タイプ2の計算結果は、順序に関わらず同じ値だが、タイプ1では先に投入するよりも、後に投入した方が平方和の値が小さくなることが確認できる。書籍で示されている偏η2乗は、タイプ2平方和を使って計算したもののようだ。

RのcarパッケージAnova()関数でのタイプ3平方和

Rでは、factor型の変数は自動的にダミー変数に変換してくれるが、その変換方法にはいくつかパターンがある。その関係で、単純にAnova関数でtype3平方和を計算すると、おかしな値となる。そこで、以下のオプションをあらかじめ指定しておく。

options(contrasts = c("contr.sum", "contr.sum"));

本線に戻って、書籍の分析結果を追いかける。分散分析の平方和のタイプ以外はシンプルな回帰分析なので、Rでの分析でも結果は一致する。Rでちょっと引っかかるのは、標準化した分析とセンタリングした分析の方法か(使える人にとっては特に問題ないのだと思うが)。

標準化(p.25, モデル1.6.2Z)した回帰分析。自主学習+興味のモデルについて、変数を標準化して分析する。

> m1.6.2Z <- lm(scale(ACHIEVE) ~ scale(STUDY) + scale(INTEREST), data=df1);
> summary(m1.6.2Z);

Call:
lm(formula = scale(ACHIEVE) ~ scale(STUDY) + scale(INTEREST),
    data = df1)

Residuals:
     Min       1Q   Median       3Q      Max
-0.44360 -0.17371 -0.04769  0.19323  0.70300

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)
(Intercept)     1.049e-15  4.553e-02    0.00        1
scale(STUDY)    6.416e-01  4.646e-02   13.81 2.86e-15 ***
scale(INTEREST) 6.529e-01  4.646e-02   14.05 1.74e-15 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.2732 on 33 degrees of freedom
Multiple R-squared:  0.9296,    Adjusted R-squared:  0.9254
F-statistic:   218 on 2 and 33 DF,  p-value: < 2.2e-16

> Anova(m1.6.2Z, type=3);
Anova Table (Type III tests)

Response: scale(ACHIEVE)
                 Sum Sq Df F value    Pr(>F)
(Intercept)      0.0000  1    0.00         1
scale(STUDY)    14.2335  1  190.73 2.864e-15 ***
scale(INTEREST) 14.7405  1  197.52 1.744e-15 ***
Residuals        2.4627 33
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

scale関数を用いて、変数を標準化してから分析する。書籍では標準化した変数が用意されているが、関数で標準化してみた。得られた結果は、書籍と一致(指数表記のためちょっと見にくいが)。分散分析は、optionsを指定のうえで、書籍の注記にしたがってtype3をあえて指定。type2でも結果は同じ。

ちなみに、この方法で変数を標準化すると、欠損値の扱いの関係でSPSSなどと結果が一致しないことがある。その場合は、まず変数そのままでlm関数に投入し、そこから得られたオブジェクトの「オブジェクト名$model」に分析に利用されたデータセットが入っているので、これをscaleで標準化して再分析すると、SPSSの標準化係数(ベータ)に一致する値が得られる。ちょっと面倒だが。

続いて、モデル1.7.1および1.7.1C。自主学習と興味の交互作用を投入したモデル。

> m1.7.1 <- lm(ACHIEVE ~ STUDY + INTEREST + STUDY:INTEREST, data=df1);
> summary(m1.7.1);

Call:
lm(formula = ACHIEVE ~ STUDY + INTEREST + STUDY:INTEREST, data = df1)

Residuals:
    Min      1Q  Median      3Q     Max
-2.4284 -0.8941 -0.1191  1.0809  2.8352

Coefficients:
               Estimate Std. Error t value Pr(>|t|)
(Intercept)     67.1227     7.4203   9.046 2.48e-10 ***
STUDY           -0.7472     0.9497  -0.787  0.43720
INTEREST        -0.2873     1.0352  -0.278  0.78315
STUDY:INTEREST   0.3871     0.1320   2.932  0.00617 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.287 on 32 degrees of freedom
Multiple R-squared:  0.9445,    Adjusted R-squared:  0.9393
F-statistic: 181.7 on 3 and 32 DF,  p-value: < 2.2e-16

> Anova(m1.7.1, type=3);
Anova Table (Type III tests)

Response: ACHIEVE
                Sum Sq Df F value    Pr(>F)
(Intercept)    135.435  1 81.8265 2.485e-10 ***
STUDY            1.025  1  0.6190  0.437195
INTEREST         0.127  1  0.0770  0.783150
STUDY:INTEREST  14.229  1  8.5969  0.006174 **
Residuals       52.965 32
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

交互作用項が入っているので、タイプ2平方和とは値が異なる。optionsを指定すると、書籍で示されるタイプ3平方和と一致。

続いて、モデル1.7.1C。興味と自主学習の両変数を平均で中心化して分析する。中心化は、scale関数で可能であるが、オプションを指定しないと標準化されるので、「scale(変数, scale = F)」として、中心化のみ行うようにすればよい。上のように、モデル式中にscale関数を書いても良いが、交互作用項のかき方が煩雑になるのでセンタリング変数を作ってから分析した方が、スマートかも。ここでは、とりあえず無理やりモデル式中でセンタリングする。

> m1.7.1C <- lm(ACHIEVE ~ scale(STUDY, scale=F) + scale(INTEREST, scale=F) + scale(STUDY, scale=F):scale(INTEREST, scale=F), data=df1);
> summary(m1.7.1C);

Call:
lm(formula = ACHIEVE ~ scale(STUDY, scale = F) + scale(INTEREST,
    scale = F) + scale(STUDY, scale = F):scale(INTEREST, scale = F),
    data = df1)

Residuals:
    Min      1Q  Median      3Q     Max
-2.4284 -0.8941 -0.1191  1.0809  2.8352

Coefficients:
                                                   Estimate Std. Error t value
(Intercept)                                         82.4412     0.2164 380.885
scale(STUDY, scale = F)                              2.2741     0.1591  14.298
scale(INTEREST, scale = F)                           2.7018     0.1735  15.570
scale(STUDY, scale = F):scale(INTEREST, scale = F)   0.3871     0.1320   2.932
                                                   Pr(>|t|)
(Intercept)                                         < 2e-16 ***
scale(STUDY, scale = F)                             1.9e-15 ***
scale(INTEREST, scale = F)                          < 2e-16 ***
scale(STUDY, scale = F):scale(INTEREST, scale = F)  0.00617 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.287 on 32 degrees of freedom
Multiple R-squared:  0.9445,    Adjusted R-squared:  0.9393
F-statistic: 181.7 on 3 and 32 DF,  p-value: < 2.2e-16

> Anova(m1.7.1C, type=3);
Anova Table (Type III tests)

Response: ACHIEVE
                                                   Sum Sq Df    F value
(Intercept)                                        240118  1 1.4507e+05
scale(STUDY, scale = F)                               338  1 2.0442e+02
scale(INTEREST, scale = F)                            401  1 2.4243e+02
scale(STUDY, scale = F):scale(INTEREST, scale = F)     14  1 8.5969e+00
Residuals                                              53 32
                                                      Pr(>F)
(Intercept)                                        < 2.2e-16 ***
scale(STUDY, scale = F)                            1.901e-15 ***
scale(INTEREST, scale = F)                         < 2.2e-16 ***
scale(STUDY, scale = F):scale(INTEREST, scale = F)  0.006174 **
Residuals
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

無理にセンタリングを式中の関数で行っているので、出力の各項のラベルが長くなってしまい、見づらい。しかし、結果は書籍に一致しているので、良しとする。

メモ/マルチレベルモデル.1450067815.txt.bz2 · 最終更新: 2015/12/14 13:36 by Wiki Editor

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki