极端值会显著影响线性回归的统计参数,降低模型的预测准确度,需要严肃对待。让我们看个具体的例子,来简单介绍极端值的处理。
案例公司是个跨境电商,在导入新产品前,一般先在官网等处预售,通过预售来验证市场需求后,再大规模驱动供应链,在亚马逊上大范围推出。
预售持续6周,第7周开始正常销售。直觉告诉我们,预售期间卖得好的产品,正常销售一般也卖得好。由于供应周期较长,案例企业在预售进行了2周时,就得预测预售结束后的需求,以便及时驱动供应链来响应。这里我们首先要验证的是,2周的预售销量和正常销售期的需求之间,是否也存在线性比例关系。
我们选择了37个样本产品,都是最近一年内上市的,先做散点图,来粗略判断预售与正常销量是否有线性关系。如图1,横轴是预售2周的总销量,纵轴是预售结束转入正常销售后,首月的销量(第7-10周)。两者之间看上去确实有线性关系。不过有几个值看上去影响挺大,我们得仔细研究一下。
先说产品1。这个产品一经推出预售,反响就非常好,供应链各节点的库存很快就消耗完了,第5周起就开始短缺,一直持续到正常销售期间,导致正常销量也偏低。对于这个产品,有两种做法:(1)基于没有短缺时的销量,来修正第7到10周的正常销量;(2)如果没法修正的话,可考虑剔除这个产品。
图1:散点图来初步判断线性关系和极端值
剔除产品1的另一个考量是,在预售2周时,绝大多数产品销量在350个以内,而产品1则在500以上,落在正常区间之外,容易成为"大影响"值,显著影响到预测模型的参数,对预测大部分产品反倒不利。
比如剔除产品1后运行线性回归,第7-10周的销量等于前2周预售销量的1.8倍;如果包括产品1的话,这一倍数关系就成了1.6。可不要小看这0.2,那可是11%的差异。这也是为什么在统计学上,此类样本被称作"大影响"样本了----它们能够显著改变预测模型,就如给跷跷板放上去个大胖子一样。
当然,把这样的"大影响"值剔除,也缩小了线性回归模型的适用范围,从20到500变成20到350。对于适用范围,我们打个比方来说明。假定我们统计工薪阶层,发现大多数人把工资的10%用来吃饭。如果一个人的工资是8000元,我们可以比较安全地估计他大概花了800元吃饭,因为其收入在典型的中产范围(每月5000到15000之间)。马斯克有一个月赚了46亿美元,你当然不能估计他也花了10%的钱吃饭(出了模型的适用范围)。
相比产品1,图1中的产品2和产品3就更难抉择。从一开始做分析,我就忍不住,一再想剔除这两个极端值,这样数据会变得更加紧凑,模型拟合度更高,模型看上去也更完美。不过且慢,我们的目标不是完美的模型,而是能够更加真实反映实际情况的模型----我们得真正理解这些极端值是偶然的,还是有可能重复。如果纯属偶然,比如数据输入错误,或者特殊的客户行为等,不期望会重复发生,那可以剔除;否则,作为正常的业务行为,我们得保留,或者修正模型以更好应对。
仔细看产品2和3的需求历史,发现需求异动都是由B2B大客户行为造成的。比如对于产品2,预售结束后,B2B客户的接受度挺高,有个大客户多次下订单;对于产品3,预售期间有个B2B客户下了大订单,但预售结束后,折扣没了,需求就更理性,该客户的需求大幅下降。
案例企业原来主要是B2C业务,对接的是一个个的消费者,需求的聚合效应相对明显,东边不亮西边亮,变动相对平缓;最近进入B2B业务,对接的是企业,有的规模还很大,比如年营业额达到8亿美元,这些大B客户的需求也大,需求集中度高了,需求的变动性也增大了。
对于这样的极端值,也可能意味着模型漏掉了一些变量。比如在该案例中,B2C和B2B或许是需求的影响因素之一,我们可以在模型中增加变量来反映,或者把B2C和B2B需求分开建模。不管那种情况,大B客户的这些行为还会继续,所以对于产品2和3这样的极端值,虽然不喜欢,我们还是要保留下来。
顺便讲一下"大影响"和极端值的关系。"大影响"值也可能是极端值,会显著改变线性回归的斜率和截距,也就是说改变线性回归模型本身;极端值一般不会显著改变斜率和截距,不过却会显著增加其标准差,从而增大置信区间,让预测更不准。
比如就本案例来说,如果剔除产品2和3这两个极端值,第7-10周需求的标准差就变为50;如果包含在样本内,标准差则成了77,增加了一半还不止,表现为预测更不准确。反映到业务中,为了对付更不准的预测,就得要么多放安全库存,要么降低服务水平。
评论