メモ:マルチレベルモデル
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
メモ:マルチレベルモデル [2015/12/14 21:49] – [共通の傾きを持つ共分散分析] Wiki Editor | メモ:マルチレベルモデル [2017/02/11 09:57] (現在) – Wiki Editor | ||
---|---|---|---|
行 1: | 行 1: | ||
====== マルチレベルモデルに関するメモ ====== | ====== マルチレベルモデルに関するメモ ====== | ||
+ | |||
+ | いろいろ調べたりして、ちょっとまとめた資料を作成する機会があったので、なくさないように添付しておく。検証用に、サンプルデータもおいておく。サンプルデータは、意図的に生成したものであり、PDF中の設定も架空のもの。 | ||
+ | |||
+ | * {{: | ||
+ | * {{: | ||
+ | |||
[安藤正人(2011)『マルチレベルモデル入門 実習:継時データ分析』ナカニシヤ出版]に基づいて、マルチレベルモデルを勉強したメモ。 | [安藤正人(2011)『マルチレベルモデル入門 実習:継時データ分析』ナカニシヤ出版]に基づいて、マルチレベルモデルを勉強したメモ。 | ||
- | 本書は、SPSS/ | + | 本書は、SPSS/ |
===== R環境の準備 ===== | ===== R環境の準備 ===== | ||
- | 必要なライブラリをあらかじめインストールしておく。線形モデルを扱う関数(lm)は標準で入っているが、分散分析でType2/ | + | 必要なライブラリをあらかじめインストールしておく。線形モデルを扱う関数(lm)は標準で入っているが、分散分析でType2/ |
| | ||
install.packages(" | install.packages(" | ||
install.packages(" | install.packages(" | ||
| | ||
+ | # | ||
+ | install.packages(" | ||
+ | # | ||
+ | install.packages(" | ||
+ | | ||
library(car); | library(car); | ||
library(lme4); | library(lme4); | ||
+ | library(lmerTest); | ||
+ | library(pbkrtest); | ||
+ | |||
+ | |||
サンプルデータも読み込んでおく。 | サンプルデータも読み込んでおく。 | ||
行 17: | 行 32: | ||
df1 <- read.csv(" | df1 <- read.csv(" | ||
- | ===== 一般線形モデル ===== | + | - [[メモ: |
- | 分散分析、共分散分析、(重)回帰分析を一般線形モデルで統一的に把握する。 | + | - [[メモ:マルチレベルモデル: |
- | + | ||
- | ==== 1元配置分散分析 ==== | + | |
- | lm関数で学科間の平均得点について分散分析する。 | + | |
- | + | ||
- | >m1.2.1 <- lm(ACHIEVE ~ DEPART, data=df1); | + | |
- | > summary(m1.2.1); | + | |
- | + | ||
- | Call: | + | |
- | lm(formula = ACHIEVE ~ DEPART, data = df1) | + | |
- | + | ||
- | Residuals: | + | |
- | | + | |
- | -7.000 -3.542 | + | |
- | + | ||
- | Coefficients: | + | |
- | Estimate Std. Error t value Pr(> | + | |
- | (Intercept) | + | |
- | DEPARTb | + | |
- | DEPARTc | + | |
- | DEPARTd | + | |
- | DEPARTe | + | |
- | DEPARTf | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | Residual standard error: 4.478 on 30 degrees of freedom | + | |
- | Multiple R-squared: | + | |
- | F-statistic: | + | |
- | + | ||
- | > anova(m1.2.1); | + | |
- | + | ||
- | Analysis of Variance Table | + | |
- | + | ||
- | Response: ACHIEVE | + | |
- | Df Sum Sq Mean Sq F value Pr(>F) | + | |
- | DEPART | + | |
- | Residuals 30 601.50 | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | 学科(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 | + | |
- | -7.9444 -4.3194 -0.1111 | + | |
- | + | ||
- | Coefficients: | + | |
- | Estimate Std. Error t value Pr(> | + | |
- | (Intercept) | + | |
- | FACULTYS | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | Residual standard error: 5.043 on 34 degrees of freedom | + | |
- | Multiple R-squared: | + | |
- | F-statistic: | + | |
- | + | ||
- | > anova(m1.3.1); | + | |
- | Analysis of Variance Table | + | |
- | + | ||
- | Response: ACHIEVE | + | |
- | Df Sum Sq Mean Sq F value Pr(>F) | + | |
- | FACULTY | + | |
- | Residuals 34 864.72 | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | 書籍と一致。 | + | |
- | + | ||
- | 続いて、ネストした分散分析。 | + | |
- | > m1.3.2 <- lm(ACHIEVE ~ FACULTY/ | + | |
- | > summary(m1.3.2); | + | |
- | + | ||
- | Call: | + | |
- | lm(formula = ACHIEVE ~ FACULTY/ | + | |
- | + | ||
- | Residuals: | + | |
- | | + | |
- | -7.000 -3.542 | + | |
- | + | ||
- | Coefficients: | + | |
- | | + | |
- | (Intercept) | + | |
- | FACULTYS | + | |
- | FACULTYL: | + | |
- | FACULTYS: | + | |
- | FACULTYL: | + | |
- | FACULTYS: | + | |
- | FACULTYL: | + | |
- | FACULTYS: | + | |
- | FACULTYL: | + | |
- | FACULTYS: | + | |
- | FACULTYL: | + | |
- | FACULTYS: | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | Residual standard error: 4.478 on 30 degrees of freedom | + | |
- | Multiple R-squared: | + | |
- | F-statistic: | + | |
- | + | ||
- | > anova(m1.3.2); | + | |
- | Analysis of Variance Table | + | |
- | + | ||
- | Response: ACHIEVE | + | |
- | Df Sum Sq Mean Sq F value Pr(>F) | + | |
- | FACULTY | + | |
- | FACULTY: | + | |
- | Residuals | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | 各学科の平均の推定値の計算は、やや面倒。学部はLとSがあり、それぞれa, | + | |
- | + | ||
- | 各学部の平均の推定値に関しては、Rでは直接出力はされない。切片の値は学部の平均の推定値ではなく、この場合はL学部a学科の推定値。学部の推定値を求めるには、学部だけで1元配置分散分析をして平均の推定値を求めて、標準誤差はネストしたモデルに基づいて計算する必要がある。 | + | |
- | + | ||
- | その他、各数値は整理されていないので値を拾うか計算が必要。平方和、平方平均は、分散分析表(anovaの結果)から拾える。モデル全体のR2乗、調整R2乗はlmの結果のsummary下部に表示。F値およびp値の検定に関する数値も、表示されたものを拾う。書籍にあるもので計算しなければならないのは、学部および学科個別の偏η2乗値で、分散分析表から誤差の平方和と学部および学科変数の平方和をもってきて、[学部の平方和/ | + | |
- | + | ||
- | 平均の推定値の標準誤差は、一般線形モデルでは先に書いたように誤差の平均平方を観測数で除した値となる。したがって、学部レベルの平均の推定値の標準誤差は、このデータ(学部、学科ともに全ての同水準カテゴリで観測数が同じバランスデータ)については、誤差の平均平方を各学部の観測数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 | + | |
- | -8.8333 -4.4722 | + | |
- | + | ||
- | Coefficients: | + | |
- | Estimate Std. Error t value Pr(> | + | |
- | (Intercept) | + | |
- | GENDERm | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | Residual standard error: 5.251 on 34 degrees of freedom | + | |
- | Multiple R-squared: | + | |
- | F-statistic: | + | |
- | + | ||
- | > anova(m1.4.1); | + | |
- | Analysis of Variance Table | + | |
- | + | ||
- | Response: ACHIEVE | + | |
- | Df Sum Sq Mean Sq F value Pr(>F) | + | |
- | GENDER | + | |
- | Residuals 34 937.61 | + | |
- | + | ||
- | 単純な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 | + | |
- | -7.0000 -2.8056 -0.2222 | + | |
- | + | ||
- | Coefficients: | + | |
- | Estimate Std. Error t value Pr(> | + | |
- | (Intercept) | + | |
- | FAC_GENLm | + | |
- | FAC_GENSf | + | |
- | FAC_GENSm | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | Residual standard error: 3.711 on 32 degrees of freedom | + | |
- | Multiple R-squared: | + | |
- | F-statistic: | + | |
- | + | ||
- | > anova(m1.4.2); | + | |
- | Analysis of Variance Table | + | |
- | + | ||
- | Response: ACHIEVE | + | |
- | Df Sum Sq Mean Sq F value Pr(>F) | + | |
- | FAC_GEN | + | |
- | Residuals 32 440.67 | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | 続いて、性別、学部および両者の交互作用を含めた2元配置分散分析。モデルの式は、「*」で直接効果と全ての組み合わせでの交互作用を検討する。省略しなければ[ACHIEVE ~ FACULTY+GENDER+FACULTY: | + | |
- | + | ||
- | > m1.4.3 <- lm(ACHIEVE ~ FACULTY*GENDER, | + | |
- | > summary(m1.4.3); | + | |
- | + | ||
- | Call: | + | |
- | lm(formula = ACHIEVE ~ FACULTY * GENDER, data = df1) | + | |
- | + | ||
- | Residuals: | + | |
- | Min 1Q Median | + | |
- | -7.0000 -2.8056 -0.2222 | + | |
- | + | ||
- | Coefficients: | + | |
- | | + | |
- | (Intercept) | + | |
- | FACULTYS | + | |
- | GENDERm | + | |
- | FACULTYS: | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | Residual standard error: 3.711 on 32 degrees of freedom | + | |
- | Multiple R-squared: | + | |
- | F-statistic: | + | |
- | + | ||
- | > anova(m1.4.3); | + | |
- | Analysis of Variance Table | + | |
- | + | ||
- | Response: ACHIEVE | + | |
- | Df Sum Sq Mean Sq F value Pr(>F) | + | |
- | FACULTY | + | |
- | GENDER | + | |
- | FACULTY: | + | |
- | Residuals | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | 各変数の平均の推定値の求め方は、学部、学科についてはそれぞれで1元配置分散分析をした値で、標準誤差はこれまでに見たように誤差の平均平方を観測数で除した値とする。学部×学科については、L学部女性が基準になっているので、L学部男性(基準に対して性別のみ違う)ならGENDERの係数を加え、S学部女性(基準に対して学部のみ違う)ならFACULTYの係数を加え、S学部男性(基準に対して、学部・性別とも異なる)なら、GENDER+FACULTY+GENDER: | + | |
- | + | ||
- | 上記の性別×学部変数と、性別+学部+交互作用での2つの分析は、モデルとして説明される分散の総和は同じ(R2乗や平方和が一致)。つまり、性別×学部変数で説明された情報量を、性別の効果、学部の効果、および交互作用に分割して分析したのが、後者のモデル。要素に分割してみると、交互作用による効果が大きいことがわかる。 | + | |
- | + | ||
- | 分散分析の基本的な考え方は、説明変数によって目的変数の分散をどの程度説明できるか、という点に尽きる。したがって、説明変数の投入方法を変更してみても、モデル全体として見れば説明される分散(情報量)は等価。この点は、マルチレベルモデルを理解する上で、大事だと思われる。すなわち、書籍で後に解説されていくことになるが、説明変数を固定効果として投入しても変量効果として投入しても、モデルとしてその説明変数が目的変数の分散を説明する割合は変わらない。なので、変量効果そのものに関心がなく、その変数の影響を統制したいということであれば、固定効果としてモデルに投入しても、概ね同じ分析結果が得られる(と思う)。 | + | |
- | + | ||
- | + | ||
- | ==== 重(単)回帰分析 ==== | + | |
- | 単回帰分析のパラメータの推定結果については、SPSSの出力(書籍の数値)との対応は容易に判断できるので、省略。 | + | |
- | + | ||
- | === 平方和のタイプ === | + | |
- | 重回帰分析(ないしは、2元以上の分散分析=説明変数が複数の一般線形モデル)のモデルについて回帰分析を行う際には、平方和のタイプに注意をする必要がある。平方和のタイプには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 | + | |
- | INTEREST | + | |
- | Residuals 33 67.19 2.04 | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | > Anova(m1.6.2a, | + | |
- | Anova Table (Type II tests) | + | |
- | + | ||
- | Response: ACHIEVE | + | |
- | Sum Sq Df F value Pr(>F) | + | |
- | STUDY | + | |
- | INTEREST | + | |
- | Residuals | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | 興味を先に投入 | + | |
- | > 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 | + | |
- | STUDY 1 388.36 | + | |
- | Residuals 33 67.19 2.04 | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | > Anova(m1.6.2b, | + | |
- | Anova Table (Type II tests) | + | |
- | + | ||
- | Response: ACHIEVE | + | |
- | Sum Sq Df F value Pr(>F) | + | |
- | INTEREST | + | |
- | STUDY | + | |
- | Residuals | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | タイプ2の計算結果は、順序に関わらず同じ値だが、タイプ1では先に投入するよりも、後に投入した方が平方和の値が小さくなることが確認できる。書籍で示されている偏η2乗は、タイプ2平方和を使って計算したもののようだ。 | + | |
- | + | ||
- | + | ||
- | == RのcarパッケージAnova()関数でのタイプ3平方和 == | + | |
- | Rでは、factor型の変数は自動的にダミー変数に変換してくれるが、その変換方法にはいくつかパターンがある。その関係で、単純にAnova関数でtype3平方和を計算すると、おかしな値となる。そこで、以下のオプションをあらかじめ指定しておく。 | + | |
- | + | ||
- | options(contrasts = c(" | + | |
- | + | ||
- | + | ||
- | 本線に戻って、書籍の分析結果を追いかける。分散分析の平方和のタイプ以外はシンプルな回帰分析なので、Rでの分析でも結果は一致する。Rでちょっと引っかかるのは、標準化した分析とセンタリングした分析の方法か(使える人にとっては特に問題ないのだと思うが)。 | + | |
- | + | ||
- | 標準化(p.25, | + | |
- | + | ||
- | | + | |
- | > summary(m1.6.2Z); | + | |
- | + | ||
- | Call: | + | |
- | lm(formula = scale(ACHIEVE) ~ scale(STUDY) + scale(INTEREST), | + | |
- | data = df1) | + | |
- | + | ||
- | Residuals: | + | |
- | | + | |
- | -0.44360 -0.17371 -0.04769 | + | |
- | + | ||
- | Coefficients: | + | |
- | | + | |
- | (Intercept) | + | |
- | scale(STUDY) | + | |
- | scale(INTEREST) 6.529e-01 | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | Residual standard error: 0.2732 on 33 degrees of freedom | + | |
- | Multiple R-squared: | + | |
- | F-statistic: | + | |
- | + | ||
- | > Anova(m1.6.2Z, | + | |
- | Anova Table (Type III tests) | + | |
- | + | ||
- | Response: scale(ACHIEVE) | + | |
- | Sum Sq Df F value Pr(>F) | + | |
- | (Intercept) | + | |
- | scale(STUDY) | + | |
- | scale(INTEREST) 14.7405 | + | |
- | Residuals | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | 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: | + | |
- | + | ||
- | Residuals: | + | |
- | Min 1Q Median | + | |
- | -2.4284 -0.8941 -0.1191 | + | |
- | + | ||
- | Coefficients: | + | |
- | | + | |
- | (Intercept) | + | |
- | STUDY | + | |
- | INTEREST | + | |
- | STUDY: | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | Residual standard error: 1.287 on 32 degrees of freedom | + | |
- | Multiple R-squared: | + | |
- | F-statistic: | + | |
- | + | ||
- | > Anova(m1.7.1, | + | |
- | Anova Table (Type III tests) | + | |
- | + | ||
- | Response: ACHIEVE | + | |
- | Sum Sq Df F value Pr(>F) | + | |
- | (Intercept) | + | |
- | STUDY 1.025 1 0.6190 | + | |
- | INTEREST | + | |
- | STUDY: | + | |
- | Residuals | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | 交互作用項が入っているので、タイプ2平方和とは値が異なる。optionsを指定すると、書籍で示されるタイプ3平方和と一致。 | + | |
- | + | ||
- | 続いて、モデル1.7.1C。興味と自主学習の両変数を平均で中心化して分析する。中心化は、scale関数で可能であるが、オプションを指定しないと標準化されるので、「scale(変数, | + | |
- | + | ||
- | > m1.7.1C <- lm(ACHIEVE ~ scale(STUDY, | + | |
- | > summary(m1.7.1C); | + | |
- | + | ||
- | Call: | + | |
- | lm(formula = ACHIEVE ~ scale(STUDY, | + | |
- | scale = F) + scale(STUDY, | + | |
- | data = df1) | + | |
- | + | ||
- | Residuals: | + | |
- | Min 1Q Median | + | |
- | -2.4284 -0.8941 -0.1191 | + | |
- | + | ||
- | Coefficients: | + | |
- | | + | |
- | (Intercept) | + | |
- | scale(STUDY, | + | |
- | scale(INTEREST, | + | |
- | scale(STUDY, | + | |
- | | + | |
- | (Intercept) | + | |
- | scale(STUDY, | + | |
- | scale(INTEREST, | + | |
- | scale(STUDY, | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | Residual standard error: 1.287 on 32 degrees of freedom | + | |
- | Multiple R-squared: | + | |
- | F-statistic: | + | |
- | + | ||
- | > Anova(m1.7.1C, | + | |
- | Anova Table (Type III tests) | + | |
- | + | ||
- | Response: ACHIEVE | + | |
- | Sum Sq Df F value | + | |
- | (Intercept) | + | |
- | scale(STUDY, | + | |
- | scale(INTEREST, | + | |
- | scale(STUDY, | + | |
- | Residuals | + | |
- | Pr(>F) | + | |
- | (Intercept) | + | |
- | scale(STUDY, | + | |
- | scale(INTEREST, | + | |
- | scale(STUDY, | + | |
- | Residuals | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | 無理にセンタリングを式中の関数で行っているので、出力の各項のラベルが長くなってしまい、見づらい。しかし、結果は書籍に一致しているので、良しとする。 | + | |
- | + | ||
- | ==== 高次多項式回帰分析 ==== | + | |
- | 2次以上の項を含む回帰分析。 | + | |
- | + | ||
- | + | ||
- | モデル1.8.1の分析例。 | + | |
- | > m1.8.1 <- lm(ACHIEVE ~ STUDY + I(STUDY^2), df1); | + | |
- | > summary(m1.8.1); | + | |
- | + | ||
- | Call: | + | |
- | lm(formula = ACHIEVE ~ STUDY + I(STUDY^2), data = df1) | + | |
- | + | ||
- | Residuals: | + | |
- | Min 1Q Median | + | |
- | -6.2599 -2.2677 -0.2599 | + | |
- | + | ||
- | Coefficients: | + | |
- | Estimate Std. Error t value Pr(> | + | |
- | (Intercept) | + | |
- | STUDY | + | |
- | I(STUDY^2) | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | Residual standard error: 3.531 on 33 degrees of freedom | + | |
- | Multiple R-squared: | + | |
- | F-statistic: | + | |
- | + | ||
- | > Anova(m1.8.1, | + | |
- | Anova Table (Type II tests) | + | |
- | + | ||
- | Response: ACHIEVE | + | |
- | Sum Sq Df F value | + | |
- | STUDY 100.64 | + | |
- | I(STUDY^2) | + | |
- | Residuals | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | 二次以上の項を投入する場合は、I()関数を使う必要がある。ここでは、STUDYの2次項をモデルに入れるためにI(STUDY^2)としている。 | + | |
- | + | ||
- | 1.8.1のデータをセンタリングして分析。データの加工方法がスマートではないかもしれないが(いずれ調査しよう)、センタリングした変数を作成したうえで分析する。 | + | |
- | + | ||
- | > C_STUDY <- scale(df1$STUDY, | + | |
- | > m1.8.1C <- lm(df1$ACHIEVE ~ C_STUDY + I(C_STUDY^2)); | + | |
- | > summary(m1.8.1C); | + | |
- | + | ||
- | Call: | + | |
- | lm(formula = df1$ACHIEVE ~ C_STUDY + I(C_STUDY^2)) | + | |
- | + | ||
- | Residuals: | + | |
- | Min 1Q Median | + | |
- | -6.2599 -2.2677 -0.2599 | + | |
- | + | ||
- | Coefficients: | + | |
- | | + | |
- | (Intercept) | + | |
- | C_STUDY | + | |
- | I(C_STUDY^2) | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | Residual standard error: 3.531 on 33 degrees of freedom | + | |
- | Multiple R-squared: | + | |
- | F-statistic: | + | |
- | + | ||
- | > Anova(m1.8.1C, | + | |
- | Anova Table (Type II tests) | + | |
- | + | ||
- | Response: df1$ACHIEVE | + | |
- | Sum Sq Df F value Pr(>F) | + | |
- | C_STUDY | + | |
- | I(C_STUDY^2) | + | |
- | Residuals | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | まず、scale関数でSTUDYをセンタリングして変数に代入する。lmのモデル式は、ベクトルそのものを指定しているので、データフレームを指定しなくても計算してくれる。 | + | |
- | + | ||
- | ==== 変数の対数変換 ==== | + | |
- | 変数を対数変換したうえで回帰する方法。こちらも変数変換の手順だけ確認。 | + | |
- | + | ||
- | > m1.9.1 <- lm(log(ACHIEVE) ~ log(STUDY) + log(INTEREST), | + | |
- | > summary(m1.9.1); | + | |
- | + | ||
- | Call: | + | |
- | lm(formula = log(ACHIEVE) ~ log(STUDY) + log(INTEREST), | + | |
- | + | ||
- | Residuals: | + | |
- | Min 1Q Median | + | |
- | -0.028015 -0.015089 -0.003859 | + | |
- | + | ||
- | Coefficients: | + | |
- | Estimate Std. Error t value Pr(> | + | |
- | (Intercept) | + | |
- | log(STUDY) | + | |
- | log(INTEREST) | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | Residual standard error: 0.019 on 33 degrees of freedom | + | |
- | Multiple R-squared: | + | |
- | F-statistic: | + | |
- | + | ||
- | > Anova(m1.9.1); | + | |
- | Anova Table (Type II tests) | + | |
- | + | ||
- | Response: log(ACHIEVE) | + | |
- | Sum Sq Df F value Pr(>F) | + | |
- | log(STUDY) | + | |
- | log(INTEREST) 0.050605 | + | |
- | Residuals | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | log関数を使って、各変数を対数変換するだけ。log関数に単純に変数を渡すと、自然対数になる。 | + | |
- | + | ||
- | ==== 共通の傾きを持つ共分散分析 ==== | + | |
- | 名義変数と連続変数を同時に扱うモデル。共分散分析と呼ばれているものであるが、一般線形モデルの枠組みではカテゴリカル変数をダミーデータとして投入した重回帰分析と同じ。分散分析の検定力を上げるために連続尺度の共変量を考慮すると考えるのか、カテゴリカル変数と連続変数を合わせて、目的変数の値を予測するのか、という分析視点の違いと考えられる。本質的に同じ分析なので、目的に応じて分析の見方を変えればよいと思う。 | + | |
- | + | ||
- | ここでは、学部と自主学習で達成度を予想するモデル。 | + | |
- | + | ||
- | > m1.10.1 <- lm(ACHIEVE ~ FACULTY + STUDY, df1); | + | |
- | > summary(m1.10.1); | + | |
- | + | ||
- | Call: | + | |
- | lm(formula = ACHIEVE ~ FACULTY + STUDY, data = df1) | + | |
- | + | ||
- | Residuals: | + | |
- | Min 1Q Median | + | |
- | -6.0532 -2.5351 -0.9895 | + | |
- | + | ||
- | Coefficients: | + | |
- | Estimate Std. Error t value Pr(> | + | |
- | (Intercept) | + | |
- | FACULTYS | + | |
- | STUDY | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | Residual standard error: 3.738 on 33 degrees of freedom | + | |
- | Multiple R-squared: | + | |
- | F-statistic: | + | |
- | + | ||
- | > anova(m1.10.1); | + | |
- | Analysis of Variance Table | + | |
- | + | ||
- | Response: ACHIEVE | + | |
- | Df Sum Sq Mean Sq F value Pr(>F) | + | |
- | FACULTY | + | |
- | STUDY 1 403.61 | + | |
- | Residuals 33 461.11 | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | > Anova(m1.10.1, | + | |
- | Anova Table (Type III tests) | + | |
- | + | ||
- | Response: ACHIEVE | + | |
- | Sum Sq Df F value Pr(>F) | + | |
- | (Intercept) 5645.1 | + | |
- | FACULTY | + | |
- | STUDY 403.6 1 28.8845 6.109e-06 *** | + | |
- | Residuals | + | |
- | --- | + | |
- | Signif. codes: | + | |
- | + | ||
- | 分散分析の結果については、Rで出力した結果と書籍に示される結果は一致する。しかし、いくつかわからない点もある。 | + | |
- | + | ||
- | まず、p.35の表1-21について。学部(FACULTY)の平均の推定値については、summaryに示される(Intercept)がリファレンスであるL学部で、この値にFACULTYSの係数を加えたものS学部の平均の推定値となる。ここまではOK。よくわからないのは、標準誤差の値。本書のp.9では、誤差の平均平方を観測数で除した値の平方根とされているが、ここではそのように計算した値とは異なる。ただし、Rの出力の(Intercept)の標準誤差の値と同一の値が示されている。これはSPSSの出力でも同様。また、L学部とS学部の標準誤差も、分散分析の場合とは異なり両者で違う値が示されている。これは、カテゴリカルな変数だけではなく連続変数を同時に扱うため、回帰直線の傾きがあるためだと思う(もう少し数学的理解が必要。回帰式の切片の標準誤差の算出方法を調べるとなんとなくわかる気がするが、完全には理解できていない。それぞれの回帰直線のX, | + | |
- | + | ||
- | 書籍で示される数値を求める方法に終始したが、切片の誤差は、summaryの出力(およびp.35表1-21)では切片が0という帰無仮説を検定するだけで、特に意味があるようには思えない。問題は、L学部とS学部の間で切片に有意な差が認められるか、という点。これはp.37の表1-24で検定されている。これは、lmのsummaryの(Intercept)の一行下のFACULTYSの推定値、標準誤差、t値、p値に一致する。したがって、学部間の切片に差があるかを検定している。この検定は、タイプ3平方和による分散分析のFACULTYのp値と完全に一致しており、表1-24のt値を2乗した値が分散分析のF値となっている。つまり、両者の検定は等価であり、分散分析で学部の効果として検討されているのは、切片の違いということである。 | + | |
- | + | ||
- | 共分散分析と一般線形モデルとの違いは、平方和のタイプの違いともいえる。タイプ1平方和は、共分散分析に対応する。すなわち、目的のカテゴリカル変数の検定力を上げるために、連続変数を考慮する。なので、最初に検定の目的であるカテゴリカル変数を投入し、同時に連続変数を投入することでモデル全体としての誤差の平方平均を小さくして検定力を向上させる。ここで、目的は最初に投入したカテゴリカル変数の検定なので、用いるのはタイプ1の平方和である。投入順序も、当然ながら目的のカテゴリカル変数を第1番目にしなければ意味がないだろう。タイプ3平方和を用いると、他の投入変数の影響を全て取り除いたうえで計算されるため、他の変数との兼ね合いでその変数の効果が検定される。 | + | |
- | + | ||
- | 本書の例でいえば、共分散分析(タイプ1平方和)では自主学習の効果を考慮すると学部の効果は有意だが、一般線形モデル(タイプ3平方和)ならば有意ではない。これは、前者の共分散分析では、自主学習の多さ(平均的な水準)もひっくるめて学部の達成度の平均を検定しており、後者は学部の違いのみの効果を検定しているために有意にならないのだと思う。学部のみの違いによる達成度の差+自主学習との相関部分(学部の違いによって自主学習が増える分)を含めた達成度の違いの検定がタイプ1平方和、タイプ3平方和では他の変数で説明される部分はすべて取り除いたうえでの平方和なので、純粋な学部の違いのみの効果を検定している。 | + | |
メモ/マルチレベルモデル.txt · 最終更新: 2017/02/11 09:57 by Wiki Editor