Link Search Menu Expand Document Documentation Menu

中位绝对离差聚合

median_absolute_deviation 聚合是一种单值指标聚合。中位绝对离差是一种衡量与中位数的离散程度的变异性指标。

与标准差(其依赖于平方误差项)相比,中位绝对离差受异常值的影响较小,并且适用于描述非正态分布的数据。

中位绝对离差的计算如下:

median_absolute_deviation = median( | x<sub>i</sub> - median(x<sub>i</sub>) | )

OpenSearch 估算 median_absolute_deviation,而非直接计算,因为存在内存限制。此估算计算成本较高。您可以调整估算准确性和性能之间的权衡。有关更多信息,请参阅调整估算准确性

参数

median_absolute_deviation 聚合接受以下参数。

参数 必需/可选 数据类型 描述
field 必需 字符串 计算中位绝对离差的数值字段的名称。
missing 可选 数值 为字段的缺失实例分配的值。如果未提供,则包含缺失值的文档将从估算中省略。
compression 可选 数值 一个用于调整估算准确性和性能之间平衡的参数。compression 的值必须大于 0。默认值为 1000

示例

以下示例计算 opensearch_dashboards_sample_data_flights 数据集中 DistanceMiles 字段的中位绝对离差:

GET opensearch_dashboards_sample_data_flights/_search
{
  "size": 0,
  "aggs": {
    "median_absolute_deviation_DistanceMiles": {
      "median_absolute_deviation": {
        "field": "DistanceMiles"
      }
    }
  }
}

示例响应

如以下示例响应所示,聚合在 median_absolute_deviation_DistanceMiles 变量中返回中位绝对离差的估算值:

{
  "took": 490,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 10000,
      "relation": "gte"
    },
    "max_score": null,
    "hits": []
  },
  "aggregations": {
    "median_absolute_deviation_DistanceMiles": {
      "value": 1830.917892238693
    }
  }
}

缺失值

OpenSearch 在计算 median_absolute_deviation 时会忽略缺失值和空值。

您可以为聚合字段的缺失实例指定一个值。有关更多信息,请参阅缺失聚合

调整估算准确性

中位绝对离差是使用 t-digest 数据结构计算的,该结构接受一个 compression 参数来平衡性能和估算准确性。较低的 compression 值可提高性能,但可能会降低估算准确性,如以下请求所示:

GET opensearch_dashboards_sample_data_flights/_search
{
  "size": 0,
  "aggs": {
    "median_absolute_deviation_DistanceMiles": {
      "median_absolute_deviation": {
        "field": "DistanceMiles",
        "compression": 10
      }
    }
  }
}

估算误差取决于数据集,但即使 compression 值低至 100,通常也低于 5%。(此处使用示例低值 10 只是为了说明权衡效果,不建议使用。)

请注意,在以下响应中,计算时间(took 时间)减少,且估算参数的值略不准确。

作为参考,OpenSearch 对 DistanceMiles 的中位绝对离差的最佳估算(compression 设置为任意高值)为 1831.076904296875

{
  "took": 1,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 10000,
      "relation": "gte"
    },
    "max_score": null,
    "hits": []
  },
  "aggregations": {
    "median_absolute_deviation_DistanceMiles": {
      "value": 1836.265614211182
    }
  }
}
剩余 350 字符

有问题?

想要贡献?