你做的预测不靠谱?是因为你不知道用移动平均!
移动平均(MovingAverage),就是对前N期的历史数据进行平均,消除时间序列中的不规则波动的影响,以便呈现出总体发展趋势,并根据总体趋势来进行未来的走向预测。
移动平均在数据分析中十分常用,本文就来介绍在PowerBI中如何进行移动平均分析。
实际销售额折线图
假设分析的数据为某公司的销售额,先来看看每日销售额的时间序列。在折现图中展现,
每日销售额呈现明显的不规则波动,很难通过这些折现看出总体趋势,所以需要对销售额进行移动平均。
15天移动平均销售额
假设进行15天的移动平均,写度量值如下,
15天移动平均 =
AVERAGEX(
DATESINPERIOD(
'日期表'[日期],
MIN('日期表'[日期]),
-15,
DAY
),
[销售金额]
)
该度量值利用之前介绍过的时间智能函数DATESINPERIOD,返回过去15天的日期,然后利用迭代函数AVERAGEX计算出过去15天的平均值。
将该度量值放入折线图中,
通过15天均线,销售额的趋势变得平滑了很多,可以大致看出销售额的周期性波动,并有上升的趋势。
60天移动平均销售额
如果把计算移动平均的天数再延长一些,比如计算60天的均线,依然可以利用上面的度量值公式,只是把DATESINPERIOD函数的第三个参数,-15改成-60就可以了,60天均线也放进来,
60天均线更加平滑,几乎没有波动,呈现出缓慢的上升趋势。天数越长,平滑效果越好,但是也导致移动平均数据对实际数据越不敏感,所以并不是越平滑越好,移动平均天数不宜太长。
如果我们还想看30天的均线、45天的均线,难道都要分别写一个度量值吗,当然不用,在PowerBI中可以把天数参数化,制作一个动态的移动平均天数。
动态移动平均
在之前的文章中,也介绍过参数的用法(创建PowerBI「参数」轻松搞定动态分析),新建一个参数,
点击确定以后,会自动生成一个度量值和切片器,为了更加清晰,把度量值名称更改为[移动平均天数]。
然后用该度量值替换掉上面DAX表达式中的天数15,
动态移动平均 =
AVERAGEX(
DATESINPERIOD(
'日期表'[日期],
MIN('日期表'[日期]),
-[移动平均天数],
DAY
),
[销售金额]
)
把这个度量值放入折线图中,根据切片器天数的选择可以观察不同天数的均线。
这样动态的移动平均分析就做好了。
利用移动平均进行预测
进行移动平均分析的目的是为了预测未来。
如果不用移动平均数据,在原始每日销售额折线图的基础上进行预测,预测线是这样的,
预测的数据依然是剧烈不规则的波动,并且预测区间很大,这样的预测结果并不能起到该有的决策支持作用。
如果我们按30天均线来进行预测,
预测的趋势非常明确,并且区间也非常小,这样预测才有实际借鉴意义。所以利用移动平均分析可以更有效的预测未来趋势,前提是拥有大量且可靠的历史数据。
利用移动平均进行预测也有缺陷,比如滞后性,当实际的趋势发生反转时,移动平均数据反应比较迟钝,需要过一段时间才能反映出来。但是并不能因此就否定它的作用,这只是其中一个分析方式而已,需要结合其他的定量和定性分析,才能更好的把握未来趋势,再说也没有工具能准确预测未来。