Sponsored Links
リスク比とオッズ比についてまとめておきます。
Sponsored Links
データの読み込みと準備
> Titanic # 毎度お馴染みのTitanicのデータ
, , Age = Child, Survived = No
Sex
Class Male Female
1st 0 0
2nd 0 0
3rd 35 17
Crew 0 0
, , Age = Adult, Survived = No
Sex
Class Male Female
1st 118 4
2nd 154 13
3rd 387 89
Crew 670 3
, , Age = Child, Survived = Yes
Sex
Class Male Female
1st 5 1
2nd 11 13
3rd 13 14
Crew 0 0
, , Age = Adult, Survived = Yes
Sex
Class Male Female
1st 57 140
2nd 14 80
3rd 75 76
Crew 192 20
> x <- data.frame(Titanic) # Titanicのデータをデータフレーム型式に変換して、xに指定。
> y <- data.frame( Class=rep(x$Class, x$Freq), Sex=rep(x$Sex, x$Freq), Age=rep(x$Age, x$Freq), Survived=rep(x$Survived, x$Freq))
> head(y) # rep関数はrep(x,y)でxをy個繰り返すというように記述する。Freuに記載されている数だけその行の要素を繰り返すベクトルを作成し、data.frame型にまとめ、yに指定。
Class Sex Age Survived
1 3rd Male Child No
2 3rd Male Child No
3 3rd Male Child No
4 3rd Male Child No
5 3rd Male Child No
6 3rd Male Child No
> t <- table(y$Age, y$Survived) # 年齢(AdultかChild)、生死(No:死亡、Yes:生存)を抽出して2×2分割表で表す。
> t
No Yes
Child 52 57
Adult 1438 654
リスク比とオッズ比の計算
まず、分割表を書く場合には行に原因を配置し、列に結果を配置します。
結果 | |||
あり | なし | ||
原因 | あり | a | b |
なし | c | d |
リスク比について
原因ありのリスク=a/(a+b)と計算します。原因ありで結果ありであった数を原因ありの合計で割ります。
原因なしのリスク=c/(c+d)と計算します。原因なしで結果ありであった数を原因なしの合計で割ります。
リスク差(Risk Difference)=原因ありのリスク-原因なしのリスクで計算します。
リスク比(Risk Ratio)=原因ありのリスク/原因なしのリスクで計算します。
オッズ比について
結果ありのオッズ=a/cと計算します。結果ありに着目したときの原因なしに対する原因ありの比率です。
結果なしのオッズ=b/dと計算します。結果なしに着目したときの原因なしに対する原因ありの比率です。
そして、
オッズ比(Odds Ratio)=結果ありのオッズ/結果なしのオッズで計算します。
リスク比とオッズ比
結果が生じる強さを表現するのはリスク比です。リスク比が3の場合、原因がないときと比べて原因があると結果が3倍生じやすくなると言えます。しかし、オッズ比が3の場合、そういう表現は間違いです。ただし、複数の原因が結果に影響しているとき、リスク比でもオッズ比でも原因による影響の大きさの順位は同じになるので、そいういう意味ではオッズ比は役に立ちます。つまり、「オッズ比は、複数の影響要因の寄与順位を把握することのみに活用でき、リスクの倍率把握には適用できない」[1]ということになります。
それから、コホート研究ではリスク比が、ケースコントロール研究ではオッズ比が使われます。コホート研究でオッズ比を使うことはあるかもしれませんが、ケースコントロール研究にリスク比を使うことはできません。ケースコントロール研究は、ある時点での結果の有無から過去にさかのぼって原因の有無を分析する研究デザインなので、リスクを計算することは不適切なのです。
[1] 株式会社アイスタット|統計分析研究所 – リスク比とオッズ比リスク比の計算
Titanicのデータを用いて以下のように手計算できます。
> R_Child <- t[1,1]/(t[1,1]+t[1,2]) # 子どもの死亡リスク
> R_Child
[1] 0.4770642
> R_Adult <- t[2,1]/(t[2,1]+t[2,2]) # 大人の死亡リスク
> R_Adult
[1] 0.6873805
> RR <- R_Adult/R_Child # 子どもに対する大人の死亡リスク比
> RR
[1] 1.440855
オッズ比の計算
オッズ比も同様に計算します。
> O_Death <- t[1,1]/t[1,2] # 死亡に着目したときの大人に対する子どものオッズ
> O_Death
[1] 0.9122807
> O_Alive <- t[2,1]/t[2,2] # 生存に着目したときの大人に対する子どものオッズ
> O_Alive
[1] 2.198777
> OR <- O_Alive/O_Death # オッズ比
> OR
[1] 2.410198
この計算の過程を見ると、オッズ比を参照して「大人は子どもより2.4倍死亡リスクが高い」というのは違和感があることが理解できると思います。
リスク比やオッズ比の95%信頼区間の計算
いくつかのパッケージを使ってリスク比やオッズ比の95%信頼区間を計算できます[1]。ここではパッケージEpiを使った方法を紹介しておきます。
> tt <- matrix(c(1438,654,52,57),nrow=2, byrow=T) # 上のリスク比の計算、オッズ比の計算の結果と合わせるために1行目と2行目を入れ替えます。
> rownames(tt) <- c("Adult","Child")
> colnames(tt) <- c("No","Yes")
> tt # 入れ替え完了。
No Yes
Adult 1438 654
Child 52 57
> library(Epi) # パッケージEpiを読み込み。
> twoby2(tt) # ttのリスク比とオッズ火を計算。
2 by 2 table analysis:
------------------------------------------------------
Outcome : No
Comparing : Adult vs. Child
No Yes P(No) 95% conf. interval
Adult 1438 654 0.6874 0.6672 0.7069
Child 52 57 0.4771 0.3852 0.5705
95% conf. interval
Relative Risk: 1.4409 1.1813 1.7575
Sample Odds Ratio: 2.4102 1.6366 3.5494
Conditional MLE Odds Ratio: 2.4091 1.6055 3.6220
Probability difference: 0.2103 0.1152 0.3038
Exact P-value: 0
Asymptotic P-value: 0
調整されたリスク比、オッズ比
結果に対して複数の原因がある場合、分割表は複数に層化されたものになる。ある原因に対する結果を、他の原因による影響で調整したリスク比やオッズ比を計算する方法として、コクラン=マンテル=ヘンツェル検定[1]を用いる[2]。パッケージepiRを用います。
> x$Age <- factor(x$Age, levels = c("Adult", "Child")) # 上のリスク比の計算と同じように子どもに対する大人の死亡リスクを表すために、名義尺度の表示順を大人、子どもに変更します。
> y <- data.frame( Class=rep(x$Class, x$Freq), Sex=rep(x$Sex, x$Freq), Age=rep(x$Age, x$Freq), Survived=rep(x$Survived, x$Freq)) # yを再構築。
> library(epiR) #パッケージepiRを読み込む。
> t_cmh <- xtabs(~ y$Age+y$Survived+y$Sex) # 関数xtabsで層化した分割表を作成。下段の関数epi.2by2を動かすために、注目する原因, 結果, 調整のための原因の順で記述する。
> epi.2by2(t_cmh)
Outcome + Outcome - Total Inc risk * Odds
Exposed + 1438 654 2092 68.7 2.199
Exposed - 52 57 109 47.7 0.912
Total 1490 711 2201 67.7 2.096
Point estimates and 95 % CIs:
------------------------------------------------------------------- # 以下の表で(M-H)の行がMantel-Haenszel 推定量。
Inc risk ratio (crude) 1.44 (1.18, 1.76)
Inc risk ratio (M-H) 1.21 (1.00, 1.47) # リスク比(95%信頼区間)。
Inc risk ratio (crude:M-H) 1.19
Odds ratio (crude) 2.41 (1.64, 3.55)
Odds ratio (M-H) 1.57 (1.05, 2.37) # オッズ比(95%信頼区間)。
Odds ratio (crude:M-H) 1.53
Attrib risk (crude) * 21.03 (11.45, 30.62)
Attrib risk (M-H) * 10.26 (-21.45, 41.97) # リスク差(95%信頼区間)。
Attrib risk (crude:M-H) 2.05
-------------------------------------------------------------------
Test of homogeneity of IRR: X2 test statistic: 21.261 p-value: < 0.001
Test of homogeneity of OR: X2 test statistic: 18.629 p-value: < 0.001
Wald confidence limits
M-H: Mantel-Haenszel
* Outcomes per 100 population units
Sponsored Links