我有一些数据(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
我想获得边际效应,根据我的理解,这是在某些水平上保持其他变量不变的预测概率,在这种情况下,对于我的二进制预测器“inter”,它是 0 对 1。如果这不正确,请告诉我。根据 [ https://rdrr.io/cran/ggeffects/man/ggpredict.html],“所有未在术语中指定的剩余协变量保持不变(参见'详细信息')”。time 和 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
保持其他变量不变的预测概率对于级别 1 为 0.79,而级别 0 为 0.33,这正是这些ggpredict语句产生的结果:
ggpredict(m, terms = c("inter", "time [mean]"))
ggpredict(m, terms = c("inter"))
但是,当我用“int [mean]”在均值处指定“int”时,会产生不同的结果:
ggpredict(m, terms = c("inter", "time [mean]", "int [mean]"))
ggpredict(m, terms = c("inter", "int [mean]"))
它说 0 级的预测概率为 0.19,而 1 级的预测概率为 0.64。为什么?由于r自动计算均值的协变量,所有四个命令不应该产生相同的结果吗?对“int”使用其他函数,例如 min 和 max,ggpredict(m, terms = c("inter", "time [mean]", "int [min]"))
会根据公式产生可预测的结果。