1

设置:我有一堆建于不同年份的建筑物的能源使用数据。我想按 Tableau 中构建的日期分析能源使用情况。我最初的问题是样本中没有足够的建筑物来为每年设置一个健壮的集合,由此产生的输出显示出大量的噪音。分布向右倾斜,因为有许多高异常值,但没有接近 0 的异常值,所以我想使用中值来减少少数(并且可能是错误的)高异常值的影响。

期望的解决方案:创建一个 5 年的“移动”或“运行”中位数,其中包括给定年份任一方向两年内的所有建筑物,以便每组都以年份为中心。

我在 Tableau 中尝试过的内容:我想使用 WINDOW_MEDIAN([ENERGY],-2,2),但它是一个聚合函数。所以我尝试了 WINDOW_MEDIAN(MEDIAN([ENERGY],-2,2)。不幸的是,这给了我 5 个中位数的中位数(Median-of-Medians?!嘘!)。同样,我希望中位数为每个 5 年窗口中显示的所有单个建筑物(非汇总中位数)。

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

4

2 回答 2

1

请允许我重新定义移动中位数。下面是 MatLab 的一个例子:

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

结果是 10 个中位数。

为了在 Tableau 中获得相同的结果,您有 1-2 个解决方案:

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

佛朗哥

于 2021-02-19T07:21:13.360 回答
0

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

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

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

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

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

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

于 2015-03-05T17:50:45.610 回答