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

如何使用R语言Prophet对多区域指标实现批量月度预测

多区域月度Prophet预测实现方案

该需求完全可以实现,你的数据结构正好适配Prophet的分组独立建模逻辑,按区域拆分时间序列分别训练预测即可,70个区域的计算量对于普通电脑也完全可以轻松处理。

实现步骤

1. 数据预处理

Prophet要求输入的单序列数据仅需两列:ds(日期列,datetime格式)和y(待预测的数值列),你只需对现有数据做简单转换:

  • 将Month列转换为datetime类型,重命名为ds
  • 将Value列重命名为y
  • 按Region字段拆分,生成每个区域独立的时间序列数据集

2. 核心实现代码(Python)

import pandas as pd
from prophet import Prophet

# 读取原始数据
raw_df = pd.read_csv("你的数据集路径.csv")
# 字段格式转换
raw_df['Month'] = pd.to_datetime(raw_df['Month'])
processed_df = raw_df.rename(columns={"Month": "ds", "Value": "y"})

# 存储所有区域预测结果
forecast_result_list = []

# 遍历每个区域建模预测
for region_name in processed_df['Region'].unique():
    # 筛选当前区域的历史数据
    region_data = processed_df[processed_df['Region'] == region_name][['ds', 'y']].copy()
    # 初始化Prophet模型,可根据实际数据调整参数
    model = Prophet(
        seasonality_mode='additive',
        yearly_seasonality=True,
        changepoint_prior_scale=0.05 # 波动大的区域可适当调大该值,最大不超过0.5
    )
    # 模型训练
    model.fit(region_data)
    # 生成未来12个月的预测时间框,periods可调整为你需要的预测月数
    future_df = model.make_future_dataframe(periods=12, freq='M')
    # 执行预测
    forecast = model.predict(future_df)
    # 补充区域标识,按需保留核心字段
    forecast['Region'] = region_name
    cleaned_forecast = forecast[['Region', 'ds', 'yhat', 'yhat_lower', 'yhat_upper']].merge(
        region_data[['ds', 'y']], on='ds', how='left'
    )
    forecast_result_list.append(cleaned_forecast)

# 合并所有区域结果并导出
final_forecast = pd.concat(forecast_result_list, ignore_index=True)
final_forecast.to_csv("70区域月度预测结果.csv", index=False, encoding='utf-8-sig')

3. 常用调优建议

  • 若业务存在固定节假日/促销等特殊事件影响,可自定义holidays参数传入事件表,提升预测准确率
  • 单区域历史数据少于2年的话建议关闭yearly_seasonality,避免过拟合
  • 生成预测日期时固定freq='M',保证输出的预测日期为每月最后一天,和你原始数据格式统一

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:27:02