質問: Rでロジスティック分析をする際の質問です。 ロジスティック回帰分析をして、算出された係数は(対数)オッズ比を表していると 理解しています。 説明変数が質的な場合は、2×2のクロス表の形にできるので(対数)オッズ比となることが わかるのですが、(例 リンク先) 説明変数が量的な場合はオッズを比較しようにも、どれくらいの幅で、どれくらいの数に説明変数を区切るのか、がわかりません。(区切らない場合はオッズしか算出されないと思うのですが...) また、3つ以上に説明変数を区切ってしまうと、得られるオッズ比は何と何を比較したものになるのかも不明です。(例えば単位を10で3つに区切ったとすると、0~9のオッズと10~19のオッズを比較するのか10~19と20~29を比較するのか等) ですが、Rで分析結果はしっかり係数が表示されるので、 1. これがどうやって計算されたものであるか 2. 説明変数が量的な場合、ロジスティック回帰分析をして得られた係数が示すのは、 この説明変数が1単位増加したとき、目的変数が1になる確率(目的変数は二値)がどれだけ増えるか(の値の対数)という理解で合っているのか の2点をご存知の方がいらっしゃりましたら、ご教授いただきたいです。 また、説明にわかりにくい点がありましたらご指摘ください。
回答: まず,ロジスティック回帰分析は応答変数(被予測変数)が2値(0と1)の場合に用いられる分析で,説明変数が量的でも質的でも用いられます。また,量的な変数は区間で分割することもなく,そのまま投入します。通常の重回帰分析との比較,およびRでの実施方法については,以下のurlを参照してください: 質問文にテストコードも出力も付けられていなかったので,説明用に作成します: ``` set.seed(57) # データ生成 df <- data.frame( y = sample(0:1, size = 20, replace = TRUE), x1 = round(rnorm(n = 20, mean = 10, sd = 3)), x2 = sample(1:2, size = 20, prob = c(2, 3), replace = TRUE) ) head(df, 1) #> y x1 x2 #> 1 0 15 2 # ロジスティック回帰を実施 res_logit <- glm(y ~ x1 + x2, data = df, family = binomial(link = "logit")) # 要約 summary(res_logit) #> #> Call: #> glm(formula = y ~ x1 + x2, family = binomial(link = "logit"), #> data = df) #> #> Deviance Residuals: #> Min 1Q Median 3Q Max #> -1.33813 -1.12445 -0.03433 1.21190 1.29199 #> #> Coefficients: #> Estimate Std. Error z value Pr(>|z|) #> (Intercept) 0.85814 1.84085 0.466 0.641 #> x1 -0.01641 0.10894 -0.151 0.880 #> x2 -0.42226 0.95391 -0.443 0.658 #> #> (Dispersion parameter for binomial family taken to be 1) #> #> Null deviance: 27.726 on 19 degrees of freedom #> Residual deviance: 27.483 on 17 degrees of freedom #> AIC: 33.483 #> #> Number of Fisher Scoring iterations: 4 ``` このとき,`Coefficients:`にある部分が係数の出力で,Estimateの部分から,以下のようなモデルが算出されたことを示します: `logit(pi) = 0.85814 -0.01641*x1 -0.42226*x2` ここで,`pi`はyが1である確率です。たとえば,あるサンプルs1(今回の先頭行)が`x1 = 15, x2 = 2`であったならば,`y = 1`である確率piはモデルより0.4421220となります。なお,このモデルにより予測された確率は`fitted()`で取り出すことができます: ``` # fitted(モデルにより予測された確率) fitted(res_logit) #> 1 2 3 4 5 6 7 #> 0.4421220 0.5391402 0.4747066 0.4665292 0.4828975 0.4706159 0.5994223 #> 8 9 10 11 12 13 14 #> 0.5915158 0.4583698 0.5472846 0.5835616 0.4461737 0.4706159 0.4788006 #> 15 16 17 18 19 20 #> 0.5675260 0.5715495 0.4624470 0.4624470 0.4340421 0.4502326 ``` また,各説明変数のオッズ比は以下のようにすれば算出できます: ``` # オッズ比に変換 exp(res_logit$coefficients) #> (Intercept) x1 x2 #> 2.3587740 0.9837221 0.6555637 ``` 算出しているものについては以上です。また係数の推定値についてですが,量的変数の場合でも質的変数の場合でも,単位量(1)の変化に対応した対数オッズの変化量となります。