オッズ比にいくつかの計算方法があるということには少し前から気になっていた。といっても僕の勉強する範囲の研究では古典的なオッズ比以外みたことがなく、何のことかよくわからなかった。
Rのepitoolsパッケージでは4種類のオッズ比が出力できる。何が出力されているのか調べてみた。結果から言えば、僕の知らないオッズ比はBiostatistics / Biometricsなどでの発展によって加わったバリエーションのようだ。
研究分野が遠いので、個人的には古典的なオッズ比しか使わないと思う。しかし、Rのepitoolsパッケージの出力するオッズ比は古典的なオッズ比ではないので、統計パッケージを使用する際には注意が必要である。
シミュレーション
先の結論の述べるためにシミュレーションから始めよう。データCPS1985を使用する。
library(AER) data(CPS1985) ct1<-table(CPS1985$gender,CPS1985$married) library(epitools)
epitoolsパッケージのオッズ比を出力する。
oddsratio(ct1)
結果は以下。
$data no yes Total male 101 188 289 female 83 162 245 Total 184 350 534 $measure odds ratio with 95% C.I. estimate lower upper male 1.00000 NA NA female 1.04829 0.7324027 1.502553 $p.value two-sided midp.exact fisher.exact chi.square male NA NA NA female 0.7967612 0.8550534 0.7953289
いわゆる古典的なオッズ比は手計算では次のように算出する。
(101*162)/(83*188) [1] 1.048577
epitoolsパッケージのオッズ比のデフォルトでは1.04829だが、手計算では1.048577。値が違うのである。
epitoolsパッケージのoddsratio関数では4つの関数が用意されている。それぞれの値を計算してみた。
MUE: 中央値不偏推定
oddsratio.midp(ct1)$measure
OR = 1.04829
CMLE: 条件付き最尤推定
oddsratio.fisher(ct1)$measure
OR = 1.048508
UMLE: 無条件最尤推定
oddsratio.wald(ct1)$measure
OR = 1.048577
SSAE: 少サンプル調整推定
oddsratio.small(ct1)$measure
OR = 1.030612
古典的なオッズ比は3つ目の無条件最尤推定と同じの値である。oddsratioのデフォルトは中央値不偏推定のようだ。古典的なオッズ比を使用する際にはoddsratio.wald関数を使わないといけない。ここは割と重要なところだと思う。
glm関数でのオッズ比
glm関数でのオッズ比も計算しておこう。
res <- glm(formula=married ~ gender, data=CPS1985, family=binomial) exp(coef(res))
結果は以下。
(Intercept) genderfemale 1.861386 1.048577
glmで計算すると無条件最尤推定と同じ値となっている。実用性だけ考えると、オッズ比をRで出すときにはoddsratio.wald関数を使うという点に注意すれば大丈夫そうである。
ちなみに、基礎分析で2変数間のオッズ比と、一般化線形モデルで主力されるオッズ比を比較するのは両方とも最尤推定法を用いて計算していればOKということになる。つまり、基礎分析でオッズ比を出して、その後に多変量解析をしてオッズ比を見る場合、直接比べてよいということだ。
理論的な説明
後回しにしていた理論的説明を少し書いておこう。下記の本に簡単だが説明があった。
Biostatistics for Epidemiology and Public Health Using R
- 作者: Bertram K. C., Ph.d. Chan
- 出版社/メーカー: Springer Pub Co
- 発売日: 2015/11/05
- メディア: ペーパーバック
- この商品を含むブログを見る
Chanの本の54頁からのところだが、表2.4はオッズ比に限らず、リスク比などでも推定法が異なることが示されている。
- CMLE: 条件付き最尤推定 conditional maximum likelihood estimation
- MUE: 中央値不偏推定 median-unbiased estimation
- UMLE: 無条件最尤推定 unconditional maximum likelihood estimation
- SSAE: 少サンプル調整推定 small sample adjustment estimation
One-sampleとかは何かというと、以下の分類らしい。
- One-sample measurements: 率、リスク、有病率
- Two-sample measurements: レート比、リスク比、オッズ比
要するに一次のデータか二次のデータかということのようだ。
オッズ比は大きいサンプルでは無条件最尤推定、小さいサンプルでは残り3つの方法が妥当だとされている。
少数サンプルでは分母が0になるときがある。つまりゼロセルがあるということだが、0による除算は不可能であるためJewell's small-sample adjustmentまたは同様の数学的処理を使用するとよい(Rothman, 1976)。
UMLE 無条件最尤推定
いわゆるオッズ比。 (129) / (72) = 7.714286
CMLE: 条件付き最尤推定
フィッシャーの正確確率検定を元に条件がつけられている。
SSAE: 少サンプル調整推定
観察数または期待数のいずれかが5未満の場合は、少数標本による推定法(Rothman 1976)を用いる。また、Jewell's small-sample adjustmentを使用するようだ。
それほど複雑な式ではなく、このアプローチであれば確かに分母にゼロが来てもよさそうだ。ただ、オッズ比の値が小さくはならないかとも思う。
Nicholas P. Jewellが2003年に書いた本では別の方法も提案もされている。
- 作者: Nicholas P. Jewell
- 出版社/メーカー: Chapman and Hall/CRC
- 発売日: 2003/08/26
- メディア: Kindle版
- この商品を含むブログを見る
分子にゼロが来ても対応できそうだし、こちらだと値も多少マシになりそうな気がする。