ユーザ用ツール

サイト用ツール


メモ:分散分析

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
最新のリビジョン両方とも次のリビジョン
メモ:分散分析 [2017/09/08 18:01] – [備忘録] Wiki Editorメモ:分散分析 [2017/09/08 18:30] Wiki Editor
行 88: 行 88:
   > DAT$教室 <- factor(DAT$教室);   > DAT$教室 <- factor(DAT$教室);
   > DAT$クラスサイズ <- factor(DAT$クラスサイズ);   > DAT$クラスサイズ <- factor(DAT$クラスサイズ);
-  +
   # carパッケージのAnova関数を利用して分散分析   # carパッケージのAnova関数を利用して分散分析
   > Anova(lm(点数 ~ 教室 * クラスサイズ, data=DAT), type=3);   > Anova(lm(点数 ~ 教室 * クラスサイズ, data=DAT), type=3);
行 121: 行 121:
   > res.anova$"Sum Sq"[4] / (res.anova$"Sum Sq"[4] + res.anova$"Sum Sq"[5])   > res.anova$"Sum Sq"[4] / (res.anova$"Sum Sq"[4] + res.anova$"Sum Sq"[5])
   [1] 0.187541   [1] 0.187541
-   
-  
- 
- 
- 
- 
  
 +  # 単純主効果の検定
 +  # データを一方の要因の水準毎に分割して他方の要因で1要因分散分析を実施
 +  # ただし、検定の際の誤差項は全体の分散分析の値を用いる必要がある
 +  
 +  # クラスサイズが10人のデータに限定して、教室要因で分散分析
 +  # ここでのF値や検定結果は使わない
 +  > Anova(lm(点数 ~ 教室, data=DAT[DAT$クラスサイズ == "1",]), type=3);
 +  Anova Table (Type III tests)
 +  
 +  Response: 点数
 +              Sum Sq Df  F value    Pr(>F)    
 +  (Intercept) 283731  1 3725.137 < 2.2e-16 ***
 +  教室          1421  1   18.657 6.199e-05 ***
 +  Residuals     4418 58              
 +  
 +  # 結果を仮に「res.クラスサイズ1」に代入しておく
 +  > res.クラスサイズ1 <- Anova(lm(点数 ~ 教室, data=DAT[DAT$クラスサイズ == "1",]), type=3);
 +  
 +  # 全体の分散分析結果「res.anova」と水準毎の結果「res.クラスサイズ1」からF値を計算
 +  # F値は要因の平均平方 / 誤差の平均平方で計算する。
 +  # Anova関数では平均平方が出力されないので、平均平方を自由度で除して計算する
 +  # クラスサイズの水準毎に分割したデータを用いた分散分析の「教室」要因の平均平方を、
 +  #  最初に行った全体の分散分析の誤差平均平方で除した値が、検定に用いるF値となる
 +  
 +  > (res.クラスサイズ1$"Sum Sq"[2]/res.クラスサイズ1$Df[2]) / (res.anova$"Sum Sq"[5]/res.anova$Df[5])
 +    [1] 14.06695
 +  # 変数に保持しておく
 +  F.クラスサイズ1 <- (res.クラスサイズ1$"Sum Sq"[2]/res.クラスサイズ1$Df[2]) / (res.anova$"Sum Sq"[5]/res.anova$Df[5])
 +  
 +  # 求めたF値からp値を求める。
 +  # pf関数に、F値と自由度を与える。lower.tailは上限からの累積確率を求めるオプション
 +  > pf(F.クラスサイズ1, res.クラスサイズ1$Df[2], res.anova$Df[5], lower.tail=FALSE)
 +  [1] 0.0002400081
 +  
 +  # p値の値が小さいので書籍の数値と一致しているかわからないので、クラスサイズが20人の場合も計算して確認
 +  > res.クラスサイズ2 <- Anova(lm(点数 ~ 教室, data=DAT[DAT$クラスサイズ == "2",]), type=3);
 +  > res.クラスサイズ2
 +  Anova Table (Type III tests)
 +  
 +  Response: 点数
 +              Sum Sq Df   F value Pr(>F)    
 +  (Intercept) 241808  1 2913.2487 <2e-16 ***
 +  教室            23  1    0.2749 0.6021    
 +  Residuals     4814 58                     
 +  
 +  > F.クラスサイズ2 <- (res.クラスサイズ2$"Sum Sq"[2]/res.クラスサイズ2$Df[2]) / (res.anova$"Sum Sq"[5]/res.anova$Df[5])
 +  > F.クラスサイズ2
 +  [1] 0.2258592
 +  
 +  > pf(F.クラスサイズ2, res.クラスサイズ1$Df[2], res.anova$Df[5], lower.tail=FALSE)
 +  [1] 0.6352074
  
メモ/分散分析.txt · 最終更新: 2017/09/08 19:44 by Wiki Editor

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki