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

如何在R中整理10天时间窗口时序数据并构建滚动回归模型

解决方案

实现逻辑

  • 首先预处理数据集,提取日期对应的年、月、日维度字段,方便按固定日期区间跨年份筛选样本
  • 遍历所有10天窗口的起始日期,每次拉取2002-2012年所有对应日期区间的样本
  • 批量拟合回归模型,将所有窗口的建模结果统一存储为结构化表格,方便后续分析调用

完整代码

首先加载依赖包并预处理数据:

library(tidyverse)
library(lubridate)

# 预处理数据:转换日期格式,拆分年/月/日字段
CFbasin <- CFbasin %>%
  # 如果你的日期列实际名为Data,把下面的Date替换为Data即可
  mutate(Date = ymd(Date), 
         month = month(Date),
         day = day(Date),
         year = year(Date))

然后批量滑动窗口建模:

# 生成所有窗口的起始日(只需匹配月日,年份可随便填)
window_starts <- seq.Date(ymd("2023-10-04"), ymd("2023-10-19"), by = "1 day")

# 批量执行窗口筛选+回归建模
reg_results <- map_dfr(window_starts, function(start) {
  # 计算当前窗口的结束日(10天窗口)
  end <- start + days(9)
  # 跨年份筛选当前窗口对应日期的所有样本
  window_data <- CFbasin %>%
    filter(month == 10,
           day >= day(start),
           day <= day(end))
  # 拟合线性回归,此处以Qkl为因变量为例,可根据需求修改回归公式
  model <- lm(Qkl ~ Qllt + Qhaw + Qdp + Qlit, data = window_data)
  # 整理返回需要的建模结果,可按需增减字段
  tibble(
    window_range = paste0(month(start), "月", day(start), "日-", month(end), "月", day(end), "日"),
    sample_count = nrow(window_data),
    r_squared = summary(model)$r.squared,
    adj_r_squared = summary(model)$adj.r.squared,
    full_model = list(model) # 存储完整模型对象,可后续调用做预测、显著性检验等
  )
})

结果说明

最终生成的reg_results是结构化表格,每一行对应一个滑动窗口的建模结果:

  • 要查看单个窗口的模型详情,直接调用对应行的full_model即可,比如summary(reg_results$full_model[[1]])即可查看第一个窗口的回归结果
  • 如果需要处理缺失值,可在lm()函数中添加na.action参数配置缺失值处理规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:15:06