ねこすたっと

ねこの気持ちと統計について悩む筆者の備忘録的ページ。

サンプルサイズ計算:2群の2値アウトカムを比較する(オッズ比) [R]

自分用のリファレンスとして、サンプルサイズ計算に関する記事をシリーズで書いています。 なるべく体裁を統一するために、以下のように決めています。

  • 群を示す添字について:
    • c, C = 対照群
    • t, T = 介入群*1
    • e, E = 要因群
    • 添字なし = 全体
  • 使用する記号:
    • p = 反応割合
    • μ = 平均値
    • σ = 標準偏差
    • Φ = 割り付け比 Nt/Nc(デフォルトは1)
    • α = αエラー(デフォルトは0.05)
    • β = βエラー(デフォルトは0.2)
    • z = 標準正規分布の累積分布関数

想定シナリオ

慢性疾患Dの罹患と喫煙の関連を、地域住民を対象とした観察研究で調べたい。 一般人口における疾患Dの有病者は32.5%*2と言われているが、喫煙者(E)では非喫煙者(C)に対して罹患のオッズが2倍になると見込まれる。 この地域における喫煙率は50%と推定される。 両側有意水準 5%, 検出力 80%として、疾患Dと喫煙Eの関連を検出するために必要なサンプルサイズはどれくらい?

このシナリオでサンプルサイズを計算するのに必要な条件を整理してみると、以下のようになる。

  • 帰無仮説  H_0: OR = 1
  • 対立仮説  H_A: OR \neq 1
  • 有意水準:α = 0.05
  • 検出力:1-β = 0.80
  • 割り付け比*3 \phi = N_E / N_C = 1(喫煙割合が50%なので、0.5/(1-0.5)=1)
  • 喫煙者における疾患オッズ比(想定値):OR = 2
  • 全体における疾患Dの罹患割合(想定値): \bar{p} = 0.325

喫煙者・非喫煙者における疾患Dの罹患割合を、それぞれ p_E,  p_Cとすると、これらの割合と全体の罹患割合  \bar{p} および喫煙者における罹患オッズ比ORには以下の関係が成り立つ。

 
\begin{aligned}
\bar{p} &= \frac{p_C + \phi p_E}{1+\phi} \\
OR &= \frac{p_E (1-p_C)}{(1-p_E) p_C}
\end{aligned}

ここで  \bar{p} とORとφには特定の値を想定するので、 p_E,  p_C を求めることは可能。

ちなみに計算すると、

  •  p_E = 0.4
  •  p_C = 0.25

となる(というかキレイな数字になるように設定した)。

ちなみに、これらの割合の差からサンプルサイズを計算すると、

> power.prop.test(p1=0.4, p2=0.25,
+                 sig.level=0.05, power=0.8, alternative="two.sided")

     Two-sample comparison of proportions power calculation 

              n = 151.8689
             p1 = 0.4
             p2 = 0.25
      sig.level = 0.05
          power = 0.8
    alternative = two.sided

NOTE: n is number in *each* group

N = 152×2 = 304人が必要なサンプルサイズとなる。

方法0:手計算

ORを使った下の計算式を使ってみる。

 
\begin{aligned}
N = \frac{(1+\phi)^2}{\phi}\frac{(z_{1-\alpha/2} + z_{1-\beta})^2}{(\ln OR)^2 \bar{p}(1-\bar{p})} 
\end{aligned}

上の式に、

  • OR = 2
  • φ = 1
  •  z_{1-\alpha/2} = 1.96
  •  z_{ 1 - \beta} = 0.8416

を代入すると、N = 297.8...となるので、サンプルサイズは全体で298例必要なことが分かる。

ORが1から離れるほど、割合の差を使って計算した値からのズレが大きくなるらしい。

方法1:RelativeRisk.Equality( )を使って計算する

TrialSizeパッケージのRelativeRisk.Equality( )を使ってみる。*4
引数として

  • or:対照群に対する試験群の疾患オッズ比
  • pt:試験群の罹患割合
  • pc:対照群の罹患割合

の全てを指定する必要あり。ORとpt(またはpc)の2つだけで計算してくれたらいいのに。

引数kは割り付け比(=試験群/対照群)だけど、観察研究では要因の割合(ここでは喫煙割合)のオッズ。

library(TrialSize)
RelativeRisk.Equality(alpha=0.05,
                      beta=0.2,
                      or=2,
                      k=1,
                      pt=0.4,
                      pc=0.25)
[1] 155.1959

喫煙群が156例、全体で312例が必要という結果になった。

おわりに

  • 観察研究だと「割り付け比」という表現はしっくりこない。
  • 調べてみたら、NHK Eテレの「おれ、ねこ」「あたし、ねこ」に応募するのに必要な写真数は想像よりもかなり多かったです。

参考資料

  • サンプルサイズ計算の本なのにあまり眠くならない!手計算はこの本を参考にしました。

*1:interventionのIを使うと1と区別しにくいのでtrial

*2:検算しやすいように

*3:この状況だと要因オッズ比

*4:"RelativeRisk"と言いながら、中身を確認するとオッズ比を使っている