Установка ковариат на среднее значение для предельных эффектов с помощью ggpredict - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть некоторые данные (df):

inter out time int
0     1   21   0
0     0   32   0
0     1   44   0
0     0   59   0
0     1   88   0
0     1   111  0
0     0   54   0
1     0   63   63
1     1   73   73
1     1   83   83
1     0   93   93
1     1   52   52
1     0   33   33
1     1   10   10

И я запускаю модель:

m <- glm(out ~ inter + time + int, data = df, family = binomial(link = "logit"))

Коэффициенты модели:

  Coefficients:
            Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.00916    1.82200  -0.554    0.580
inter        2.00906    2.64959   0.758    0.448
time         0.02293    0.03010   0.762    0.446
int         -0.03502    0.04215  -0.831    0.406

Я хочу получить предельные эффекты, которые, согласно моему пониманию, представляют собой прогнозируемые вероятности на определенных уровнях, сохраняющих постоянными другие переменные, которые в данном случае равны 0 против 1 для моего двоичного предиктора, 'inter'. Если это неправильно, пожалуйста, дайте мне знать. Согласно [https://rdrr.io/cran/ggeffects/man/ggpredict.html] , «все остальные ковариаты, не указанные в терминах, остаются постоянными (см.« Подробности »)». Среднее время и int равны 58,29 и 29,07 соответственно, поэтому формула для получения прогнозируемых вероятностей:

Level 0:                                              
sum = -1.00916 + (.02293 * 58.29) + (-.03502 * 29.07)       
sume = exp(sum)
sumee <- sume/(1+sume)
sumee = 0.33

Level 1:
sum = -1.00916 + 2.00906 + (.02293 * 58.29) + (-.03502 * 29.07) 
sume = exp(sum)
sumee <- sume/(1+sume)
sumee = 0.79

Прогнозируемая вероятность, при которой другие переменные остаются постоянными, составляет 0,79 для уровня 1 по сравнению с 0,33 для уровня 0. , что именно то, что производят эти операторы :

ggpredict(m, terms = c("inter", "time [mean]"))
ggpredict(m, terms = c("inter"))

Однако, когда я указываю 'int' в среднем с помощью 'int [mean] ", это дает разные результаты:

ggpredict(m, terms = c("inter", "time [mean]", "int [mean]"))
ggpredict(m, terms = c("inter", "int [mean]"))

В нем говорится, что уровень 0 имеет прогнозируемую вероятность 0,19 по сравнению с 0,64 для уровня 1. Почему? Разве все четыре команды не должны давать одинаковые результаты, поскольку автоматически вычисляет ковариаты по среднему значению? Использование других функций для типа int, таких как min и max ggpredict(m, terms = c("inter", "time [mean]", "int [min]")), дает предсказуемые результаты на основе формулы.

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