0

我有一些数据(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

我想获得边际效应,根据我的理解,这是在某些水平上保持其他变量不变的预测概率,在这种情况下,对于我的二进制预测器“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(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。为什么?自动计算均值的协变量,所有四个命令不应该产生相同的结果吗?对“int”使用其他函数,例如 min 和 max,ggpredict(m, terms = c("inter", "time [mean]", "int [min]"))会根据公式产生可预测的结果。

4

0 回答 0