中位绝对离差聚合
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
}
}
}