web-dev-qa-db-ja.com

R:ロジスティック回帰のオッズ比を計算して解釈する

ロジスティック回帰の結果の解釈に問題があります。私の結果変数はDecisionであり、バイナリです(0または1は、それぞれ製品を摂取したり摂取したりしません)。
予測変数はThoughtsであり、連続的で、正または負のいずれかで、2番目の小数点に切り上げられます。
Thoughtsの変化に応じて、製品を取る確率がどのように変化するかを知りたい。

ロジスティック回帰式は次のとおりです。

glm(Decision ~ Thoughts, family = binomial, data = data)

このモデルによると、ThoughtsはDecision(b = .72、p = .02)の確率に大きな影響を与えます。 Decisionのオッズ比をThoughtsの関数として決定するには:

exp(coef(results))

オッズ比= 2.07。

質問:

  1. オッズ比をどのように解釈しますか?

    1. 2.07のオッズ比は、Thoughtsの.01増加(または減少)が0.07で製品を取得する(または取得しない)オッズに影響することを意味します[〜#〜] or [〜# 〜]
    2. Thoughtsが.01増加(減少)するにつれて、製品を取得する(取得しない)オッズが約2単位増加(減少)することを意味しますか?
  2. Thoughtsのオッズ比をDecisionの推定確率に変換するにはどうすればよいですか?
    または特定のDecisionスコアでThoughtsの確率のみを推定できます(つまり、Thoughts == 1)?

12
Sudy Majd

Rのロジスティック回帰によって返される係数は、ロジット、またはオッズのログです。ロジットをオッズ比に変換するには、上で行ったように、指数を累乗できます。ロジットを確率に変換するには、関数exp(logit)/(1+exp(logit))を使用できます。ただし、この手順には注意すべき点がいくつかあります。

最初に、再現可能なデータを使用して説明します

library('MASS')
data("menarche")
m<-glm(cbind(Menarche, Total-Menarche) ~ Age, family=binomial, data=menarche)
summary(m)

これは返します:

Call:
glm(formula = cbind(Menarche, Total - Menarche) ~ Age, family = binomial, 
    data = menarche)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.0363  -0.9953  -0.4900   0.7780   1.3675  

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) -21.22639    0.77068  -27.54   <2e-16 ***
Age           1.63197    0.05895   27.68   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 3693.884  on 24  degrees of freedom
Residual deviance:   26.703  on 23  degrees of freedom
AIC: 114.76

Number of Fisher Scoring iterations: 4

表示される係数は、例のようにロジット用です。これらのデータとこのモデルをプロットすると、二項データに適合するロジスティックモデルの特性であるシグモイド関数がわかります。

#predict gives the predicted value in terms of logits
plot.dat <- data.frame(prob = menarche$Menarche/menarche$Total,
                       age = menarche$Age,
                       fit = predict(m, menarche))
#convert those logit values to probabilities
plot.dat$fit_prob <- exp(plot.dat$fit)/(1+exp(plot.dat$fit))

library(ggplot2)
ggplot(plot.dat, aes(x=age, y=prob)) + 
  geom_point() +
  geom_line(aes(x=age, y=fit_prob))

enter image description here

確率の変化は一定ではないことに注意してください。最初は曲線がゆっくりと上昇し、次に中央でより速く上昇し、最後に水平になります。 10と12の間の確率の差は、12と14の間の確率の差よりもはるかに小さいです。これは、確率を変換せずに年齢と確率の関係を1つの数字で要約することは不可能であることを意味します。

特定の質問に答えるには:

オッズ比をどのように解釈しますか?

切片の値のオッズ比は、x = 0(つまりゼロ思考)の場合の「成功」のオッズです(データでは、これは積を取るオッズです)。係数のオッズ比は、1つの整数x値(つまり、x = 1; 1つの思考)を追加したときに、この切片の値を超えるオッズの増加です。初潮データの使用:

exp(coef(m))

 (Intercept)          Age 
6.046358e-10 5.113931e+00 

これは、年齢= 0で発生する初潮の確率が.00000000006であると解釈できます。または、基本的に不可能です。年齢係数を指数化することにより、年齢の各単位で初潮のオッズの予想される増加がわかります。この場合、5倍以上です。オッズ比1は変化がないことを示し、オッズ比2は倍増などを示します。

2.07のオッズ比は、「思考」の1単位の増加により、製品を2.07倍にする確率が増加することを意味します。

思考のオッズ比を決定の推定確率にどのように変換しますか?

上記のプロットでわかるように、変化はx値の範囲全体で一定ではないため、選択した思考値に対してこれを行う必要があります。思考の価値の確率が必要な場合は、次のように答えを取得します。

exp(intercept + coef*THOUGHT_Value)/(1+(exp(intercept+coef*THOUGHT_Value))
33
triddle

オッズと確率は2つの異なる尺度であり、どちらも発生するイベントの可能性を測定するという同じ目的に取り組んでいます。それらは相互に比較されるべきではなく、相互間でのみ比較されるべきです!
2つの予測値のオッズを(他を一定に保ちながら)「オッズ比」(odds1 /オッズ2)を使用して比較しますが、確率の同じ手順は「リスク比」(確率1 /確率2)と呼ばれます。

一般的に、比率に関しては確率に対してオッズが好まれます確率は0から1に制限され、オッズは-infから+ infで定義されます。

信頼区間を含むオッズ比を簡単に計算するには、oddsratioパッケージを参照してください。

library(oddsratio)
fit_glm <- glm(admit ~ gre + gpa + rank, data = data_glm, family = "binomial") 

# Calculate OR for specific increment step of continuous variable
or_glm(data = data_glm, model = fit_glm, 
       incr = list(gre = 380, gpa = 5))

  predictor oddsratio CI.low (2.5 %) CI.high (97.5 %)          increment
1       gre     2.364          1.054            5.396                380
2       gpa    55.712          2.229         1511.282                  5
3     rank2     0.509          0.272            0.945 Indicator variable
4     rank3     0.262          0.132            0.512 Indicator variable
5     rank4     0.212          0.091            0.471 Indicator variable

ここでは、単純に連続変数の増分を指定して、結果のオッズ比を確認できます。この例では、予測子admit5だけ増加すると、応答gpaが発生する可能性が55倍高くなります。

モデルの確率を予測する場合は、モデルを予測するときにtype = responseを使用するだけです。これにより、対数オッズが確率に自動的に変換されます。その後、計算された確率からリスク比を計算できます。詳細については、?predict.glmを参照してください。

7
pat-s