第7章 分散分析 6章のt検定は2つの群の平均値を比較。 それに対し、分散分析は3つ以上の群 の平均値を比較 7.1 一元配置分散分析 (対応なし) 分散分析:3つ以上の群の平均値差の検定 (名前に惑わされないように) 例題:表4.1 A,B,C,Dの4群の母平均に差があるか? A B C D 15 13 10 10 9 8 6 7 18 8 11 3 14 12 7 5 18 7 12 7 7.1.1 一元配置分散分析(対応なし)を実行する Rを用いた計算方法の紹介 (1)帰無仮説と対立仮説の設定 帰無仮説 H0:4群の母平均は等しい 対立仮説 H1:4群の母平均は等しくない *注意 4群のうち1つだけ母平均が異なるような場合で も対立仮説は成立 (2)検定統計量の選択 次のFを検定統計量とする: 群間平方和 群間の自由度 F 群内平方和 群内の自由度 これは帰無仮説(すべての群の母平均が等しいとき) のもとで、確率分布のF分布に従う *F分布の自由度は2種類:分子と分母の自由度 df関数:F分布の描画 使用法 df(値,分子の自由度,分母の自由度) 参考: dt関数やdchisq関数と同様、確率密度の値を返す関数 # 図7.1 0.4 0.3 0.2 0.1 0.0 df(x, 3, 16) 0.5 0.6 0.7 > curve(df(x,3,16),0,5) 0 1 2 3 x 4 5 (3)有意水準αの決定 ここでは有意水準は5%、つまりα=0.05とする 図7.1から明らかなように、F分布は正値を取る ⇒ 分散分析は常に片側検定 (4)検定統計量の実現値を求める 以下の3種類を紹介 (1) oneway.test関数 一元配置分散分析のみ実行可能 (2) aov関数 最も一般的 (3) anova関数 複数のモデルの比較など高度な分析に対応 実行例:データの準備 > A <- c(15,9,18,14,18) > B <- c(13,8,8,12,7) > C <- c(10,6,11,7,12) > D <- c(10,7,3,5,7) > 統計テスト2 <- c(A,B,C,D) > 指導法 <- c(rep("A",5),rep("B",5),rep("C",5),rep("D",5)) > 指導法2 <- factor(指導法) > 指導法2 [1] A A A A A B B B B B C C C C C D D D D D Levels: A B C D *rep関数:rep(値,繰り返し回数) ー 指定した値を繰り返し回数分だけ繰り 返したデータを作る * factor関数:要因ベクトルに変換する(分散分析のため必要) (1) oneway.test関数 > oneway.test(統計テスト2~指導法2, var.equal=TRUE ) すべての母分散が等しいこと (母分散の等質性)を仮定 One-way analysis of means data: 統計テスト2 and 指導法2 F = 7.1111, num df = 3, denom df = 16, p-value = 0.002988 *Fの実現値は7.11 (2) aov関数 > aov(統計テスト2~指導法2) Call: aov(formula = 統計テスト2 ~ 指導法2) Terms: 指導法2 Residuals Sum of Squares 184 138 Deg. of Freedom 3 16 Residual standard error: 2.936835 Estimated effects may be unbalanced > summary(aov(統計テスト2~指導法2)) Df Sum Sq Mean Sq F value Pr(>F) 指導法2 3 184.000 61.333 7.1111 0.002988 ** Residuals 16 138.000 8.625 oneway.test関数と同じ結果 --Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 分散分析表 (3) anova関数 > anova(lm(統計テスト2~指導法2)) Analysis of Variance Table 分散分析表 Response: 統計テスト2 Df Sum Sq Mean Sq F value Pr(>F) 指導法2 3 184.000 61.333 7.1111 0.002988 ** Residuals 16 138.000 8.625 oneway.test関数と同じ結果 --Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 *結果は分散分析表の形で出力、Fの実現値は7.11 ⇒ 3つの関数とも、Fの実現値は一致 (5)帰無仮説の棄却or採択の決定 3つの関数のどれを使っても 検定統計量Fの実現値に対応するp値が出力 これにより帰無仮説を棄却するかどうか決め ることができる ここで問題: この例題の結果はどういうように 報告される? ヒント:いずれも p-value = 0.002988 という出力 帰無仮説の棄却と採択の決定 • p値が0.002988。これは有意水準として設定 した0.05より小さいので帰無仮説を‥‥ 棄却! 4つの指導法の間に有意な平均 値差が見られる 13 7.1.2 平方和の分解 分散分析の考え方の基礎の説明 (1)平方和の分解、(2)自由度の計算、(3)分散分析表の見方 群間平方和と群内平方和の説明のために... > 全データ <- cbind(A, B, C, D) > 全データ A B C D [1,] 15 13 10 10 [2,] 9 8 6 7 [3,] 18 8 11 3 [4,] 14 12 7 5 [5,] 18 7 12 7 *cbind( )は引数の値のデータを横方向につないで行列を作る関数 群の平均と全平均 > 群平均 <- colMeans(全データ) > 群平均 A B C D 14.8 9.6 9.2 6.4 > 全平均 <- mean(全データ) > 全平均 [1] 10 > 全平均行列 <- matrix(rep(全平均,20), nrow=5,ncol=4) > 全平均行列 [,1] [,2] [,3] [,4] [1,] 10 10 10 10 [2,] 10 10 10 10 [3,] 10 10 10 10 [4,] 10 10 10 10 [5,] 10 10 10 10 > 群平均行列 <- matrix(rep(群平 均,5),nrow=5,ncol=4,byrow=TRUE) > 群平均行列 [,1] [,2] [,3] [,4] [1,] 14.8 9.6 9.2 6.4 [2,] 14.8 9.6 9.2 6.4 [3,] 14.8 9.6 9.2 6.4 [4,] 14.8 9.6 9.2 6.4 [5,] 14.8 9.6 9.2 6.4 > 全体 <- 全データ - 全平均行列 それぞれのデータに対する > 全体 全平均との差 A B C D [1,] 5 3 0 0 [2,] -1 -2 -4 -3 [3,] 8 -2 1 -7 [4,] 4 2 -3 -5 群間: それぞれの群に対する [5,] 8 -3 2 -3 全平均からの差 > 群間 <- 群平均行列 - 全平均行列 > 群間 *効果 : 条件の違いで平均点を [,1] [,2] [,3] [,4] 押し上げたり引き下げたりする力 [1,] 4.8 -0.4 -0.8 -3.6 *分散分析は母集団において群 [2,] 4.8 -0.4 -0.8 -3.6 の違いによる効果の有無を検定 [3,] 4.8 -0.4 -0.8 -3.6 する手法 [4,] 4.8 -0.4 -0.8 -3.6 [5,] 4.8 -0.4 -0.8 -3.6 > 群内 <- 全データ - 群平均行列 群内: それぞれの群の平均との差 > 全体^2 A B [1,] 25 9 [2,] 1 4 [3,] 64 4 [4,] 16 4 [5,] 64 9 > 群間^2 [,1] [1,] 23.04 [2,] 23.04 [3,] 23.04 [4,] 23.04 [5,] 23.04 C 0 16 1 9 4 D 0 9 49 25 9 [,2] 0.16 0.16 0.16 0.16 0.16 [,3] 0.64 0.64 0.64 0.64 0.64 [,4] 12.96 12.96 12.96 12.96 12.96 > 群内^2 A B C D [1,] 0.04 11.56 0.64 12.96 [2,] 33.64 2.56 10.24 0.36 [3,] 10.24 2.56 3.24 11.56 [4,] 0.64 5.76 4.84 1.96 [5,] 10.24 6.76 7.84 0.36 > 全体平方和 <- sum(全体^2) > 全体平方和 データ全体のばらつき [1] 322 > 群間平方和 <- sum(群間^2) > 群間平方和 群の違いによるばらつき [1] 184 > 群内平方和 <- sum(群内^2) > 群内平方和 [1] 138 同じ群におけるデータ > 群間平方和+群内平方和 [1] 322 のばらつき 先の分散分析表から: 平均平方=平方和/自由度 Df Sum Sq Mean Sq F value Pr(>F) 指導法2 3 184.000 61.333 7.1111 0.002988 平方和(Sum of Squares) Residuals 16 138.000 8.625 残差(Residual) 残差:「群の効果に応じて全員の得点が一律に押 し上げられたり引き下げられたりした」というだけ では説明しきれないデータのばらつき 平方和の分解: 全体平方和=群間平方和+群内平方和 データ全体のばらつき(全体平方和)を 群の違いによって説明できる部分(群間平方和) と、それでは説明できない部分(群内平方和) に分解 自由度 群間の自由度=群の数-1 群内の自由度=(各群のデータ数-1)を全ての群について 合計 全体の自由度=全データ数-1 例題で自由度を計算 > 群間自由度 <- ncol(全データ)-1 > 群間自由度 [1] 3 > 群内自由度 <- (nrow(全データ)-1)*ncol(全データ) > 群内自由度 [1] 16 > 全体自由度 <- length(全データ)-1 > 全体自由度 [1] 19 > 群間自由度+群内自由度 [1] 19 *ncol関数は行列の列(column)数を求める *nrow関数は行列の行(row)数を求める > 群間平均平方 <- 群間平方和/群間自由度 > 群間平均平方 [1] 61.33333 > 群内平均平方 <- 群内平方和/群内自由度 > 群内平均平方 [1] 8.625 > 全体平方和/全体自由度 [1] 16.94737 > var(統計テスト2) [1] 16.94737 全データの不偏分散=全体平方和/全体の自由度 群間平方和 群間の自由度 F 群内平方和 群内の自由度 Fの定義式の分子と分母 分子: (群間平方和)/(群間の自由度)=群間の平均平方 分母: (群内平方和)/(群内の自由度)=群内の平均平方 これから F=群間の平均平方÷群内の平均平方 群間の平均平方が群内の平均平方に比べてどれだけ大きいかを 表す > F <- 群間平均平方/群内平均平方 >F [1] 7.111111 平方和を図で表す 群間平方和/群間自由度 群内平方和/群内自由度 Sum Sp(184.00)/3 Sum Sp(138.00)/16 • 指導法の違い • 勉強の個人差 • テスト当日の体調 etc.. こっちの値の方が大きいからデータのばらつきの原因が群間で起こってい ると判断できそうだね!! 23 7.1.3 多重比較(Tukeyの方法) 一元配置分散分析の結果「帰無仮説が棄却」さ れたとする ⇒群の母平均が等しくないことしかわからない 具体的にどの群とどの群の間に差があるかを 知りたい⇒多重比較 ここではTukey(テューキー)の方法の紹介 Tukeyの方法 *仮定:各群のデータ数nが等しい 各群の母分散も等しい 検定統計量q: q 比較する群の平均値差 群内の平均平方 各群のデータ数 Tukeyの方法:例題 > mean(A) [1] 14.8 > mean(D) [1] 6.4 > nrow(全データ) [1] 5 > 群内平均平方 [1] 8.625 > q <- abs(mean(A)-mean(D))/sqrt(群内平均平方/nrow(全データ)) >q [1] 6.395651 Tukeyの方法:例題(続) qtukey(下側確率、平均値の数、群内の自由度) > qtukey(0.95,4,16) > TukeyHSD(aov(統計テスト2~指導法2)) [1] 4.046093 Tukey multiple comparisons of means > qtukey(0.05,4,16,lower.tail=FALSE) 95% family-wise confidence level [1] 4.046093 Fit: aov(formula = 統計テスト2 ~ 指導法2) 有意水準5%で 有意差 があるのは... $指導法2 diff lwr upr p adj B-A -5.2 -10.514108 0.1141085 0.0562227 C-A -5.6 -10.914108 -0.2858915 0.0371222 D-A -8.4 -13.714108 -3.0858915 0.0017736 C-B -0.4 -5.714108 4.9141085 0.9963241 D-B -3.2 -8.514108 2.1141085 0.3446966 D-C -2.8 -8.114108 2.5141085 0.4561325 7.2 一元配置分散分析 (対応あり) 一元配置分散分析(対応あり)では、同じ被験者が複 数の条件を経験するというような 対応があるデータ (被験者内計画のデータ) を比較対象とする 例題: 学生 線形代数 微分積分 確率統計 田中 7 5 4 岸 8 4 6 大引 9 7 7 吉川 5 1 2 荻野 6 3 5 7.2.1 対応がないものと見なして分散分析をしてみる (1)帰無仮説と対立仮説の設定: 帰無仮説H0: 3教科の好意度の母平均は等しい 対立仮説H1: 3教科の好意度の母平均は等しくない (2) 検定統計量の選択 F (3) 有意水準: 5% (4) 検定統計量の実現値 > 好意度 <- c(7,8,9,5,6,5,4,7,1,3,8,6,7,2,5) > 科目 <- factor(c(rep("線形代数",5),rep("微分積分 ",5),rep("確率統計",5))) > summary(aov(好意度~科目)) Df Sum Sq Mean Sq F value Pr(>F) 科目 2 22.533 11.267 2.6406 0.1121 Residuals 12 51.200 4.267 検定統計量の実現値はF=2.6406 p値=0.1121 > 0.05 ゆえに、5%水準で有意な差はない 7.2.2 一元配置分散分析 (対応あり)を実行する (1)帰無仮説と対立仮説の設定 帰無仮説H0: 3教科の好意度の母平均は等しい 対立仮説H1: 3教科の好意度の母平均は等しくない (2)検定統計量の選択 検定統計量としてFを利用 F 条件平方和/ 条件の自由度 残差平方和/ 残差の自由度 名前が変わっているが、分子の条件平方和、条 件の自由度は 対応のない一元配置分散分析の群間平方和、群 間の自由度と全く同じもの (3)有意水準αの決定 有意水準は5%、つまりα=0.05 この検定は片側検定 (4)検定統計量の実現値を求める aov関数を用いて検定統計量の実現値を求 める > 好意度 [1] 7 8 9 5 6 5 4 7 1 3 8 6 7 2 5 > 科目 [1] 線形代数 線形代数 線形代数 線形代数 線形代数 微分積分 微分積分 微分積分 [9] 微分積分 微分積分 確率統計 確率統計 確率統計 確率統計 確率統計 Levels: 確率統計 線形代数 微分積分 > 人 <- factor(rep(c("田中","岸","大引","吉川","萩野"),3)) >人 [1] 田中 岸 大引 吉川 萩野 田中 岸 大引 吉川 萩野 田中 岸 大引 吉川 萩野 Levels: 岸 吉川 大引 田中 萩野 > summary(aov(好意度~科目+人)) Df Sum Sq Mean Sq F value Pr(>F) 科目 2 22.533 11.267 14.696 0.002095 ** 人 4 45.067 11.267 14.696 0.000931 *** Residuals 8 6.133 0.767 --Signif. Codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 検定統計量Fの 値はF=14.696 (5)帰無仮説の棄却or採択の決定 検定統計量Fは、2つの自由度が2と8のF分布(分 子の自由度が2、分母の自由度が8のF分布)に 従う > qf(0.05,2,8,lower.tail=FALSE) [1] 4.45897 *棄却域はF>4.46 検定統計量の実現値はF=14.7 したがって帰無仮説は棄却される 7.2.3 対応の有無による違い この例題は 一元配置分散分析(対応なし)と同じ方法で検 定したときには有意ではない 対応を考慮すると有意になる ■対応を無視したときの分散分析表 Df Sum Sq Mean Sq F value 科目 2 22.533 11.267 2.6406 Residuals 12 51.200 4.267 Pr(>F) 0.1121 ■対応を考慮したときの分散分析表 Df 科目 2 人 4 Residuals 8 Sum Sq Mean Sq F value 22.533 11.267 14.696 45.067 11.267 14.696 6.133 0.767 Pr(>F) 0.002095 ** 0.000931 *** 検定統計量Fは、対応を無視した場合も対応を考慮した場合も、 「科目」の平均平方(Mean Sq)を「Residuals」の平均平方で割ったもの ●対応を無視した場合 F=11.267/4.267=2.6406 ●対応を考慮した場合 F=11.267/0.767=14.696 対応を考慮するとFの分母である残差の平均 平方の値が小さくなるため、Fの値は大きくなり、 結果として有意になりやすくなる なぜ対応を考慮すると残差の平均平方が小 さくなるか... 対応を無視したときの残差のばらつきから、 個人差によるばらつきを取り除くことができ るから 7.2.4 平方和の分解と自由度の計算 一元配置分散分析での平方和の分解は、 ●一元配置分散分析(対応なし) : 全体平方和=群間平方和+群内平方和 ●一元配置分散分析(対応あり) : 全体平方和=条件平方和+個人差平方和+残差 平方和 続き *一元配置分散分析(対応なし)における群内 平方和が、一元配置分散分析(対応あり)では さらに個人差平方和と残差平方和に分解さ れる *個人差平方和とは、個人の違いにより説明 できる平方和のこと 平方和の分解の手順 > 全データ <- matrix(c(7,8,9,5,6,5,4,7,1,3,8,6,7,2,5),nrow=5,ncol=3) > 全データ [,1] [,2] [,3] [1,] 7 5 8 [2,] 8 4 6 [3,] 9 7 7 [4,] 5 1 2 [5,] 6 3 5 > 科目平均 <- colMeans(全データ) > 科目平均 [1] 7.0 4.0 5.6 > 人平均 <- rowMeans(全データ) > 人平均 [1] 6.666667 6.000000 7.666667 2.666667 4.666667 > 全平均 <- mean(全データ) > 全平均 [1] 5.533333 > 全平均行列 <- matrix(rep(全平均,15),nrow=5,ncol=3) > 全平均行列 [,1] [,2] [,3] [1,] 5.533333 5.533333 5.533333 [2,] 5.533333 5.533333 5.533333 [3,] 5.533333 5.533333 5.533333 [4,] 5.533333 5.533333 5.533333 [5,] 5.533333 5.533333 5.533333 > 科目平均行列 <- matrix(rep(科目平均,5),nrow=5,ncol=3,byrow=TRUE) > 科目平均行列 [,1] [,2] [,3] [1,] 7 4 5.6 [2,] 7 4 5.6 [3,] 7 4 5.6 [4,] 7 4 5.6 [5,] 7 4 5.6 > 人平均行列 <- matrix(rep(人平均,3),nrow=5,ncol=3) > 人平均行列 [,1] [,2] [,3] [1,] 6.666667 6.666667 6.666667 [2,] 6.000000 6.000000 6.000000 [3,] 7.666667 7.666667 7.666667 [4,] 2.666667 2.666667 2.666667 [5,] 4.666667 4.666667 4.666667 > 全体 <- 全データ-全平均行列 > 全体 [,1] [,2] [,3] [1,] 1.4666667 -0.5333333 2.4666667 [2,] 2.4666667 -1.5333333 0.4666667 [3,] 3.4666667 1.4666667 1.4666667 [4,] -0.5333333 -4.5333333 -3.5333333 [5,] 0.4666667 -2.5333333 -0.5333333 > 条件 <- 科目平均行列-全平均行列 > 条件 [,1] [,2] [,3] [1,] 1.466667 -1.533333 0.06666667 [2,] 1.466667 -1.533333 0.06666667 [3,] 1.466667 -1.533333 0.06666667 [4,] 1.466667 -1.533333 0.06666667 [5,] 1.466667 -1.533333 0.06666667 > 個人差 <- 人平均行列-全平均行列 > 個人差 [,1] [,2] [,3] [1,] 1.1333333 1.1333333 1.1333333 [2,] 0.4666667 0.4666667 0.4666667 [3,] 2.1333333 2.1333333 2.1333333 [4,] -2.8666667 -2.8666667 -2.8666667 [5,] -0.8666667 -0.8666667 -0.8666667 *データの各値から、 全平均、条件の効果、個人差の効果を全部引いて残っ たものが、 条件の効果でも個人差の効果でも説明できない(人によ る科目との相性などの)残差 > 残差 <- 全データ-全平均行列-条件-個人差 > 残差 [,1] [,2] [,3] [1,] -1.1333333 -0.1333333 1.26666667 [2,] 0.5333333 -0.4666667 -0.06666667 [3,] -0.1333333 0.8666667 -0.73333333 [4,] 0.8666667 -0.1333333 -0.73333333 [5,] -0.1333333 -0.1333333 0.26666667 > 全体平方和 <- sum(全体^2) > 全体平方和 [1] 73.73333 > 条件平方和 <- sum(条件^2) > 条件平方和 [1] 22.53333 > 個人差平方和 <- sum(個人差^2) > 個人差平方和 [1] 45.06667 > 残差平方和 <- sum(残差^2) > 残差平方和 [1] 6.133333 > 条件平方和+個人差平方和+残差平方和 [1] 73.73333 以上により、一元配置分散分析(対応あり)では、 全体平方和=条件平方和+個人差平方和+ 残差平方和 と分解されることが確認できた * それぞれの平方和に対応する自由度は次のように求める • 条件の自由度=条件の数-1=3-1=2 • 個人差の自由度=人の数-1=5-1=4 • 残差の自由度=条件の自由度×個人差の自由度=2×4 =8 • 全体の自由度=全データ数-1=15-1=14 ここでも、平方和と同様に、 全体の自由度=条件の自由度+ 個人差の自由度+残差の自由度 という関係が成り立つ
© Copyright 2025 ExpyDoc