R: вычислить и интерпретировать коэффициент шансов в логистической регрессии
у меня возникли проблемы с интерпретацией результатов логистической регрессии. Моя переменная результата Decision
и является двоичным (0 или 1, не принимать или принимать продукт, соответственно).
Моя переменная предиктора Thoughts
и является непрерывной, может быть положительным или отрицательным, и округляется до 2-го десятичного знака.
Я хочу знать, как изменяется вероятность принятия продукта как Thoughts
изменения.
уравнение логистической регрессии есть:
glm(Decision ~ Thoughts, family = binomial, data = data)
согласно этой модели, Thought
s оказывает значительное влияние на вероятность Decision
(b = .72, p = .02). Определить коэффициент шансов Decision
как функция Thoughts
:
exp(coef(results))
отношение шансов = 2.07.
вопросы:
-
как интерпретировать соотношение шансов?
- означает ли соотношение шансов 2.07, что a .01 увеличение (или уменьшение)
Thoughts
влияет на шансы (или не принимать) продукт 0,07 или - означает ли это, что as
Thoughts
увеличивает (уменьшает).01, шансы принятия (не принятия) продукта увеличиваются (уменьшаются) примерно на 2 единицы?
- означает ли соотношение шансов 2.07, что a .01 увеличение (или уменьшение)
как конвертировать коэффициент шансов
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))
обратите внимание, что изменение вероятностей не является постоянным - кривая сначала поднимается медленно, затем быстрее в середине, а затем выравнивается в конце. Разница в вероятностях между 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
для получения более подробной информации.