У меня есть некоторые данные (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
И я запускаю glm модель:
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 :
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. Почему? Разве все четыре команды не должны давать одинаковые результаты, поскольку r автоматически вычисляет ковариаты по среднему значению? Использование других функций для типа int, таких как min и max ggpredict(m, terms = c("inter", "time [mean]", "int [min]"))
, дает предсказуемые результаты на основе формулы.