You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否基于汇总计数数据在R中执行Logistic Regression建模?

可以用汇总计数表格在R中构建Logistic回归模型

当然可以,你提供的这类分组计数数据完全可以用来拟合Logistic回归,不需要还原原始的个体级数据。R的glm()函数原生支持处理这种成功/失败计数格式的分组数据,以下是具体实现步骤:

1. 整理汇总数据为R数据框

首先将表格中的数据转换为R可识别的数据结构,建议拆分年龄组列中的性别和年龄信息,方便后续建模:

# 创建汇总数据框
df <- data.frame(
  gender = c("女性", "女性", "女性", "男性", "男性", "男性"),
  age_group = c("18-39", "40-59", "60+", "18-39", "40-59", "60+"),
  no_outcome = c(130, 156, 165, 234, 156, 90),
  yes_outcome = c(9, 22, 18, 44, 34, 5)
)

2. 拟合Logistic回归模型

方法一:直接使用成功/失败计数(推荐)

将有结局和无结局的计数用cbind()合并作为响应变量,传递给glm()函数,并指定family = binomial:

# 拟合分组数据的Logistic回归
model <- glm(
  formula = cbind(yes_outcome, no_outcome) ~ gender + age_group,
  data = df,
  family = binomial(link = "logit")
)

# 查看模型详细结果
summary(model)

这种方法不需要展开数据,直接基于分组计数计算模型参数,效率更高,是处理这类数据的标准方式。

方法二:使用权重模拟原始数据

如果你习惯用个体级数据的格式建模,可以将分组数据转换为长格式并添加权重,效果和方法一完全一致:

# 转换为长格式并设置权重
df_long <- data.frame(
  gender = rep(df$gender, each = 2),
  age_group = rep(df$age_group, each = 2),
  outcome = rep(c(1, 0), nrow(df)),  # 1=有结局,0=无结局
  weight = c(df$yes_outcome, df$no_outcome)
)

# 使用权重拟合模型
model_weighted <- glm(
  formula = outcome ~ gender + age_group,
  data = df_long,
  family = binomial(link = "logit"),
  weights = weight
)

# 查看结果(与方法一输出一致)
summary(model_weighted)

3. 模型结果解读

拟合完成后,summary(model)会输出系数估计值、标准误、z值和p值,你可以通过这些结果分析性别、年龄组对结局发生概率的影响。例如,gender男性的系数表示男性相对于女性的结局对数优势比。

内容的提问来源于stack exchange,提问作者Vlad Fedo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 16:45:53