跳至正文

【制造业】计算的抽象等级与安全库存预测

V0.1
V0.2 补充草稿图片,修改错误
V0.3 修正 Dec 3, 2023
V0.4 Dec 16, 2023 重大调整

制造业相关: 【高级案例】物料需求预测之(品牌)“客户集中度”分析

概要:需求预测基于历史的均值计算(个体);安全库存的设置来自于需求的波动;合理选择安全库存取决于利益最大化的平衡。

一、平均值和概括:抽象概括指定未来

1、既定事实 VS 逻辑推理

最为理想的情况下,产品A过去13周,每周的销售数量都是X个,那么就斩钉截铁地推测,未来两周的销售数量也是X个。因为过去毫无波动,未来也没有波动的理由。这种简单、直觉的推测背后,就是数据计算的开始之地:到底为什么过去五六周是X,我就推测未来是X,而非X+1? 未来的X和昨天的X有什么不同?

(Dec 2, 2023)我们可以先简单地说:昨天的X是既成事实,是固定不变的,如果有数据表的字段记录它,我们称之为physical filed(物理字段);相比之下,未来的X或者X+1是可能性,是猜测、逻辑推理而来的,如果用数据表的字段记录它,我们称之为logical filed(逻辑字段)。物理和逻辑、既定和猜测的区别,既是对业务的反映,也是即将到来的复杂计算的前提。

但是,实际情况当然要负责得多,过去13周的销售数量大概率各不相同,但又有潜在的规律可言(毕竟客户的需求对应现实的需求)。我们先总结过去,而后推测未来。假想历史各周的销量围绕一个理想的“中间值”波动——这个中间值是对历史数据的抽象概括,进而逻辑上推测未来的可能性。在技术上,可以用算术平均值(avg)来计算这个理想值。

这样,当我们说,“该产品下周预计销售Y个”的时候,我们不是在拍大腿,而是在严谨地总结过去、指导未来,这就是数据的意义,也是分析的基本逻辑。在数学中,常用μ(音缪)来表示一组数据的算术平均值,而在分析中,对应avg或者average函数。

有了μ平均值,就可以合理的预测,未来每周的销售数量围绕μ发生——注意是围绕这个值发生,而非这个数据值本身,可能高,也可能低,两种可能性是均等的。用统计的逻辑来介绍,“该产品未来每周的销售数量,围绕历史均值μ而变化,有50%的概率高于均值μ,有50%的概率低于均值μ。”

如果不能理解这个最基本的常识,我们可能会犯下很多的错误,甚至于致命的错误。如同《统计学的世界》中的漫画中说讲,一个人不知道河流的平均深度只是概率值,而非实际值,他就是一条腿迈入了死亡之河。

2、用Tableau分析工具实现

在Tableau中,我们可以借助表计算或者详细级别表达式,在不改变主视图详细级别的前提下快速完成“过去13个月的销售数量总和的均值”计算,这样既可以保留“每个月销售数量”的既定事实,又可以对多个月的数据量完成抽象概括——这种聚合的二次聚合是业务理解的难点,也是考验BI产品实力的关键。

如果领导要求我们对产品为下周销量做出预测,你说,”未来有50%的概率比预测的均值μ要高”。这个如此理性、严谨的回答大概率会被劈头盖脸臭骂一顿,因为这个答案的准确性也仅仅和领导拍大腿一样,甚至不如相信领导的“大腿”(经验),所以就没有指导业务决策的有效性。

二、标准差与波动:量化历史波动推测未来

接下来的问题,就是如何记录并量化历史波动,从而推测未来的波动情况。

1、使用误差和标准差来衡量波动

衡量数据点的波动,就是围绕均值的偏离程度,在统计学中,每个点相当于理想均值或者“真值”的偏离,称之为“误差”(error),可以用E来表示。把每个数据表的误差求和再计算平均,就可以获得“平均误差”(Mean Error,简称ME)。

每个点可以比均值高,也可以比均值低(即偏移有方向),因此可以用每个数据点本身(x)和平均值(μ)的绝对距离(绝对误差absolute error)表示各自的波动,距离越大离散程度越高。

(补充)绝对误差的计算把大偏差和小偏差一律同样对待,也就是偏离标准值10个单位和偏离5个单位仅仅是数量上的差异,但没有赋予额外的权重。如果想给较大偏差一个更高权重,就可以使用二次方的方式,同时替代绝对值。这样就可以得出“误差平方和”(sum of squared errors,SSE),统计学上称之为“方差”(var,Variance的简称)。方差越大,说明数据集的波动性越大,反之越小,比如{0,1,3,4}的方差是2.5,而{0,1,5,6}的方差是6.5,所以说后者的波动比前者更大。

不过,方差使用了平方量化波动的绝对值,这样就放大了差异,比如{0,1,3,4}的均值是2,最大的波动距离其实只有0到2的距离。为了让离散值和数据值具有更好的可比性,于是就有了方差的开根号形式:标准差(standard Variance)。标准差也是最重要的量化波动的形式。在数学中,用希腊字母表示,大写Σ,小写σ。质量分析中“六西格玛方法”就来自于此。

按照上面的计算,{0,1,3,4}的平均值是2,方差是2.5,标准差是1.58;而{0,1,5,6}的平均值是4,方差是6.5,标准差是2.55 。在这里,标准差是对集合内数据点的离散波动情况的刻画,当然会有数据点的差异比它大。

有了平均值、标准差,你可以告诉领导说,“过去数周,产品A的销售量分别是{X1,X2,X3,X4……Xn},过去各周的平均销售数量是μ个,波动范围是σ(标准差);未来,产品A的销售预计会围绕μ上下浮动,为了确保客户需求,可以参照μ+σ准备库存”

2、使用Tableau完成销售数量的标准差

在Tableau中,我们还是可以继续用表计算轻松完成过去13个月的“标准差”。如下所示,Safco制造商过去13个月月均销售是29.6个,标准差19.8.如果是按照一个标准差准备安全库存(SS=1σ),那就是安全库存19.8,外加29.6合计39.4的备货总量。

你满怀信心地期待一顿表扬,结果不得不先一通解释(没有多少业务领导现在知道标准差怎么计算出来了),然后又迎来了一次小批评,因为你没法解释μ+σ个对应的“有货率”是多少,而且没有考虑公司设定的95%有货率指标。

聪明的你现在要进一步依赖统计学的知识,既要理解标准差对应的概率,又要基于95%的KPI推导安全库存的合理区间。比如,产品按照μ+σ备货,理论上可以把物料有货率从之前μ对应的50%提高到84.2%的水平(理想情形,稍后后讲解)。倘若一味增加安全库存(SS),比如备货2σ甚至,这种方式又和拍大腿毫无二致——之前拍大腿获得了50%满意度的预测值,现在只是多了一个加倍的要素。备货太低要承担客户流失的代价,备货太多要承担库存堆积如山的代价。

三、基于“有货率”指标推到安全库存的合理边界

接下来,我们需要以有货率为基准,计算合适的标准差倍数来设定最佳的安全库存。

1、从正态分布看标准差与概率

既然数据集的数据点波动可能超过1个标准差的范围,那么1个标准差的安全库存当然就不能满足100%的“有货率”。但是又不能一味增加安全库存。如何根据领导给出的“有货率”,设置合理的安全库存呢?

这里就涉及到一个比较专业的知识:正态分布(Normal Distribution)。这是一种极其理想情形下的分布,统计学上常用它来作为参考,最为典型的案例就是投骰子,假设上帝也玩骰子,他/她投出来的结果也会和我们一样,两个骰子之和等于7的概率最高。而2和12都是最小概率事件——因为它们都只有一种组合方式,而7却有12种组合。

统计学家概括了“正态分布”的特征及精确概率。在理想情形下,68.26%的概率会发生在均值±1个标准差(即μ±σ)范围之内,而有95.44%的概率发生在均值±2个标准差(即μ±2σ)范围之内。

由于业务中的备货旨在满足有货的情况,因此只需考虑右侧单边的概率。按照正态分布,我们可以推测,如果备货量在均值+1个标准差(即μ+σ),那么可以满足84.12%的服务及时率(50%+68.26%/2);而如果备货量在均值+2个标准差(即μ+2σ),那么就能提高到97.72%(50%+95.44%/2)。

想要知道多少倍数的标准差,能达到95%的满意度?这个倍数就是Z值(Z score)。对于符合正态分布的样本而言,我们可以通过一个速查表获得答案:1.65。安全库存为1.65个标准差,即备货量为μ+1.65σ时,可以达到95%的客户满意度。

因此,安全库存公式就是SS = Z * σ,其中Z表示对应服务水平的安全系数,σ表示需求的标准差。

2、Tableau中计算安全库存

既然有了安全库存SS,物料的备货量就可以进一步标记为μ+ Z*σ 。

在Tableau中,如果按照Z=1.65的倍数设置安全库存,问题就容易的多了,只需要在之前表计算的基础上增加一个计算即可。当然也可以像下图一样把Z设置为一个参数,这样可能随时响应领导期望。

说到这里,领导终于漏出了满意而疲倦的笑容,而你也知道前路漫漫,还有很多的事情要做:安全库存受备货及生产周期的影响、很多长尾商品不符合正态分布、还没有考虑单价对备货量的影响(既要满意度又要成本最低)。另外,安全库存还受到统计周期、备货周期、配送提前期(lead time)等多方面因素的影响。

比如,假设Safco的预测周期是4周(按照28天计算),而备货周期是每周一次(7天)。那么,安全库存设置就可以按照之前计划的1/4来安排。当我们把这些加入影响因素,安全库存的计算就会更加复杂。

好了,本文既是对喜乐君本人的挑战,想必也是对很多读者的挑战。

参考: