设置:我有一堆不同年份建造的建筑的能源使用数据。我想分析一下在Tableau建造的日期的能源使用情况。我最初的问题是,样本中没有足够的建筑来为每年提供一个稳健的集合,由此产生的输出显示出大量的噪音。分布是向右倾斜的,因为有很多高异常值,但没有接近0的异常值,所以我想使用中值来减少少数(可能是错误的)高异常值的影响。
理想的解决方案:创建一个5年的"移动"或"运行"中位数,包括两年内给定年份任一方向的所有建筑,使每组以年份为中心。
我在Tableau中尝试的内容:我想使用WINDOW_MEDIAN([ENERGY],-2,2),但它是一个聚合函数。所以我尝试了WINDOW_MEDIAN(MEDIAN([能量],-2,2)。不幸的是,这给了我5个中位数(中位数?!Boo!)。同样,我希望在每个5年窗口中显示所有单个建筑的中位数(而不是聚合中位数)。
有什么想法吗?谢谢
允许我重新定义移动介质。下面是MatLab的一个例子:
A=[4 8 6-1-2-3-1 3 4 5];M=平均(A,3)
结果是10个中位数。
为了在Tableau中获得相同的结果,您有1-2个解决方案:
- 如果x轴是一个日期,则用一条线表示MODEL_QUANTILE
- 如果你的x轴是一个度量,你需要一个双轴图,其中第二个可视化,移动介质是基于装箱的x轴
Franco
在定义表计算时,需要指定计算公式本身之外的其他信息——告诉Tableau如何对结果集进行分区,遍历哪些维度(地址)以及按什么顺序。
您可以在"使用计算"菜单下看到其中一些选项,这通常是您所需要的,但更明确地说,可以通过编辑表计算并选择"高级"作为"运行"选项。
您真正的问题是定义所需计算的详细程度。
根据定义,表计算对数据源返回给Tableau的聚合结果进行操作,这与数据源执行的其他计算不同。这意味着,如果您希望您的表计算考虑到数据集中的每一行来计算中值,那么Tableau必须以精细的粒度级别请求数据。您可以通过在视图中包含一些维度组合来实现这一点,这些维度组合唯一地标识数据中的每一行(想想主键)。这将扩展提供给Tableau的汇总结果,以获得中值计算所需的所有数据。
在这一点上,您将需要指定用于表计算的关联、寻址和排序的维度,可能是在上面提到的高级面板上。网上有一些很好的教程,但实验也是一个很好的老师。
您仍然需要一个围绕[ENERGY]的聚合函数,但由于每个数据行块应该只有一行,因此聚合函数没有太大作用。在这种情况下,我通常选择MIN(),但当分区中只有一行时,MAX()、AVG()、MEDIAN()都有相同的效果。