メモ:分散分析
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン最新のリビジョン両方とも次のリビジョン | ||
メモ:分散分析 [2017/09/07 09:56] – Wiki Editor | メモ:分散分析 [2017/09/08 18:30] – Wiki Editor | ||
---|---|---|---|
行 11: | 行 11: | ||
===== 備忘録 ===== | ===== 備忘録 ===== | ||
- | ネストした分散分析について | + | ==== ネストした分散分析について |
ネスト構造にあるデータの分散分析では、親要素のみで分散分析をした場合と、子要素もモデルに含めて分析した場合では、親要素の平方和は変わらない。子要素を投入すると、誤差の平方和が子要素で説明できる分だけ減少し、その分が子要素の平方和となる。 | ネスト構造にあるデータの分散分析では、親要素のみで分散分析をした場合と、子要素もモデルに含めて分析した場合では、親要素の平方和は変わらない。子要素を投入すると、誤差の平方和が子要素で説明できる分だけ減少し、その分が子要素の平方和となる。 | ||
行 68: | 行 69: | ||
こうすることで、子は親にネストされているものとして平方和が計算される。具体的には、子要素の平方和は親要素との交互作用で計算される。そのため、親要素をまたがって子要素のコードが重なっていても、親要素が異なれば計算上は無関係となるので、期待通りの計算結果が得られる。 | こうすることで、子は親にネストされているものとして平方和が計算される。具体的には、子要素の平方和は親要素との交互作用で計算される。そのため、親要素をまたがって子要素のコードが重なっていても、親要素が異なれば計算上は無関係となるので、期待通りの計算結果が得られる。 | ||
+ | |||
+ | ==== 単純主効果が有意な場合の多重比較について ==== | ||
+ | 2要因の分散分析において交互作用が有意になった場合、単純主効果の検定を行う。 | ||
+ | |||
+ | ここでは竹内理・水本篤『外国語教育研究ハンドブック 【改訂版】 研究手法のより良い理解のために 』2014年8月の第7章を例に、筆者が提供してくれる[[http:// | ||
+ | |||
+ | SPSSでは一般線形モデルで分析を行うようである。分散分析表で平方和のTypeがIIIとなっているので、RでもType IIIの平方和を計算するためにcarパッケージを読込、Anova関数を利用する。 | ||
+ | |||
+ | > library(car) # パッケージの読込 | ||
+ | | ||
+ | # Type III平方和を計算する際には、factorのダミーコードの方法を「contr.sum」に変更しないと計算結果がおかしくなる | ||
+ | > options(contrasts=c(" | ||
+ | | ||
+ | # 筆者のサイトからダウンロードしてデータを読み込む | ||
+ | > DAT <- read.csv(" | ||
+ | | ||
+ | # 数値でコーディングされているのでfactorとして認識させる | ||
+ | > DAT$教室 <- factor(DAT$教室); | ||
+ | > DAT$クラスサイズ <- factor(DAT$クラスサイズ); | ||
+ | |||
+ | # carパッケージのAnova関数を利用して分散分析 | ||
+ | > Anova(lm(点数 ~ 教室 * クラスサイズ, | ||
+ | | ||
+ | Anova Table (Type III tests) | ||
+ | | ||
+ | Response: 点数 | ||
+ | Sum Sq Df F value Pr(> | ||
+ | (Intercept) | ||
+ | 教室 | ||
+ | クラスサイズ | ||
+ | 教室: | ||
+ | Residuals | ||
+ | |||
+ | |||
+ | # 偏イータ2乗の計算 | ||
+ | # 対象の変数の平方和 / (対象の変数の平方和 + 誤差平方和) | ||
+ | | ||
+ | # Anovaの結果を変数に投入 | ||
+ | > res.anova <- Anova(lm(点数 ~ 教室 * クラスサイズ, | ||
+ | | ||
+ | # res.anovaから平方和を取り出して計算 | ||
+ | # 教室の偏イータ2乗 | ||
+ | > res.anova$" | ||
+ | [1] 0.001502481 | ||
+ | | ||
+ | # クラスサイズの偏イータ2乗 | ||
+ | > res.anova$" | ||
+ | [1] 0.3899955 | ||
+ | | ||
+ | # 交互作用の偏イータ2乗 | ||
+ | > res.anova$" | ||
+ | [1] 0.187541 | ||
+ | |||
+ | # 単純主効果の検定 | ||
+ | # データを一方の要因の水準毎に分割して他方の要因で1要因分散分析を実施 | ||
+ | # ただし、検定の際の誤差項は全体の分散分析の値を用いる必要がある | ||
+ | | ||
+ | # クラスサイズが10人のデータに限定して、教室要因で分散分析 | ||
+ | # ここでのF値や検定結果は使わない | ||
+ | > Anova(lm(点数 ~ 教室, data=DAT[DAT$クラスサイズ == " | ||
+ | Anova Table (Type III tests) | ||
+ | | ||
+ | Response: 点数 | ||
+ | Sum Sq Df F value Pr(> | ||
+ | (Intercept) 283731 | ||
+ | 教室 | ||
+ | Residuals | ||
+ | | ||
+ | # 結果を仮に「res.クラスサイズ1」に代入しておく | ||
+ | > res.クラスサイズ1 <- Anova(lm(点数 ~ 教室, data=DAT[DAT$クラスサイズ == " | ||
+ | | ||
+ | # 全体の分散分析結果「res.anova」と水準毎の結果「res.クラスサイズ1」からF値を計算 | ||
+ | # F値は要因の平均平方 / 誤差の平均平方で計算する。 | ||
+ | # Anova関数では平均平方が出力されないので、平均平方を自由度で除して計算する | ||
+ | # クラスサイズの水準毎に分割したデータを用いた分散分析の「教室」要因の平均平方を、 | ||
+ | # 最初に行った全体の分散分析の誤差平均平方で除した値が、検定に用いるF値となる | ||
+ | | ||
+ | > (res.クラスサイズ1$" | ||
+ | [1] 14.06695 | ||
+ | # 変数に保持しておく | ||
+ | F.クラスサイズ1 <- (res.クラスサイズ1$" | ||
+ | | ||
+ | # 求めたF値からp値を求める。 | ||
+ | # pf関数に、F値と自由度を与える。lower.tailは上限からの累積確率を求めるオプション | ||
+ | > pf(F.クラスサイズ1, | ||
+ | [1] 0.0002400081 | ||
+ | | ||
+ | # p値の値が小さいので書籍の数値と一致しているかわからないので、クラスサイズが20人の場合も計算して確認 | ||
+ | > res.クラスサイズ2 <- Anova(lm(点数 ~ 教室, data=DAT[DAT$クラスサイズ == " | ||
+ | > res.クラスサイズ2 | ||
+ | Anova Table (Type III tests) | ||
+ | | ||
+ | Response: 点数 | ||
+ | Sum Sq Df F value Pr(> | ||
+ | (Intercept) 241808 | ||
+ | 教室 | ||
+ | Residuals | ||
+ | | ||
+ | > F.クラスサイズ2 <- (res.クラスサイズ2$" | ||
+ | > F.クラスサイズ2 | ||
+ | [1] 0.2258592 | ||
+ | | ||
+ | > pf(F.クラスサイズ2, | ||
+ | [1] 0.6352074 | ||
メモ/分散分析.txt · 最終更新: 2017/09/08 19:44 by Wiki Editor