35756


Rでロジスティック分析をする際の質問です。

ロジスティック回帰分析をして、算出された係数は（対数）オッズ比を表していると  
理解しています。  
説明変数が質的な場合は、2×2のクロス表の形にできるので（対数）オッズ比となることが  
わかるのですが、（例 リンク先）  
<https://istat.co.jp/sk_commentary/risk_odds_04>  
説明変数が量的な場合はオッズを比較しようにも、どれくらいの幅で、どれくらいの数に説明変数を区切るのか、がわかりません。（区切らない場合はオッズしか算出されないと思うのですが...）  
また、3つ以上に説明変数を区切ってしまうと、得られるオッズ比は何と何を比較したものになるのかも不明です。（例えば単位を10で3つに区切ったとすると、0~9のオッズと10~19のオッズを比較するのか10~19と20~29を比較するのか等）  
ですが、Rで分析結果はしっかり係数が表示されるので、  
1\. これがどうやって計算されたものであるか  
2\. 説明変数が量的な場合、ロジスティック回帰分析をして得られた係数が示すのは、  
この説明変数が1単位増加したとき、目的変数が1になる確率（目的変数は二値）がどれだけ増えるか（の値の対数）という理解で合っているのか

の2点をご存知の方がいらっしゃりましたら、ご教授いただきたいです。  
また、説明にわかりにくい点がありましたらご指摘ください。


CC BY-SA 3.0
2017-06-20T09:03:20.600
35745
2017-06-20T12:50:25.097
22488
question
r
ロジスティック回帰分析　説明変数が量的な場合の係数


まず，ロジスティック回帰分析は応答変数(被予測変数)が2値(0と1)の場合に用いられる分析で，説明変数が量的でも質的でも用いられます。また，量的な変数は区間で分割することもなく，そのまま投入します。通常の重回帰分析との比較，およびRでの実施方法については，以下のurlを参照してください:

<https://oku.edu.mie-u.ac.jp/~okumura/stat/logistic.html>  
<https://oku.edu.mie-u.ac.jp/~okumura/stat/140921.html>

質問文にテストコードも出力も付けられていなかったので，説明用に作成します:

[code]

    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
    
[/code]

このとき，`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()`で取り出すことができます:

[code]

    # 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
    
[/code]

また，各説明変数のオッズ比は以下のようにすれば算出できます:

[code]

    # オッズ比に変換
    exp(res_logit$coefficients)
    #>  (Intercept)          x1          x2 
    #>    2.3587740   0.9837221   0.6555637
    
[/code]

算出しているものについては以上です。また係数の推定値についてですが，量的変数の場合でも質的変数の場合でも，単位量(1)の変化に対応した対数オッズの変化量となります。


CC BY-SA 3.0
2017-06-20T12:50:25.097
35756
2017-06-20T12:50:25.097
19063
35745
answer