Визуализация предельного эффекта двустороннего взаимодействия бинарной логистической модели в ggplot - PullRequest
0 голосов
/ 08 июня 2018

Может ли кто-нибудь предложить быстрый и понятный способ визуализации двустороннего взаимодействия модели glm / бинарной модели логистической регрессии с использованием ggplot?Меня интересует маргинальный эффект!

Я смотрел другие посты, но не очень их понял.Другая проблема заключается в том, что я не могу использовать ggpredict / gginteraction из-за версии R (3.4.2).

Моя структура данных выглядит так (упрощенно):

region_AB   motive   voter_attribute  vote_for_party_XY
1           1        1                1
1           0        1                1
1           1        0                0
0           0        0                0
0           0        1                0
0           1        0                0

И я 'Я утверждаю (и на самом деле обнаруживаю), что этот регион опосредует влияние данного мотива на голосование за партию XY.

Теперь я знаю, что это не воспроизводимый пример.Но, может быть, кто-то может предложить решение, которое подходит всем (по крайней мере, в случае двусторонних взаимодействий моделей glm).Если необходимо, и это помогает, может быть, набор данных mtcars может служить примерным целям: есть даже пример модели взаимодействия с использованием этого набора данных .

Я надеюсь, у кого-то есть хорошее и простое решение для этого.Это может быть общее руководство для визуализации предельных эффектов двусторонних взаимодействий ...

1 Ответ

0 голосов
/ 02 июля 2018

Вы можете использовать пакет ggeffects для вычисления предельных эффектов.Возвращаемым значением является фрейм данных, но есть метод plot(), который создает / возвращает объект ggplot.Вот искусственный пример с двоичным результатом, но вы можете найти более подробную информацию в разделе «Статьи» на указанном выше веб-сайте.

library(ggeffects)
library(sjmisc) # to preserve labels
data(efc)

# prepare data, create binary outcome and make
# numeric variables categorical
efc$neg_c_7d <- dicho(efc$neg_c_7)
efc$c161sex <- to_factor(efc$c161sex)
efc$c172code <- to_factor(efc$c172code)

# fit logistic regression
m <- glm(
  neg_c_7d ~ c12hour + c161sex * c172code,
  data = efc,
  family = binomial(link = "logit")
)

# compute and plot marginal effects
ggpredict(m, c("c172code", "c161sex")) %>% plot()

enter image description here

Обратите внимание, что набор данных, который я использовал , помечен , поэтому оси снабжены «правильными» значениями и метками переменных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...