理学療法士がまとめたノート

統計学備忘録(R言語のメモ)

since2016 ときどきTEXのメモ

ロジスティック回帰の基準変更

data2 <- data.frame(c(rep("あり",15),rep("なし",15)),
               c(rep("有効",12),rep("無効",3),rep("有効",4),"無効","有効","有効",rep("無効",8)))
colnames(data2) <- c("筋トレ","効果")
xtabs(~ 効果 + 筋トレ, data = data2)  

      筋トレ
効果   あり なし
  無効    3    9
  有効   12    6

オブジェクトの内容を情報付きで簡潔に表示 str()

str(data2)

'data.frame':  30 obs. of  2 variables:
 $ 筋トレ: Factor w/ 2 levels "あり","なし": 1 1 1 1 1 1 1 1 1 1 ...
 $ 効果  : Factor w/ 2 levels "無効","有効": 2 2 2 2 2 2 2 2 2 2 ...

# この順番で基準が決定されます
# 1番目に対する2番目の確率を求めることになります

筋トレ効果を考える場合にロジスティック回帰を実行すると、
「オッズ = 有効 / 無効、オッズ比 = なし / あり」
となります

glm(効果 ~ 筋トレ, family = binomial, data=data2)

Coefficients:
(Intercept)   筋トレなし  
      1.386       -1.792  

オッズ比を確認してみます

exp(-1.792) = 0.167

#オッズ = 有効 / 無効、オッズ比 = なし / あり なので

      筋トレ
効果   あり なし
  無効    3    9
  有効   12    6

(6/9) / (12/3) = 0.167

オッズの基準を変更する場合には

data2$効果 <- relevel(data2$効果, ref="有効")
glm(効果 ~ 筋トレ, family = binomial, data=data2)

(Intercept)   筋トレなし  
     -1.386        1.792  

#オッズ = 無効 / 有効  、オッズ比 = なし / あり なので
オッズ比 = exp(1.7918) = 6.0
オッズ比 = (9/6) / (3/12) = 6.0

オッズ比の基準を変更する場合も同じです

#オッズ = 有効/無効、オッズ比 :「筋トレあり」の確率
data2$筋トレ <- relevel(data2$筋トレ, ref="なし")
glm(効果 ~ 筋トレ, family = binomial, data=data2)