本地英文版地址: ../en/search-aggregations-pipeline-serialdiff-aggregation.html
序列差分是一种技术,时间序列中的值在不同的时间延迟或周期中被减去。 例如,数据点 f(x) = f(xt) - f(xt-n),其中n是使用的周期。
周期为1相当于没有时间归一化的导数:它只是从一个点到下一个点的变化。 单周期对于去除固定值的线性趋势很有用。
单周期对于将数据转换为平稳序列也很有用。 在这个例子中,道琼斯指数(Dow Jones)是在大约250天内绘制的。 原始数据不是固定的,这使得一些技术很难使用。
通过计算第一差值,我们对数据进行去趋势化处理(例如,去除一个固定值的线性趋势)。 我们可以看到,数据变成了一个平稳的序列(例如,第一个差异随机分布在零附近,似乎没有表现出任何模式/行为)。 这个转换显示出数据集呈随机游走分布状态; 该值是前一个值+/-一个随机量。 这种洞察力允许选择进一步的分析工具。
更长的周期可用于移除季节性/周期性行为。 在这个例子中,一群旅鼠是用正弦波+固定线性趋势+随机噪声合成生成的。 正弦波的周期为30天。
第一个差异去除了固定趋势,只留下一个正弦波。 然后将第30次差应用于第1次差,以消除循环行为,留下一个可用于其他分析的平稳序列。
一个单独的serial_diff
看起来像这样:
{ "serial_diff": { "buckets_path": "the_sum", "lag": "7" } }
表 29. serial_diff
参数
参数名称 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
|
感兴趣的度量的路径 (更多详情请参考 |
必需 |
|
|
要从当前值中减去的历史桶。 例如,滞后7将从7个桶之前的值中减去当前值。 必须是非零正整数 |
可选 |
|
|
确定当遇到数据中的间隙时应该发生什么。 |
可选 |
|
|
应用于此聚合的输出值的格式 |
可选 |
|
serial_diff
聚合必须嵌入一个histogram
或date_histogram
聚合中:
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 } } } } } }
一个名为“my_date_histo”的 |
|
|
|
最后,我们指定一个 |
序列差分的构建,首先要指定一个字段的histogram
或date_histogram
聚合。
然后,你可以选择在那个直方图中添加普通的度量,如sum
。
最后,serial_diff
被嵌入直方图中。
然后,buckets_path
参数用于“指向”直方图内的一个同级度量(有关buckets_path
语法的描述,请参见buckets_path
语法)。