R ダミー変数からオッズ比を求める時の解釈

##オッズ比とは
オッズとは、ある事象が起こった確率を起こらない確率で割ったものです。
オッズ比とは、２つのオッズの比です。オッズ比は２×２のクロス表から計算でき、[２つの要因間である結果の起こりやすさが何倍異なるのか](https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%83%E3%82%BA%E6%AF%94)を表します。以下の表で、オッズ比は、*ad/bc*で求められます。端的にいうと、オッズ比から、ある症状のある人（暴露ありの人）が症状のない（暴露なしの）人に比べて何倍病気にかかるのかが分かるのです。
![image](https://qiita-image-store.s3.amazonaws.com/0/114127/2dbe9b57-8144-8811-a9b7-ac0f6b0894d6.png)

オッズ比は、暴露ありの人の中で病気にかかった人(a)／暴露ありの人で病気にかからなかった人(b)を、暴露なしの人で病気にかかった人（c)／暴露なしの人で病気にかからなかった人(d)　で割った値です。(a/b)÷(c/d)　なので、ad/bc　です。分母は暴露なしの方をとり、暴露なしを基準とした時の暴露ありの病気のかかりやすさが何倍かを示しています。

オッズ比が１なら、暴露ありと暴露なしの差はない＝＞暴露ありは疾病の原因ではないと解釈し、オッズ比が３なら、暴露ありは暴露なしに対して３倍病気にかかっているので「暴露あり」は病気の原因だと解釈します。

オッズ比は0以上の値を取り上限は特にありません。複数の要因となる変数と結果との関係を検討する時、どの変数が結果に対してより強く影響力をもつかを比較して説明変数の絞りこみを行う際に有効な指標です。


##Rで求めるオッズ比

Rでオッズ比を求めるパッケージは、[fisher.test、Epiパッケージ、epitoolsパッケージ（このサイトに詳しいです）](https://oku.edu.mie-u.ac.jp/~okumura/stat/2by2.html)など複数ありますが、今回はオッズ比の信頼区間、p値も一緒に求められるEpiのtwoby2関数を紹介します。



Rのオッズ比の計算では、最も小さい値にコードづけされているカテゴリが基準となります※1)。男性を１，女性を0というコードに割り振ったら、値が０である女性を基準とした場合の男性のオッズ比が計算されます。

##バイナリデータ準備
以下のような顧客の購買データを考えます。このような０と１からなるデータをバイナリデータセットとかダミーデータセットと呼びます。各変数（シュークリーム、オペラ、マカロンなど）には、買った人には1を、買っていないには0を入力しています。「女性」という変数では、女性＝１，男性＝０をコーディングしています。


![image](https://qiita-image-store.s3.amazonaws.com/0/114127/0f3e5104-4ba0-9a30-cc23-44a7c0e5c306.png)

##Rでオッズ比を求める
ここで、シュークリームの購買と性別の関係をオッズ比から探ってみます。「シュークリームを買った」という「結果」に対して、性別「女性」がどれだけ効いているのかを知りたいとき、以下のように要因変数を行、結果変数を列にとったクロス表を作成します。

![image](https://qiita-image-store.s3.amazonaws.com/0/114127/db1589c9-1047-2176-56a6-5898b4cedcf7.png)



```R:calc_odds.R
#データを読み込み
koubaidat<-read.table("koubaidata.dat",header=T)
cross<-xtabs(~女性+シュークリーム,data=koubaidat)
cross
twoby2(cross)
```


![image](https://qiita-image-store.s3.amazonaws.com/0/114127/a9abed4c-7141-3f6b-a7a0-44582e7e94a1.png)




![image](https://qiita-image-store.s3.amazonaws.com/0/114127/1261112f-d526-0352-01f1-000b2fe957b6.png)


オッズ比は、Sample Odds Ratio:0.8113となりました。

上のクロス表では要因変数（女性）の基準カテゴリは０（男性）となっていて、結果変数（シュークリーム買う）も基準カテゴリは０（「買わない人」）になっています。そのため「買っていない人」の特徴を議論しており、女性に対して「男性は」0.8倍「買っていない」という解釈になります。

今度はクロス表のカテゴリを↓のような形に入れ替えます。これで買わない人の特徴ではなくて買った人の特徴を議論できるし、変数名にした「女性」が男性に比べて何倍なのかが分かります。


![image](https://qiita-image-store.s3.amazonaws.com/0/114127/2fbe0561-0802-74f8-a084-4709cf71a8d9.png)



Ｒでクロス表を作ると自動的に０、１の順にカテゴリを並べるので、０を２にリコードしました。買った＝１のまま、買わない＝２、女性＝１のまま、男性＝２とリコードしたクロス表に対してオッズ比を求めます。

![image](https://qiita-image-store.s3.amazonaws.com/0/114127/330e6516-bfcc-a80f-f867-7a2c43eb5c77.png)


![image](https://qiita-image-store.s3.amazonaws.com/0/114127/c4d50a3b-bc5a-123d-6660-39e13c529e3c.png)


オッズ比は同じ0.8113でした。行と列の変数のカテゴリをそれぞれ入れ替えるということは、aとdをそしてｂとｃを入れ替えることになりますが、入れ替えてもad/bcの値は変わりませんね。
今度は、比較対象の男性に対して「女性は」0.8倍シュークリームを「買っている」と解釈できます。オッズ比が１以下なので、日本語では「女性は男性の0.8倍しかシュークリームを買っていない」となります。

最初のクロス表のオッズ比の解釈：女性に比べて男性は0.8倍シュークリームを「買ってない」ーーー＞分かりにくい。
２番目のクロス表のオッズ比の解釈：男性に比べて女性は0.8倍シュークリームを「買っている」

２つは同じことなのです。

## ダミー変数のオッズ比の解釈
Ｒのパッケージでダミー変数行列に対してオッズ比を求める時、データセットのカテゴリの０を（１より大きな値である）２とリコードする必要はありません。その結果を解釈する時に、要因の２群の比較を行う「カテゴリ１に比べて０は」の部分を「カテゴリ０に比べて１は」と読みかえ、結果変数に対しては「カテゴリ０である」を「カテゴリ１である」と読みかえればよい、ということになります。



##参考になるリンク
* [奥村晴彦先生のサイト](https://oku.edu.mie-u.ac.jp/~okumura/stat/2by2.html)

* [Rで統計解析入門ー２値データの要約](http://www.cwk.zaq.ne.jp/fkhud708/files/R-intro/R-stat-intro_08.pdf)

※１岡田昌史編『The R Bookーデータ解析環境Rの活用事例集』(九天社)