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

R语言:季度级数据聚合与线性模型拟合技术咨询

嘿,我来帮你一步步搞定这两个任务!先从数据聚合开始,再聊聊怎么分析d1、d2对y占比的影响~

任务1:季度级别y=1实体占比的聚合计算

用dplyr做这个聚合其实很简洁,核心思路是按季度分组,然后计算每个季度内y=1的实体比例。假设你的数据集叫df,包含quarter(季度标识)、id(唯一实体ID)、y(二元结果变量)、d1和d2(实体特征虚拟变量)这些列,代码如下:

library(dplyr)

# 生成季度级别的y=1占比统计
quarterly_y_stats <- df %>%
  # 按季度分组
  group_by(quarter) %>%
  summarise(
    total_unique_entities = n_distinct(id),  # 每个季度的唯一实体总数
    y1_ratio = mean(y == 1, na.rm = TRUE)    # y=1的实体占比,na.rm处理缺失值
  )

# 如果y本身是0/1的数值型变量,直接用mean(y, na.rm=TRUE)更省事
# quarterly_y_stats <- df %>% group_by(quarter) %>% summarise(y1_ratio = mean(y, na.rm=TRUE))

这段代码会输出每个季度的唯一实体数量,以及对应y=1的实体占比。如果你的y是因子类型(比如"yes"/"no"),记得先转成数值型:y = as.numeric(y == "yes")。

任务2:分析d1、d2对季度y占比的影响

这里分两种常用的分析思路,你可以根据数据特点选择:

思路1:实体-季度层面的逻辑回归(精准捕捉个体效应)

因为y是二元变量,逻辑回归是最适合的模型。如果你的实体在多个季度都有数据,还可以加入季度固定效应来控制时间趋势,代码如下:

# 逻辑回归:分析d1、d2对y=1概率的影响,加入季度固定效应
logit_model <- glm(
  formula = y ~ d1 + d2 + factor(quarter),
  data = df,
  family = binomial(link = "logit")
)

# 查看模型结果
summary(logit_model)

模型里的系数是对数发生比,如果想转换成更直观的概率变化,可以用marginaleffects包计算平均边际效应:

library(marginaleffects)

# 计算d1、d2的平均边际效应(即d1/d2每变化1单位,y=1概率的平均变化)
avg_margins <- avg_slopes(logit_model, variables = c("d1", "d2"))
print(avg_margins)

思路2:先聚合到季度-特征组,再做加权线性回归

如果你更关注季度层面的占比变化和特征的关系,可以先按季度+d1+d2分组,计算每个组的y占比,再用加权线性回归(用组内实体数做权重,避免样本量小的组干扰结果):

# 第一步:聚合到季度-特征组
grouped_quarterly <- df %>%
  group_by(quarter, d1, d2) %>%
  summarise(
    y1_ratio = mean(y == 1, na.rm = TRUE),
    group_entity_count = n_distinct(id),  # 组内实体数量,用于加权
    .groups = "drop"  # 取消分组,方便后续回归
  )

# 第二步:加权线性回归
weighted_lm_model <- lm(
  formula = y1_ratio ~ d1 + d2 + factor(quarter),
  data = grouped_quarterly,
  weights = group_entity_count  # 用实体数加权,提升结果可靠性
)

summary(weighted_lm_model)

这个模型的系数可以直接解释:比如d1的系数是0.1,意味着d1=1的实体组,y=1的占比平均比d1=0的组高10个百分点。

额外注意点

  • 如果d1和d2存在交互效应(比如d1的影响在d2不同取值下不一样),可以在模型里加入d1:d2项;
  • 如果实体有固定的未观测特征(比如不同实体本身的差异),可以考虑用面板数据模型(比如plm包的固定效应logit);
  • 先检查数据里的缺失值,用na.omit(df)或者df %>% drop_na()处理后再建模。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:34:36