MENU

R で分割プロット分散分析に必要なサンプルサイズを計算する方法

分割プロット分散分析のサンプルサイズ計算の方法。

>>もう統計で悩むのは終わりにしませんか? 

↑期間・数量限定で無料プレゼント中!

目次

分割プロット分散分析とは?

同じ対象者のある指標を反復して測定したときのデータを分析したいことがある。

対象者をいくつかの群に振り分けて比較したいことが多い。

ここでは、この解析方法を「分割プロット分散分析」と呼んでいる。

分割プロットデザインとも呼ばれる方法だ。

参考となる過去記事はこちら。

分割プロット分散分析のサンプルサイズ計算のために pwr.anova.test() の一部を抜き出す

まずは、分散分析のサンプルサイズ計算スクリプトを pwr パッケージの pwr.anova.test() から抜き出してみる。

pwr.anova.test.n <- function(k, f, sig.level=0.05, power=0.8)
{
p.body <- quote({
lambda <- k*n*f^2
pf(qf(sig.level, k-1, (n-1)*k, lower=FALSE), k-1, (n-1)*k, lambda, lower=FALSE)
})
n <- uniroot(function(n) eval(p.body)-power, c(2+1e-10, 1e+09))$root
NOTE <- "n is number in each group"
METHOD <- "Balanced one-way analysis of variance power calculation"
structure (list(k=k, n=n, f=f, sig.level=sig.level, power=power, note=NOTE, method=METHOD),
class="power.htest")
}

例えば、4グループの比較で、effect size (f) が中程度で0.25だったとすると、一群45例必要と計算される。

> pwr.anova.test.n(k=4,f=0.25)
Balanced one-way analysis of variance power calculation
k = 4
n = 44.59927
f = 0.25
sig.level = 0.05
power = 0.8
NOTE: n is number in each group

これをもとに、分割プロット分散分析のサンプルサイズ計算のスクリプトを作成してみた。

>>もう統計で悩むのは終わりにしませんか? 

↑1万人以上の医療従事者が購読中

分割プロット分散分析のサンプルサイズ計算関数

比較する群の数をp、反復して測定する回数をq、群間比較のeffect sizeをf.A.CR、対象者の測定値における自己相関をrhoとすると、以下のような関数になる。

pwr.split.plot.test.n <- function(p, q, f.A.CR, rho, sig.level=0.05, power=0.8)
{
p.body <- quote({
f.A <- f.A.CR/sqrt(1+(q-1)*rho)
lambda <- p*q*n*f.A^2
pf(qf(sig.level, p-1, (n-1)*p, lower=FALSE), p-1, (n-1)*p, lambda, lower=FALSE)
})
n <- uniroot(function(n) eval(p.body)-power, c(2+1e-10, 1e+09))$root
NOTE <- "n is number in each group"
METHOD <- "Split-plot design analysis of variance power calculation"
structure (list(p=p, q=q, n=n, f.A.CR=f.A.CR, rho=rho,
sig.level=sig.level, power=power, note=NOTE, method=METHOD),
class="power.htest")
}

群の数を4、反復回数も4、f.A.CRを0.25、rhoを0.5とすると、一群29例と計算される。

> pwr.split.plot.test.n(p=4, q=4, f.A.CR=0.25, rho=0.5)
Split-plot design analysis of variance power calculation
p = 4
q = 4
n = 28.2526
f.A.CR = 0.25
rho = 0.5
sig.level = 0.05
power = 0.8
NOTE: n is number in each group

rhoが1(完璧な自己相関)の場合、一群45例と計算される。

> pwr.split.plot.test.n(p=4, q=4, f.A.CR=0.25, rho=1)
Split-plot design analysis of variance power calculation
p = 4
q = 4
n = 44.59927
f.A.CR = 0.25
rho = 1
sig.level = 0.05
power = 0.8
NOTE: n is number in each group

この場合は通常の反復測定しない分散分析と同じになる。

完璧に自己相関するなら1回の測定でも同じということだ。

rhoが0(全くの自己相関なし)の場合、一群12例と計算される。

> pwr.split.plot.test.n(p=4, q=4, f.A.CR=0.25, rho=0)
Split-plot design analysis of variance power calculation
p = 4
q = 4
n = 11.92611
f.A.CR = 0.25
rho = 0
sig.level = 0.05
power = 0.8
NOTE: n is number in each group

これは通常あり得ない。

同じ対象者は必ず少しは相関する。

例えば、血圧が高めの人は何度測っても高めのはず。

低めの人はいつも低め。

これは感覚的にわかる。

分割プロット分散分析のサンプルサイズ計算をする際に大事なこと

分割プロット分散分析のサンプルサイズ計算をする際に決めるのが大変なのは、f.A.CRとあるeffect sizeとrhoという対象者内の自己相関だろう。

f.A.CRは、いわゆる群間の標準偏差と、群内の標準偏差の比である。

パイロットスタディや先行研究などがあれば参考にできるが、そうでない場合は、困ってしまう。

行動科学分野では、以下のような目安があるので、それに従うこともできる。

  • Small Effect: f=0.1
  • Medium Effect: f=0.25
  • Large Effect: f=0.4

自己相関 rho のほうはもっと困ってしまう。

これもパイロットスタディや先行研究のデータがある場合は、自己相関を計算してみてもいいかもしれない。

利用可能なデータがない場合は、rho=c(0.3, 0.5, 0.7)などいくつか振って計算してみるという方法もあるかもしれない。

以下、effect sizeを振ってみた計算結果、rhoを振ってみた計算結果を列挙してみる。

# effect size=0.1
> pwr.split.plot.test.n(p=4, q=4, f.A.CR=0.1, rho=0.5)
Split-plot design analysis of variance power calculation
p = 4
q = 4
n = 171.3325
f.A.CR = 0.1
rho = 0.5
sig.level = 0.05
power = 0.8
NOTE: n is number in each group

# effect size=0.25
> pwr.split.plot.test.n(p=4, q=4, f.A.CR=0.25, rho=0.5)
Split-plot design analysis of variance power calculation
p = 4
q = 4
n = 28.2526
f.A.CR = 0.25
rho = 0.5
sig.level = 0.05
power = 0.8
NOTE: n is number in each group

# effect size=0.4
> pwr.split.plot.test.n(p=4, q=4, f.A.CR=0.4, rho=0.5)
Split-plot design analysis of variance power calculation
p = 4
q = 4
n = 11.67164
f.A.CR = 0.4
rho = 0.5
sig.level = 0.05
power = 0.8
NOTE: n is number in each group

# rho=0.3
> pwr.split.plot.test.n(p=4, q=4, f.A.CR=0.25, rho=0.3)
Split-plot design analysis of variance power calculation
p = 4
q = 4
n = 21.71697
f.A.CR = 0.25
rho = 0.3
sig.level = 0.05
power = 0.8
NOTE: n is number in each group

# rho=0.5
> pwr.split.plot.test.n(p=4, q=4, f.A.CR=0.25, rho=0.5)
Split-plot design analysis of variance power calculation
p = 4
q = 4
n = 28.2526
f.A.CR = 0.25
rho = 0.5
sig.level = 0.05
power = 0.8
NOTE: n is number in each group

# rho=0.7
> pwr.split.plot.test.n(p=4, q=4, f.A.CR=0.25, rho=0.7)
Split-plot design analysis of variance power calculation
p = 4
q = 4
n = 34.79044
f.A.CR = 0.25
rho = 0.7
sig.level = 0.05
power = 0.8
NOTE: n is number in each group

まとめ

分散分析プロット分散分析のためのサンプルサイズ計算を紹介した。

pwr パッケージの pwr.anova.test() の一部を抜き出して、修正したものである。

計算に必要はeffect sizeと自己相関を決めねばならず、それが悩ましいポイントだ。

何らかの前提・仮定をおいて、進めていくしかないと思う。

必ずしも先行研究が見つかるわけでもなく、パイロットスタディを行っている時間もないことも多いからである。

参考文献

Bradley, D.R., Russell, R.L. Some cautions regarding statistical power in split-plot designs. Behavior Research Methods, Instruments, & Computers 30, 462–477 (1998).

Some cautions regarding statistical power in split-plot designs | Behavior Research Methods

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

リサーチクエスチョン探し?データ分析?論文投稿?、、、で、もう悩まない!

第1章臨床研究ではなぜ統計が必要なのか?計画することの重要性
  • 推定ってどんなことをしているの?
  • 臨床研究を計画するってどういうこと?
  • どうにかして標本平均を母平均に近づけられないか?
第2章:研究目的をどれだけ明確にできるのかが重要
  • データさえあれば解析でどうにかなる、という考え方は間違い
  • 何を明らかにしたいのか? という研究目的が重要
  • 研究目的は4種類に分けられる
  • 統計専門家に相談する上でも研究目的とPICOを明確化しておく
第3章:p値で結果が左右される時代は終わりました
  • アメリカ統計協会(ASA)のp値に関する声明で指摘されていること
  • そうは言っても、本当に有意差がなくてもいいの…?
  • なぜ統計専門家はp値を重要視していないのか
  • 有意差がない時に「有意な傾向があった」といってもいい?
  • 統計を放置してしまうと非常にまずい
第4章:多くの人が統計を苦手にする理由
  • 残念ながら、セミナー受講だけで統計は使えません。
  • インプットだけで統計が使えない理由
  • どうやったら統計の判断力が鍛えられるか?
  • 統計は手段なので正解がないため、最適解を判断する力が必要
第5章:統計を使えるようになるために今日から何をすれば良いか?
  • 論文を読んで統計が使えるようになるための5ステップ
第6章:統計を学ぶために重要な環境
  • 統計の3つの力をバランスよく構築する環境

以下のボタンをクリックして、画面に出てくる指示に従って、必要事項を記入してください。

この記事を書いた人

統計 ER ブログ執筆者

元疫学研究者

統計解析が趣味

コメント

コメントする

目次