滑动窗口系列(m 系列)
对窗口内聚合计算,DolphinDB引入了 m 系列函数。m 系列函数对数据内的每个元素进行一次窗口计算,返回一个和原数据等长的结果。
m 系列函数介绍
参数
- X (Y) 是一个向量/矩阵/表/由等长向量组成的元组。其中,mmse, mslr 仅支持输入向量。
- window 是大于等于 2 的正整型或 DURATION 标量。表示滑动窗口的长度。注: 在流计算引擎中调用滑动窗口函数时,window 的上限为 102400。
- minPeriods 是一个正整数。为滑动窗口中最少包含的观测值数据。
根据 window 的取值,可以分为两类:
window 是正整数或 DURATION 类型-
单目:
-
双目:
窗口确定规则
m 系列函数,支持一个向前的窗口,即基于数据中的每个元素,向前选取 window 指定范围的窗口。
X 是普通向量/矩阵/表时此时表示以窗口内元素个数衡量的滑动窗口的长度。
注: 对于表,只有布尔类型和数值型的列参与计算。
m 系列函数(mrank, mcount 除外)提供了 minPeriods 参数,用于约束窗口的观测值。对于计算结果:
注:
- 如果没有指定 minPeriods,前(window - 1)个元素为 NULL;
- 如果指定了 minPeriods,前(minPeriods - 1)个元素为 NULL。
上图的对应代码,这里以 msum 为例:
X = 2 1 3 7 6 5 4 9 8 10
msum(X, 3);
//output: [ , , 6, 11, 16, 18, 15, 18, 21, 27]
X
是索引序列或索引矩阵时此时表示以时间衡量的滑动窗口的长度。若此时 window 是一个正整数,则默认将其视作和 X 中索引单位一致的量。
其滑动规则如下图:
上图的对应代码,这里以 msum 为例:
T = [2022.01.01, 2022.01.02, 2022.01.03, 2022.01.06, 2022.01.07, 2022.01.08, 2022.01.10, 2022.01.11]
X = 1..8
X1 = indexedSeries(T, X)
msum(X1, window=3d);
返回:
label | col0 |
---|---|
2022.01.01 | 1 |
2022.01.02 | 3 |
2022.01.03 | 6 |
2022.01.06 | 4 |
2022.01.07 | 9 |
2022.01.08 | 15 |
2022.01.10 | 13 |
2022.01.11 | 15 |