Tableau中的“移动中位数”

时间:2015-03-05 05:46:57

标签: tableau median moving-average median-of-medians

设置:我有一堆不同年份建造的建筑物的能源使用数据。我想分析Tableau中构建的日期的能源使用情况。我最初的问题是样本中没有足够的建筑物每年都有一个强大的设置,结果输出显示出大量的噪音。分布是正确的,因为存在许多高异常值,但没有异常值接近0,所以我想使用中位数来减少少数(可能是错误的)高异常值的影响。

理想的解决方案:创建一个为期5年的#34;移动"或者"跑步"中位数,包括在给定年份的任一方向上两年内的所有建筑物,以便每组以年份为中心。

我在Tableau中尝试过:我想使用WINDOW_MEDIAN([ENERGY], - 2,2),但它是一个聚合函数。所以我尝试了WINDOW_MEDIAN(MEDIAN([ENERGY], - 2,2)。不幸的是,这给了我5个中位数的中位数(中位数中位数?!嘘!)。再次,我想要每个5年窗口中代表的所有单个建筑物(不是聚合中位数)的中位数。

有关如何做到这一点的任何想法?谢谢!

2 个答案:

答案 0 :(得分:1)

请允许我重新定义移动中位数。下面是来自 MatLab 的示例:

A = [4 8 6 -1 -2 -3 -1 3 4 5]; M = movmedian(A,3)

结果是 10 个中位数。

要在 Tableau 中获得相同的效果,您有 1-2 种解决方案:

  • MODEL_QUANTILE 带有一行,如果您的 x 轴是日期。
  • 如果您的 x 轴是一个度量,则您需要一个双轴图表,其中第二个可视化,移动中位数基于分箱的 x 轴。

佛朗哥

答案 1 :(得分:0)

定义表计算时,除了计算公式本身之外,还需要指定其他信息 - 告诉Tableau如何对结果集进行分区,遍历(地址)的维度以及顺序。

您可以在“使用计算”菜单下看到其中的一些选项,这通常是您所需要的,但更明确地通过编辑表格计算并为“跑步”选项选择“高级”。

您真正的问题是如何定义所需计算的详细程度。

根据定义,表计算对数据源返回到Tableau的聚合结果进行操作 - 与数据源执行的其他计算不同。这意味着,如果您希望计算表计算考虑数据集中每一行的中位数,那么Tableau必须以精细的粒度级别请求数据。您可以通过在视图中包含一些唯一标识数据中每一行的维度组合来实现这一点(想想主键)。这将扩展给Tableau的汇总结果,以获得中值计算所需的所有数据。

此时,您需要指定用于表格计算的相关,寻址和排序的维度,可能在上面提到的高级面板上。网上有一些很好的教程,但实验也是一位好老师。

您仍然需要围绕[ENERGY]的聚合函数,但由于每个数据行块应该只有行,因此聚合函数没有太大影响。我通常在这些情况下选择MIN(),但是当分区中只有一行时,MAX(),AVG(),MEDIAN()都会产生相同的效果。