程晓华
2024-9-25
学过一点统计学的人大概都知道一个叫移动平均(Moving Average, ma)的统计预测算法,在ma的基础上,统计学家们又弄了个加权移动平均(Weighted Moving Average, wma)。ma和wma是绝大多数人都知道的定义,但估计很少有人知道这个所谓的“自然加权移动平均法(Naturally Weighted Moving Average, nwma)”。
我一直认为这个nwma是我的一个发明。
在解决滚动预测数据准确性(Accuracy of Rolling Forecast)的衡量问题的时候,我发明了一个定义叫“垂直平均法(Vertical Average,va)”。为此我在2021年1月写过一篇文章,题目叫《用垂直平均法计算MAPE》,该文发布于我的个人公众号(ITOOTD),并与2022年1月收录于我的第四本书《全面库存管理数学分析》第一章拓展阅读里面。
在va的基础上,我又弄了个一个nwma,并于2022年5月以《运用本期自然加权平均法进行需求分析》为题发布于我的个人订阅号上。我的本意是用这个自然加权移动平均得出的结果来逼近最终的PO(客户的采购订单)值,说白了,这也是一种统计预测而已。但是,从供应链管理角度,我则是提出了三个假设:
1. 每次滚动预测都是认真的;
2. 每次预测都是对现实需求(PO)的一种无限逼近;
3. 最近的预测信息更有价值。
但这里存在的一个问题就是,滚动预测对不同期数的需求预测的次数是不一样的,最少的是一次,最多的是n次,而n则是最终取决于滚动预测本身的跨度(用期数表示,设为m1)以及最终预测的总的次数(m2)。当m2>=m1的时候,n=m1, 反之,n=m2。
此时,如果采用va的方法则是对1~n预测值都是取一样的权重,但这违背了上述第三条假设;如果对每一期不同次数的预测值取不同的系数的话,费事费力不说,结果是很容易出错的,而且到底取多大的系数其实是没有标准的。那怎么办呢?
约束理论之父高德拉特博士说过,任何事情都有其固有的简单性。
当你的解决方案太复杂的时候,你应该毫不犹豫地将其放弃!
于是我就最终想到了一个所谓的自然加权移动平均法(nwma)。
nwma的原理极其简单:第一次预测值的权重为1/sum(1:n),最近一次,即第n次预测值的权重为n/sum(1:n);各权重之和为1。
前面说过,我本来以为这个nwma方法是我的一个“发明”, 结果后来我在R语言里面发现了由Joshua Ulrich开发和维护的一个第三方程序包叫TTR(Functions to create Technical Trading Rules),他在里面提到的一个计算移动平均值的函数叫WMA(x, n, wts=1:n),其方法与我所说的 nwma完全一致,尽管他并没有指出WMA是一个自然加权,但他封装在算法里面的就是自然加权,懂点R语言并对此感兴趣的读者可以测试一下。
人家说“英雄所见略同”,我与Joshua可能都不是什么英雄,至少我不是,但我们的算法的确是相同的,而这说明了一个什么问题呢?
用简单的方法去解决所谓复杂的问题一直都是人类共同的追求。
解决方案要简单!
越简单,越有力!
作者程晓华(John Cheng),全面库存管理(TIM)咨询独立顾问、制造业库存控制技术与策略课程创始人、讲师,《制造业库存控制技巧》《首席物料官》《决战库存》《制造业全面库存管理》《全面库存管理数学分析》著作者;1995年开始接触MRP,深耕制造业供应链管理近30年,一直聚焦于库存与交付问题的实践和咨询。
全面库存管理(TIM)文章订阅号:ITOOTD
Mail: johnchengbj@126.com
微信:cmocheng(请注明所在单位和真名)