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, что a .01 увеличение (или уменьшение)Thoughts влияет на шансы (или не принимать) продукт 0,07 или
    2. означает ли это, что as Thoughts увеличивает (уменьшает).01, шансы принятия (не принятия) продукта увеличиваются (уменьшаются) примерно на 2 единицы?
  2. как конвертировать коэффициент шансов Thoughts до предполагаемой вероятности Decision?
    Или я могу только оценить вероятность Decision в некоторых Thoughts оценка (т. е. вычислить оценочную вероятность принятия продукт, когда Thoughts == 1)?

2 ответов


коэффициент, возвращаемый логистической регрессией в 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. Этот это означает, что невозможно суммировать соотношение возраста и вероятностей с одним числом без преобразования вероятностей.

чтобы ответить на ваши конкретные вопросы:

как вы интерпретируете отношения шансов?

отношение шансов для значения перехвата-это шансы на "успех" (в ваших данных это шансы взять продукт), когда x = 0 (т. е. нулевые мысли). Коэффициент шансов для вашего коэффициента-это увеличение шансов выше этого значения то перехватить, когда вы добавляете одно целое значение x (т. е. x=1; одна мысль). Используя данные menarche:

exp(coef(m))

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

мы могли бы интерпретировать это как вероятность того, что менархе произойдет в возрасте = 0 .00000000006. Или, в принципе невозможно. Exponentiating возрастной коэффициент говорит нам ожидаемое увеличение шансов менархе для каждой единицы времени. В данном случае, это просто более quintupling. Коэффициент шансов 1 указывает на отсутствие изменений, в то время как коэффициент шансов 2 указывает на удвоение, так далее.

ваш коэффициент шансов 2,07 означает, что увеличение на 1 единицу "мыслей" увеличивает шансы взять продукт в 2,07 раза.

как вы конвертируете соотношение шансов мыслей в оценочную вероятность решения?

вам нужно сделать это для выбранных значений мыслей, потому что, как вы можете видеть на графике выше, изменение не является постоянным в диапазоне значений X. Если вы хотите вероятность некоторого значения для мысли, получить ответ следующим образом:

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

шансы и вероятность-это две разные меры, обе направленные на одну и ту же цель измерения вероятности события. Их не следует сравнивать друг с другом, только между собой!
В то время как шансы двух значений предиктора (при сохранении других постоянных) сравниваются с использованием "отношения шансов" (odds1 / odds2), та же процедура для вероятности называется "отношением риска" (вероятность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

здесь вы можете просто указать приращение ваших непрерывных переменных и увидеть результирующие коэффициенты шансов. В данном примере ответ admit в 55 раз чаще встречается, когда predictor gpa увеличена на 5.

если вы хотите предсказать вероятности с вашей моделью, просто использовать type = response при прогнозировании модели. Это автоматически преобразует логарифмические коэффициенты в вероятность. Затем вы можете рассчитать коэффициенты риска из рассчитанных вероятностей. См.?predict.glm для получения более подробной информации.