分散分析のサンプルサイズ計算を統計ソフトRで行う方法を解説。
分散分析は三群以上の平均値を比較する分析方法。
少なくともどれか一つの群がほかの群とは異なることを証明するための分析方法だ。
分散分析のサンプルサイズ計算を行うために必要なデータ
分散分析のサンプルサイズ計算を行うために必要な数値は以下の通りだ。
- k: 群の数
- f: Effect Size $ \sqrt{\frac{\eta^2}{1 – \eta^2}} $($ \eta^2 $ イータ 2 乗については後述)
- sig.level: 有意水準(デフォルトでは0.05)
- power: 検出力
サンプルデータは以下の記事のデータを用いる。
三群で4例ずつのデータセットである。
このデータの分散分析の結果を用いて、事前にサンプルサイズ計算をしていたらどうだったかを見てみるということだ。
EZRで分散分析を実行した結果を掲示する。
> summary(AnovaModel.1)
Df Sum Sq Mean Sq F value Pr(>F)
factor(A.all) 2 969.5 484.7 13.52 0.00194 **
Residuals 9 322.7 35.9
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
上記、分散分析表の factor(A.all) と Residuals の Sum Sq を合計すると Total の Sum Sq となる
factor(A.all) の Sum Sq と Total の Sum Sq の比が、上述の $ \eta^2 $ である
その $ \eta^2 $ を上述の式で f に変換すると Effect size になる
分散分析のサンプルサイズ計算のためのパッケージを準備する
分散分析のサンプルサイズ計算の関数が含まれるパッケージは、pwr というパッケージだ。
インストールして、使用する準備をする。
install.packages("pwr") #一回のみ
library(pwr) #使用するとき
分散分析のサンプルサイズ計算の例
分散分析のサンプルサイズ計算を以下の例で計算する。
- 三群(k=3)
- Effect Size (f) は、$ \sqrt{\frac{\eta^2}{1 – \eta^2}} $で計算できる
- $ \eta^2 $ は、969.5/(969.5+322.7) = 0.7502709
- 検出力は80%
使う関数は pwrパッケージの pwr.anova.test() だ。
> pwr.anova.test(k=3, f=sqrt(0.7502709/(1-0.7502709)), power=0.8)
Balanced one-way analysis of variance power calculation
k = 3
n = 2.393323
f = 1.733303
sig.level = 0.05
power = 0.8
NOTE: n is number in each group
結果として一群3例と計算された。実際は4例であり、解析結果も統計学的有意ではあった。
ゆえにサンプルサイズは妥当であったことがわかる。
このとき Effect Size (f) は、以上の通り 1.7 を超えていた。
分散分析のサンプルサイズ計算のための Effect Size が全く見積もれないとき
分散分析のサンプルサイズ計算をしたくても、先行研究やパイロットデータが全くなく、Effect Sizeが見積もれないとき、行動科学分野であれば、参考にできる目安がある。
- Small Effect: f=0.1
- Medium Effect: f=0.25
- Large Effect: f=0.4
これらの時のサンプルサイズ計算を計算してみる。三群で、検出力は80%に固定する。
それぞれ、一群323例(Small)、53例(Medium)、22例(Large)という結果であった。
> #small: 0.1
> pwr.anova.test(k=3,f=0.1,power=0.8)
Balanced one-way analysis of variance power calculation
k = 3
n = 322.157
f = 0.1
sig.level = 0.05
power = 0.8
NOTE: n is number in each group
> #medium: 0.25
> pwr.anova.test(k=3,f=0.25,power=0.8)
Balanced one-way analysis of variance power calculation
k = 3
n = 52.3966
f = 0.25
sig.level = 0.05
power = 0.8
NOTE: n is number in each group
> #large: 0.4
> pwr.anova.test(k=3,f=0.4,power=0.8)
Balanced one-way analysis of variance power calculation
k = 3
n = 21.10364
f = 0.4
sig.level = 0.05
power = 0.8
NOTE: n is number in each group
まとめ
分散分析のサンプルサイズ計算を pwrパッケージの pwr.anova.test()を使ってサンプルサイズ計算をしてみた。
Effect Sizeが見積もれないときの目安も示した。
関連記事(別の見積もり方法)
参考文献
以下の書籍PDFの Chapter 8 The Analysis of Variance を参考にした。
http://www.utstat.toronto.edu/~brunner/oldclass/378f16/readings/CohenPower.pdf
イータ 2 乗について
コメント