序列差分聚合
编辑序列差分聚合
编辑序列差分是一种技术,其中时间序列中的值会在不同的时间滞后或周期内从自身中减去。例如,数据点 f(x) = f(xt) - f(xt-n),其中 n 是正在使用的周期。
周期为 1 等同于没有时间归一化的导数:它仅仅是从一个点到下一个点的变化。单个周期对于消除恒定、线性趋势很有用。
单个周期也用于将数据转换为平稳序列。在此示例中,道琼斯指数在约 250 天的时间内绘制。原始数据不是平稳的,这会使其难以使用某些技术。
通过计算一阶差分,我们可以消除数据的趋势(例如,消除恒定、线性趋势)。我们可以看到数据变成了一个平稳序列(例如,一阶差分随机分布在零附近,并且似乎没有表现出任何模式/行为)。这种转换揭示了数据集遵循随机游走;该值是前一个值 +/- 一个随机量。这种洞察力允许选择进一步的分析工具。
较大的周期可用于消除季节性/周期性行为。在此示例中,使用正弦波 + 恒定线性趋势 + 随机噪声合成生成了旅鼠种群。正弦波的周期为 30 天。
一阶差分消除了恒定的趋势,仅留下正弦波。然后将第 30 阶差分应用于一阶差分,以消除周期性行为,从而留下一个适合其他分析的平稳序列。
语法
编辑一个 serial_diff
聚合独立看起来像这样
{ "serial_diff": { "buckets_path": "the_sum", "lag": 7 } }
表 79. serial_diff
参数
参数名称 | 描述 | 必填 | 默认值 |
---|---|---|---|
|
感兴趣的指标的路径(有关详细信息,请参阅 |
必填 |
|
|
要从当前值中减去的历史桶。例如,滞后为 7 将从 7 个桶之前的值中减去当前值。必须是一个正的、非零整数 |
可选 |
|
|
确定遇到数据中的间隙时应发生的情况。 |
可选 |
|
|
输出值的 DecimalFormat 模式。如果指定,则格式化的值将返回在聚合的 |
可选 |
|
serial_diff
聚合必须嵌入在 histogram
或 date_histogram
聚合内
resp = client.search( size=0, aggs={ "my_date_histo": { "date_histogram": { "field": "timestamp", "calendar_interval": "day" }, "aggs": { "the_sum": { "sum": { "field": "lemmings" } }, "thirtieth_difference": { "serial_diff": { "buckets_path": "the_sum", "lag": 30 } } } } }, ) print(resp)
response = client.search( body: { size: 0, aggregations: { my_date_histo: { date_histogram: { field: 'timestamp', calendar_interval: 'day' }, aggregations: { the_sum: { sum: { field: 'lemmings' } }, thirtieth_difference: { serial_diff: { buckets_path: 'the_sum', lag: 30 } } } } } } ) puts response
const response = await client.search({ size: 0, aggs: { my_date_histo: { date_histogram: { field: "timestamp", calendar_interval: "day", }, aggs: { the_sum: { sum: { field: "lemmings", }, }, thirtieth_difference: { serial_diff: { buckets_path: "the_sum", lag: 30, }, }, }, }, }, }); console.log(response);
POST /_search { "size": 0, "aggs": { "my_date_histo": { "date_histogram": { "field": "timestamp", "calendar_interval": "day" }, "aggs": { "the_sum": { "sum": { "field": "lemmings" } }, "thirtieth_difference": { "serial_diff": { "buckets_path": "the_sum", "lag" : 30 } } } } } }
在 “timestamp” 字段上构造一个名为 “my_date_histo” 的 |
|
使用 |
|
最后,我们指定一个使用 “the_sum” 指标作为其输入的 |
通过首先在字段上指定 histogram
或 date_histogram
来构建序列差分。然后,您可以选择在直方图内部添加普通指标,例如 sum
。最后,将 serial_diff
嵌入到直方图内部。buckets_path
参数用于“指向”直方图内部的同级指标之一(有关 buckets_path
语法的描述,请参阅 buckets_path
语法)。