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

指数平滑函数参数设置问题:自定义实现与statsmodels结果偏移的对齐方法

指数平滑函数参数设置问题:自定义实现与statsmodels结果偏移的对齐方法

这个问题我之前也碰到过,本质是你自定义的平滑值和statsmodels默认输出的fittedvalues定义不一样~

差异原因

你的自定义函数计算的是每个时刻的平滑值,严格遵循公式:

s_t = α * y_t + (1-α) * s_{t-1}

其中s_t是t时刻的平滑值,用当前观测值y_t和上一个平滑值s_{t-1}计算得到。

而statsmodels的fittedvalues返回的是一步向前预测值——也就是用t-1时刻的平滑值来预测t时刻的观测值,公式是:

ŷ_t = s_{t-1}

这就导致了结果整体向后偏移一步。

解决方法

要让statsmodels的结果和你的自定义实现完全对齐,只需要获取拟合模型的level属性即可,它存储的就是每个时刻的平滑水平值,完全匹配你的公式:

修改你的代码:

# 替换原来的fittedvalues调用
smoothed_statsmodels = model.level.tolist()

用你的示例数据测试,修改后的输出会和手动实现的结果完全一致:

Manual: [10, 11.0, 12.0, 13.5, 15.75, 18.375, 21.6875] 
Statsmodels: [10, 11.0, 12.0, 13.5, 15.75, 18.375, 21.6875]

补充说明

如果你非要使用fittedvalues,也可以手动调整序列(比如去掉第一个值,再用最后一个平滑值补一个预测值),但这种方式既麻烦又容易出错,直接使用level属性是最简洁可靠的方案。

备注:内容来源于stack exchange,提问作者Чорны Бусел

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 16:23:10