我已经建立了一个与变量的多项式关系的逻辑回归age
,我将其作为与变量的交互包含在模型中sex
。我还有其他自变量和控制变量。
主要问题是:如何分别找到age
变量female
的转折点male
?
该模型如下所示:
model <- glm(success ~ poly(age,2, raw = TRUE):sex + ...,
data = data, family = "binomial")
summary(model)
...
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -9.701e+00 1.525e+00 -6.362 1.99e-10 ***
poly(age, 2, raw = TRUE)1:sexmixed 4.245e-02 3.492e-02 1.216 0.224112
poly(age, 2, raw = TRUE)2:sexmixed -2.285e-05 4.216e-04 -0.054 0.956773
poly(age, 2, raw = TRUE)1:sexfemale 1.487e-01 3.608e-02 4.122 3.76e-05 ***
poly(age, 2, raw = TRUE)2:sexfemale -1.937e-03 4.527e-04 -4.278 1.88e-05 ***
poly(age, 2, raw = TRUE)1:sexmale 6.715e-02 3.116e-02 2.155 0.031164 *
poly(age, 2, raw = TRUE)2:sexmale -4.762e-04 3.179e-04 -1.498 0.134089
---
因变量表示success
。mixed
是一个参考水平sex
(这里混合是指与男性和女性结合的人群相关的观察,但我只想找到female
和的转折点male
)。
从总结中我可以计算出:
- 女性年龄拐点: 0.1487 /(2*0.001937)=38岁
- 男性年龄拐点: 0.06715 /(2*0.0004762)=70.5岁。
但这似乎不对,因为当我在下面想象它时:
ggplot(data %>% filter(sex %in% c('female', 'male')),
aes(age, success, color = sex)) +
geom_point(position = position_jitter(height = 0.007, width = 0)) +
stat_smooth(method = "glm", method.args = list(family = binomial),
formula = y ~ poly(x,2), alpha = 0.2, size=0.5, aes(fill = sex))
我得到了一个情节,表明男性的转折点必须在 58 岁左右(女性在 36 岁左右)。
如果我单独构建模型sex
,我会收到:
model <- glm(success ~ poly(age,2, raw = TRUE):sex + sex + ...,
data = data, family = "binomial")
summary(model)
...
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.799e+01 4.511e+00 -3.988 6.67e-05 ***
poly(age, 2, raw = TRUE)1:sexmixed 3.634e-01 1.675e-01 2.169 0.030084 *
poly(age, 2, raw = TRUE)2:sexmixed -2.969e-03 1.593e-03 -1.864 0.062353 .
poly(age, 2, raw = TRUE)1:sexfemale -2.533e-02 5.670e-02 -0.447 0.655083
poly(age, 2, raw = TRUE)2:sexfemale -8.760e-05 6.261e-04 -0.140 0.888740
poly(age, 2, raw = TRUE)1:sexmale 8.733e-02 3.335e-02 2.619 0.008829 **
poly(age, 2, raw = TRUE)2:sexmale -6.543e-04 3.369e-04 -1.942 0.052097 .
---
对于女性,它会重现错误。男性年龄的转折点:0.08733/(2*0.0006543)=66.7岁(也是错误的)。
如果我age
在模型中也包含了,它会给出:
model <- glm(success ~ poly(age,2, raw = TRUE)*sex...,
data = data, family = "binomial")
summary(model)
...
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.799e+01 4.511e+00 -3.988 6.67e-05 ***
poly(age, 2, raw = TRUE)1:sexfemale -3.887e-01 1.753e-01 -2.218 0.026565 *
poly(age, 2, raw = TRUE)2:sexfemale 2.881e-03 1.695e-03 1.699 0.089244 .
poly(age, 2, raw = TRUE)1:sexmale -2.760e-01 1.691e-01 -1.632 0.102586
poly(age, 2, raw = TRUE)2:sexmale 2.314e-03 1.612e-03 1.436 0.150994
---
- 女性年龄拐点: 0.3887 /(2*0.002881)=67.5岁(错误)
- 男性年龄的转折点:0.276/(2*0.002314)=59.6 岁(有点接近可视化假设)
我需要如何使用intercept
或基本水平系数 ( mixed
) 来找到 和 的图灵female
点male
?我还应该在我的案例中包含age
和/或sex
与交互术语吗?