如何用DAX实现降噪加权移动平均

PowerBI战友联盟

共 749字,需浏览 2分钟

 · 2021-11-20

移动平均,大家都清楚了,但是降噪,加权后再移动平均,将移动平均的能力推向了更高境界。

什么是降噪加权移动平均

对于一堆点,可以通过移动平均观察其趋势,如下:

可以看出:

  • 有些点距离中间区域太远。

  • 移动平均线如果全部考虑所有点,会被拉扯。

对此,我们希望把周围太远的点过滤掉,于是就有了:

通过调节降噪区滑杆,将实现:

  • 周围外侧的点被排除。

  • 移动平均的计算仅仅考虑绿色部分的点。

  • 移动平均也更加平滑。

实现方案

以下给出 DAX 相关计算。

最高值与最低值


MATX.Y.Max = 
MAXX( CALCULATETABLE( VALUES( 'Calendar'[Date] ) , ALL( 'Calendar'[Date] ) ) , [MATX.KPI] )

MATX.Y.Min =
MINX( CALCULATETABLE( VALUES( 'Calendar'[Date] ) , ALL( 'Calendar'[Date] ) ) , [MATX.KPI] )

对于学习 DAX 的小伙伴,可以好好看看,这里是如何清除筛选并保留外部筛选的技巧。

降噪算法

以下给出非常重要的 DAX 点集降噪算法,如下:


MATX.KPI.By Scope =

VAR vY = [MATX.KPI] - [MATX.Y.Min]
VAR vL = [MATX.Y.Max] - [MATX.Y.Min]
RETURN
IF( vY >= vL * MIN('Option.X'[Option.X] ) / 100 && vY <= vL * MAX('Option.X'[Option.X] ) / 100 , [MATX.KPI] )

这里的算法原理如下:

  • vL 表示最高和最低之间的跨度。

  • vY 表示相对于最低值的实际距离。

  • 通过滑竿进行判断,给出一个百分比的区间,通过视觉可以直接判断是不是包括在内。

  • 如果 vY 在上述滑竿给出的范围内,则是合理有效,否则就是噪声点,进行排除。

移动平均算法模板

以下给出移动平均的算法模板,如下:


MATX.Value =
AVERAGEX(
DATESINPERIOD( 'Calendar'[Date] , MAX( 'Calendar'[Date] ) , - [Start:Option.Y.Value] , DAY ) ,
//[MATX.KPI] //
[MATX.KPI.By Scope] * [MATX.Weight]
)

这是标准的移动平均算法模板,其中:

  • 给出了移动平均的框架。

  • 在计算环节用度量值给出实现一种委托。

  • 将移动平均的实际计算委托给实际的度量值。

  • 其中考虑了权重。

作图技巧

也许你已经完成了上述内容的模仿和抄袭,在作图的时候,考察了你对 PowerBI 图形的理解。这里使用的技巧包括:

  • 只使用了一个折线图。

  • 灵活的运用了:

    • 只显示点,不显示折线。

    • 只显示折线,不显示点。

总结

如果你具有复杂而真实的业务数据,有很多时候是有实际干扰的,例如:活动,促销以及客户导入等操作,通过本案例的降噪加权移动平均,可以比移动平均更加巧妙地计算多个点的实际趋势。

大家可以自己动手试试了。

现在大家可以自己体验了。

在订阅了BI佐罗讲授的《BI真经》之《BI进行时》课程区,除了可以下载本文案例,还可以观看视频讲解。

特别推荐


一款有灵魂的 Excel 插件产品引发的思考

2021-11-09


特别推荐大家赶快购买以上插件↑,明天是最后一天年度最底优惠。
第一步:去官网下载。
第二步:双击安装完成,微信登录
第三步购买且输入优惠码BI6666

即可。然后加入刘万祥老师微信群享受学习服务。


Power BI 终极系列课程《BI真经》


BI真经 - 让数据真正成为你的力量

扫码与精英一起讨论 Power BI,验证码:data2021

点击“阅读原文”进入学习中心


浏览 43
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报