【问题标题】:How to identify records which have clusters or lumps in data?如何识别数据中具有集群或块的记录?
【发布时间】:2019-09-26 17:33:14
【问题描述】:

我有一个如下的表格:

这个数据可视化如下:

我想标记有块状/簇状的病例。这将标记项目 B、C 和 D,因为仅在 13 周中的某些周内出现峰值。项目 A 和 E 不会被标记,因为它们大多具有“平面”配置文件。

如何在 Tableau 或 SQL 中创建这样的标志来隔离这种情况?

到目前为止我尝试了什么?: 我尝试了一个逻辑,我为每个项目计算 MAX 和 MEDIAN。需要标记的项目将具有比具有相当“平坦”配置文件的项目更大的 (MAX - MEDIAN) 值。

如果有更好的方法来创建这个标志,请告诉我。

谢谢!

【问题讨论】:

  • 异常检测是一个广泛的主题。除非您有特定要求,否则这太宽泛了,很可能不适合 SQL。
  • 您需要在“块”周围放置一些指标。 E也有肿块。
  • 如果一个产品连续销售了 10, 9, 8, 7, 6, 5, 4, 3 等周,那是一个块吗?它是图表上的一条直线,但值变化很大。即,您是在寻找价值的变化,还是价值的急剧变化(拐角)?
  • 以后,请在表格中提供数据,这样我们就不必重新输入数据来帮助您回答问题。谢谢!

标签: sql sql-server tableau-api


【解决方案1】:

同意其他评论者的观点,即可以通过多种不同方式回答这个问题,您可能需要统计学博士学位才​​能得出理想的答案。但是,鉴于您的基本要求,这可能是您可以实施的最简单/最简单的解决方案。

这是我为到达这里所做的:

  1. 创建一个参数来定义您的“尖峰”。如果它始终是一个固定数字,您可以在公式中对其进行硬编码。我将 min 称为“最小峰值”。

  2. 为每个存储桶中的中值创建一个公式。 {fixed [Buckets]: MEDIAN([Values])} 。 (A,B,... E =“桶”)。这为您可以比较的每个字母/桶提供了一个值。

  3. 创建一个公式来计算每个数字与中位数的差值。 abs(sum([Values])-sum([Median Values]))。我们在这里使用绝对值,因为尖峰可以是负数也可以是正数(同样,如果您想以这种方式定义它......)。我称之为“峰值到当前值的绝对差异”

  4. 创建一个计算字段,计算结果为布尔值,以查看当前值是否高于峰值阈值。 [Spike to Current Value abs difference] > min([Min Spike Value])

设置您的可视化项以使用此布尔值突出显示尖峰。该参数的美妙之处在于您可以更改尖峰的值,它会相应地突出显示。上面的值是4,但是如果你把它改成8:

【讨论】:

    猜你喜欢
    • 2016-09-24
    • 1970-01-01
    • 2016-10-19
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多