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

在R中实现百分比时间序列预测的可行方案咨询

周度弱季节性百分比指标预测方案

你当前的场景属于小样本短时序预测任务,2.5年周度数据累计仅约130个样本,深度学习模型需要足够多的样本拟合时序规律,LSTM效果差属于正常情况,优先选择轻量时序模型+特征工程的方案适配性更高。

一、前期数据预处理

  • 先校验百分比指标的取值范围,如果固定在0-1区间,可先做logit变换将值域拉伸到实数域,预测完成后再做逆变换,避免预测结果超出合理范围
  • 构造基础特征:以日期为时间索引,生成「周数」「月份」「季度」「是否节假日周(若业务相关)」等时间特征
  • 构造滞后特征:滑动生成前1周、前2周、前4周、前12周、前52周(对应去年同周)的历史百分比值,弱季节性场景下同期历史值的参考性很高

二、推荐适配模型

1. Prophet(优先尝试,门槛最低)

专门适配小样本、弱季节性的时序数据,自动拟合趋势与周期规律,支持加入自定义特征提升效果,示例代码如下:

import pandas as pd
from prophet import Prophet

# 转换为Prophet要求的输入格式
df = df.rename(columns={'date':'ds', 'percentage':'y'})
# 开启年度季节性,关闭周度季节性(周度数据天然按周采样不需要额外拟合周规律)
model = Prophet(weekly_seasonality=False, yearly_seasonality=True)
# 加入周数作为额外回归因子,强化季节性拟合
df['week_of_year'] = df['ds'].dt.isocalendar().week
model.add_regressor('week_of_year')
model.fit(df)

# 生成未来预测结果,periods填需要预测的剩余周数
future = model.make_future_dataframe(periods=20, freq='W')
future['week_of_year'] = future['ds'].dt.isocalendar().week
forecast = model.predict(future)
# forecast['yhat'] 即为预测的百分比值

2. TBATS模型

无需手动构造特征,自动适配多周期弱季节性的时序数据,对非严格符合季节性规律的序列适配性远高于传统ARIMA类模型。

3. LightGBM/XGBoost回归

将构造的时间特征、滞后特征作为输入,目标值为当周百分比,采用时间序列交叉验证(按时间顺序划分训练测试集,禁止随机划分)训练即可,拟合非线性规律的能力更强。

三、效果优化建议

  • 评估指标同时参考MAE和MAPE,百分比指标的相对误差参考价值高于均方误差
  • 单模型效果达不到要求可以做加权融合:比如将Prophet的预测结果和LightGBM的预测结果按7:3的权重加权,通常可以带来5%-10%的精度提升
  • 不建议继续尝试深度学习类模型:2.5年的周度数据量不足以支撑LSTM等模型拟合有效规律,强行使用大概率会出现过拟合、泛化能力差的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:27:00