存储桶计数 K-S 测试相关性聚合

编辑

存储桶计数 K-S 测试相关性聚合编辑

一种兄弟管道聚合,它针对提供的分布以及由已配置兄弟聚合中的文档计数所暗示的分布执行双样本 Kolmogorov–Smirnov 测试(从现在起称为“K-S 测试”)。具体来说,对于某些指标,假设指标的百分位数区间是事先已知的或已通过聚合计算得出,则可以使用范围聚合作为兄弟聚合来计算指标与将该指标限制为文档子集之间的分布差异的 p 值。一个自然的用例是,如果兄弟聚合范围聚合嵌套在术语聚合中,在这种情况下,将指标的总体分布与其对每个术语的限制进行比较。

参数编辑

buckets_path
(必填,字符串)指向包含一组要关联的值的存储桶的路径。必须是 _count 路径。有关语法,请参阅 buckets_path 语法
alternative
(可选,列表)一个字符串值列表,指示要计算的 K-S 测试备择假设。有效值为:“greater”、“less”、“two_sided”。此参数是确定在计算 K-S 测试时使用的 K-S 统计量的关键。默认值为所有可能的备择假设。
fractions
(可选,列表)一个双精度值列表,指示要与 buckets_path 结果进行比较的样本分布。在典型用法中,这是每个存储桶中文档的总体比例,将其与来自兄弟聚合计数的每个存储桶中的实际文档比例进行比较。默认情况下,假设总体文档在这些存储桶上均匀分布,如果使用指标的相等百分位数来定义存储桶端点,则它们将是均匀分布的。
sampling_method
(可选,字符串)指示计算 K-S 测试时的抽样方法。请注意,这是对返回值的抽样。这决定了比较两个样本时使用的累积分布函数 (CDF) 点。默认值为 upper_tail,它强调 CDF 点的上端。有效选项包括:upper_tailuniformlower_tail

语法编辑

一个 bucket_count_ks_test 聚合在隔离时如下所示

{
  "bucket_count_ks_test": {
    "buckets_path": "range_values>_count", 
    "alternative": ["less", "greater", "two_sided"], 
    "sampling_method": "upper_tail" 
  }
}

包含要测试的值的存储桶。

要计算的备择假设。

K-S 统计量的抽样方法。

示例编辑

以下代码段针对均匀分布对字段 version 中的各个术语运行 bucket_count_ks_test。均匀分布反映了 latency 百分位数存储桶。未显示的是 latency 指标值的预先计算,这是利用 百分位数 聚合完成的。

此示例仅使用 latency 的十分位数。

POST correlate_latency/_search?size=0&filter_path=aggregations
{
  "aggs": {
    "buckets": {
      "terms": { 
        "field": "version",
        "size": 2
      },
      "aggs": {
        "latency_ranges": {
          "range": { 
            "field": "latency",
            "ranges": [
              { "to": 0 },
              { "from": 0, "to": 105 },
              { "from": 105, "to": 225 },
              { "from": 225, "to": 445 },
              { "from": 445, "to": 665 },
              { "from": 665, "to": 885 },
              { "from": 885, "to": 1115 },
              { "from": 1115, "to": 1335 },
              { "from": 1335, "to": 1555 },
              { "from": 1555, "to": 1775 },
              { "from": 1775 }
            ]
          }
        },
        "ks_test": { 
          "bucket_count_ks_test": {
            "buckets_path": "latency_ranges>_count",
            "alternative": ["less", "greater", "two_sided"]
          }
        }
      }
    }
  }
}

包含范围聚合和存储桶相关性聚合的术语存储桶。两者都用于计算术语值与延迟的相关性。

延迟字段上的范围聚合。这些范围是参考延迟字段的百分位数创建的。

存储桶计数 K-S 测试聚合,用于测试存储桶计数是否来自与 fractions 相同的分布;其中 fractions 是均匀分布。

以下可能是响应

{
  "aggregations" : {
    "buckets" : {
      "doc_count_error_upper_bound" : 0,
      "sum_other_doc_count" : 0,
      "buckets" : [
        {
          "key" : "1.0",
          "doc_count" : 100,
          "latency_ranges" : {
            "buckets" : [
              {
                "key" : "*-0.0",
                "to" : 0.0,
                "doc_count" : 0
              },
              {
                "key" : "0.0-105.0",
                "from" : 0.0,
                "to" : 105.0,
                "doc_count" : 1
              },
              {
                "key" : "105.0-225.0",
                "from" : 105.0,
                "to" : 225.0,
                "doc_count" : 9
              },
              {
                "key" : "225.0-445.0",
                "from" : 225.0,
                "to" : 445.0,
                "doc_count" : 0
              },
              {
                "key" : "445.0-665.0",
                "from" : 445.0,
                "to" : 665.0,
                "doc_count" : 0
              },
              {
                "key" : "665.0-885.0",
                "from" : 665.0,
                "to" : 885.0,
                "doc_count" : 0
              },
              {
                "key" : "885.0-1115.0",
                "from" : 885.0,
                "to" : 1115.0,
                "doc_count" : 10
              },
              {
                "key" : "1115.0-1335.0",
                "from" : 1115.0,
                "to" : 1335.0,
                "doc_count" : 20
              },
              {
                "key" : "1335.0-1555.0",
                "from" : 1335.0,
                "to" : 1555.0,
                "doc_count" : 20
              },
              {
                "key" : "1555.0-1775.0",
                "from" : 1555.0,
                "to" : 1775.0,
                "doc_count" : 20
              },
              {
                "key" : "1775.0-*",
                "from" : 1775.0,
                "doc_count" : 20
              }
            ]
          },
          "ks_test" : {
            "less" : 2.248673241788478E-4,
            "greater" : 1.0,
            "two_sided" : 5.791639181800257E-4
          }
        },
        {
          "key" : "2.0",
          "doc_count" : 100,
          "latency_ranges" : {
            "buckets" : [
              {
                "key" : "*-0.0",
                "to" : 0.0,
                "doc_count" : 0
              },
              {
                "key" : "0.0-105.0",
                "from" : 0.0,
                "to" : 105.0,
                "doc_count" : 19
              },
              {
                "key" : "105.0-225.0",
                "from" : 105.0,
                "to" : 225.0,
                "doc_count" : 11
              },
              {
                "key" : "225.0-445.0",
                "from" : 225.0,
                "to" : 445.0,
                "doc_count" : 20
              },
              {
                "key" : "445.0-665.0",
                "from" : 445.0,
                "to" : 665.0,
                "doc_count" : 20
              },
              {
                "key" : "665.0-885.0",
                "from" : 665.0,
                "to" : 885.0,
                "doc_count" : 20
              },
              {
                "key" : "885.0-1115.0",
                "from" : 885.0,
                "to" : 1115.0,
                "doc_count" : 10
              },
              {
                "key" : "1115.0-1335.0",
                "from" : 1115.0,
                "to" : 1335.0,
                "doc_count" : 0
              },
              {
                "key" : "1335.0-1555.0",
                "from" : 1335.0,
                "to" : 1555.0,
                "doc_count" : 0
              },
              {
                "key" : "1555.0-1775.0",
                "from" : 1555.0,
                "to" : 1775.0,
                "doc_count" : 0
              },
              {
                "key" : "1775.0-*",
                "from" : 1775.0,
                "doc_count" : 0
              }
            ]
          },
          "ks_test" : {
            "less" : 0.9642895789647244,
            "greater" : 4.58718174664754E-9,
            "two_sided" : 5.916656831139733E-9
          }
        }
      ]
    }
  }
}