预测分析是我们最想看到,也是最有价值的分析之一
试想一下,如果可以预测明天的股票走势,会怎么样?
坐等着数钱就可以了!
那可以预测明天,下个月的销售额,销售数量,那也很不错,就可以照着这个预测,来准备原材料,产能安排更合理,也不会出现原料短缺,和库存积压的问题,那么如何用power bi做预测呢?
先来看看实例
基于视觉对象的简单的预测,预测往后50天的销售额
基于过去N天的移动平均值进行预测
销售额.实际+过去N天的移动平均值 = VAR FORECAST = AVERAGEX( DATESINPERIOD('Dim日历'[Date],LASTDATE('Dim日历'[Date]),-'Par1.X.N天移动平均'[Par1.X 值],DAY), [100.KPI1.销售额]), [100.KPI1.销售额]) RETURN SWITCH(TRUE(), [200.是否在未来],FORECAST, [100.KPI1.销售额])
计算逻辑说明:
1.在日期表中增加一列来判断当前时间是否在未来
2.计算预测值:移动平均值*增长因子
3.判断业务日期是否在未来,如果在未来,则返回预测值,否则返回实际值
这时,作者特意取了之前50天的移动平均,来和第一种方法做比较,其实2个看起来还是比较接近的。
但是,这个方法的缺点是,只能做短期预测,一般也就1~2月的样子,如果要预测明年或年初就要预测全年的情况就有点勉为其难了。
长周期预测:基于去年同期销售*增长率因子的预测
销售额.实际+去年同期简单预测 = VAR FORECAST = CALCULATE([100.KPI1.销售额],SAMEPERIODLASTYEAR('Dim日历'[Date])) *(1+'Par5.预测增长率'[Par5.预测增长率 Value]/100) SWITCH(TRUE(), [200.是否在未来],FORECAST, [100.KPI1.销售额])
计算逻辑同上
这样就可以预测到2020年全年的预测值了
把增长因子参数化,用户可以自由调节增长率的变化
但是问题是,预测值的波动显然太大了,为了平滑预测的波动,引入移动平均的概念,在这里我们使用去年同期的移动平均值来进行预测
基于去年同期N天移动平均*增长因子的预测
只需要一个度量值就可以搞定:
200.销售额.实际+去年同期移动平均预测 = VAR FORECAST = CALCULATE( SUMX('Dim日历', AVERAGEX( DATESINPERIOD('Dim日历'[Date],LASTDATE('Dim日历'[Date]),-'Par1.X.N天移动平均'[Par1.X 值],DAY), [100.KPI1.销售额]) ), SAMEPERIODLASTYEAR('Dim日历'[Date])) *(1+'Par5.预测增长率'[Par5.预测增长率 Value]/100) RETURN SWITCH(TRUE(), [200.是否在未来],FORECAST, [100.KPI1.销售额])
改善很明显
首先,我们看到预测值变得平缓了,
其次,参数化增长因子和平均移动的天数后,就可以动态得到增长因子和移动平均的天数变化后的预测结果
最终预测展示仪表板
看着还是比较美好的,基于这样可视化仪表板,调节增长因子,就可以实时得到最终的结果。
后期展望
那么,基于这样的预测,顺利成章的,我们可以比较方便的得到需要准备的原材料需求计划,生产排产计划,人力资源征募,甚至于生产基地的扩产计划等等。不论是短期,还是中长期来说,都是非常有实用价值的。
不足之处
任何预测的不确定性是最大的难点,在这里我们虽然使用历史数据的移动平均值来缓减了短期波动造成不确定性,并且基于增长因子来动态得到预测的趋势。








暂无数据