Построение кривой вероятности для логит-модели с несколькими предикторами

12

У меня есть следующая функция вероятности:

Prob=11+ez

где

z=B0+B1X1++BnXn.

Моя модель выглядит

Pr(Y=1)=11+exp([3.92+0.014×(bid)])

Это визуализируется с помощью кривой вероятности, которая выглядит так, как показано ниже.

введите описание изображения здесь

Я рассматриваю возможность добавления пары переменных к моему исходному уравнению регрессии. Допустим, я добавляю в модель пол (категориальный: F и M) и возраст (категориальный: <25 и> 26), и в итоге получаю:

Pr(Y=1)=11+exp([3.92+0.014×(bid)+0.25×(gender)+0.15×(age)])

В RI может генерировать аналогичную кривую вероятности, которая сообщит мне вероятность Y = 1 при учете всех трех предикторов. Там, где я потерян, я хочу найти вероятности для каждой возможной перестановки этих вариаций.

Итак, когда bid = 1, пол = M, а возраст> = 26, какова вероятность того, что Y = 1? Точно так же, когда bid = 2, пол = F, а возраст> = 26, какова вероятность того, что Y = 1?

Я хочу создать кривую вероятности, которая позволит мне визуализировать это.

Кто-нибудь может помочь? Возможно, я совершенно не понимаю, какую информацию можно почерпнуть из логит-модели, но, пожалуйста, скажите мне, не понимаю ли я и теорию.

ATMathew
источник
Вы хотите, чтобы код делал это на R, или просто чтобы понять проблему концептуально?
gung - Восстановить Монику
Если бы мне пришлось выбирать, я бы сказал, что проблема концептуально. Я думаю, что R-код мне удастся выяснить самостоятельно.
ATMathew
2
Если вам удобно решать ту же проблему с помощью обычной (наименьших квадратов) регрессии, то почему бы просто не выразить ответ как логарифмические шансы (это просто ) и использовать методы, которые вы знаете? B0+B1X1++BnXn
whuber
1
Конечно, взгляните на пакет @FrankHarrell rms (обширную документацию можно найти на веб-сайте RMS ). Начать с Predict()и plot.Predict()функции , чтобы получить ощущение того , что можно сделать (это включает в себя построение как функция , с набор на значения по умолчанию, или фиксированные значения по вашему выбору). Pr(Y=1|x2,,xp)x1x2,,xp
ЧЛ

Ответы:

24

К счастью для вас, у вас есть только один непрерывный ковариат. Таким образом, вы можете просто сделать четыре (т.е. 2 SEX x 2 AGE) графика, каждый из которых имеет отношение между BID и . В качестве альтернативы вы можете создать один график с четырьмя разными линиями (вы можете использовать разные стили линий, веса или цвета для их различения). Вы можете получить эти предсказанные линии, решив уравнение регрессии в каждой из четырех комбинаций для диапазона значений BID. p(Y=1)

Более сложная ситуация, когда у вас есть несколько непрерывных ковариат. В таком случае часто существует определенный ковариат, который в некотором смысле является «первичным». Этот ковариат может быть использован для оси X. Затем вы решаете для нескольких заранее заданных значений других ковариат, как правило, среднее значение и +/- 1SD. Другие варианты включают различные типы 3D-графиков, коплотов или интерактивных графиков.

Мой ответ на другой вопрос здесь содержит информацию о ряде графиков для исследования данных в более чем двух измерениях. Ваш случай по сути аналогичен, за исключением того, что вы заинтересованы в представлении прогнозных значений модели, а не необработанных значений.

Обновить:

Я написал несколько простых примеров кода на R для создания этих графиков. Позвольте мне отметить несколько вещей: поскольку «действие» происходит на ранней стадии, я запускал BID только через 700 (но не стесняйтесь расширять его до 2000). В этом примере я использую указанную вами функцию и беру первую категорию (то есть женскую и молодую) в качестве ссылочной категории (которая по умолчанию в R). Как отмечает @whuber в своем комментарииМодели LR являются линейными по логарифмическим коэффициентам, поэтому вы можете использовать первый блок прогнозируемых значений и строить график, как если бы вы выбрали регрессию OLS. Logit - это функция связи, которая позволяет вам связать модель с вероятностями; второй блок преобразует логарифмические шансы в вероятности с помощью обратной функции логита, то есть путем возведения в степень (превращения в шансы) и последующего деления шансов на 1 + шансы. (Я обсуждаю природу функций связи и этот тип модели здесь , если вам нужна дополнительная информация.)

BID = seq(from=0, to=700, by=10)

logOdds.F.young = -3.92 + .014*BID
logOdds.M.young = -3.92 + .014*BID + .25*1
logOdds.F.old   = -3.92 + .014*BID         + .15*1
logOdds.M.old   = -3.92 + .014*BID + .25*1 + .15*1

pY.F.young = exp(logOdds.F.young)/(1+ exp(logOdds.F.young))
pY.M.young = exp(logOdds.M.young)/(1+ exp(logOdds.M.young))
pY.F.old   = exp(logOdds.F.old)  /(1+ exp(logOdds.F.old))
pY.M.old   = exp(logOdds.M.old)  /(1+ exp(logOdds.M.old))

windows()
  par(mfrow=c(2,2))
  plot(x=BID, y=pY.F.young, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for young women")
  plot(x=BID, y=pY.M.young, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for young men")
  plot(x=BID, y=pY.F.old, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for old women")
  plot(x=BID, y=pY.M.old, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for old men")

Это приводит к следующему графику:
введите описание изображения здесь
Эти функции достаточно похожи, так что изначально описанный мной метод четырех параллельных графиков не очень отличителен. Следующий код реализует мой «альтернативный» подход:

windows()
  plot(x=BID, y=pY.F.young, type="l", col="red", lwd=1, 
       ylab="Pr(Y=1)", main="predicted probabilities")
  lines(x=BID, y=pY.M.young, col="blue", lwd=1)
  lines(x=BID, y=pY.F.old,   col="red",  lwd=2, lty="dotted")
  lines(x=BID, y=pY.M.old,   col="blue", lwd=2, lty="dotted")
  legend("bottomright", legend=c("young women", "young men", 
         "old women", "old men"), lty=c("solid", "solid", "dotted",
         "dotted"), lwd=c(1,1,2,2), col=c("red", "blue", "red", "blue"))

производя в свою очередь этот участок:
введите описание изображения здесь

Gung - Восстановить Монику
источник