0

我已经建立了一个与变量的多项式关系的逻辑回归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    
---

因变量表示successmixed是一个参考水平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) 来找到 和 的图灵femalemale?我还应该在我的案例中包含age和/或sex与交互术语吗?

4

1 回答 1

1

您的问题不包括可重复的示例,这使得回答有些困难,并且会降低您可能得到的任何答案的有用性。

Age > -2a/b尽管如此,我们通常从高中代数中知道,抛物线的一阶导数由正变为负时,即当 时,其中a 是on 上的系数Age,b 是on上的系数时,有一个转折点Age^2

要估计男性和女性的单独 a 和 b,您需要包括年龄和性别之间的交互项,这可能看起来很符合

glm(formula = success ~ sex + age:sex + I(age^2):sex, family = binomial(link = "logit"),
    data = data) -> model

您可以从中获取 a 和 b 的相关值coef(model)

于 2021-10-21T09:41:03.750 回答