我有一个包含响应变量
COVID.Vaccines
的数据集,我想以 Gender
作为解释变量执行逻辑回归。我的脚本旨在查找优势比、95% CI 以及每个级别(男性和女性)的 p 值:
# Fit logistic regression model
my_data$Gender <- relevel(my_data$Gender, ref = "Male")
model <- glm(COVID.Vaccines ~ Gender, data = my_data, family = "binomial")
# Get coefficients
coefficients <- coef(model)
# Get standard errors
standard_errors <- summary(model)$coefficients[, "Std. Error"]
# Calculate odds ratios
odds_ratios <- exp(coefficients)
# Calculate lower and upper confidence intervals
lower_ci <- exp(coefficients - 1.96 * standard_errors)
upper_ci <- exp(coefficients + 1.96 * standard_errors)
# Combine results into a data frame
results <- data.frame(
Expl_Var = names(coefficients),
Odds_Ratio = odds_ratios,
CI = paste0(round(lower_ci, 3), "-", round(upper_ci, 3)),
P_Value = summary(model)$coefficients[, "Pr(>|z|)"]
)
# Print results
print(results)
我一直得到男性的优势比为 3,这是没有意义的,因为优势比应该与其自身进行比较(换句话说,它应该等于 1)。我的脚本有问题吗?
已尝试强制引用为男性,但无论引用是哪个,我都会得到不寻常的 OR
如 Stefan 提供的链接所示,拦截值(在您的情况下为男性)是事件在参考(男性)中发生的对数几率。如果 beta0 的指数为 3,则意味着男性结果的预期赔率是 3,即概率为 0.75,即概率 = odds/(1+odds)。因此,这表明 3/4 的男性有
COVID.Vaccines = 1
。
只有在查看第二个 beta 系数时才能看到男性和女性之间的对比,而第一个只能用于获得基础概率。