跳到主要内容
跳到主要内容

时间序列分析的函数

以下函数用于序列数据分析。

seriesOutliersDetectTukey

使用 Tukey Fences 检测序列数据中的异常值。

语法

seriesOutliersDetectTukey(series);
seriesOutliersDetectTukey(series, min_percentile, max_percentile, K);

参数

  • series - 数值数组。
  • min_percentile - 用于计算四分位距 (IQR) 的最小百分位数。值必须在 [0.02,0.98] 范围内。默认值为 0.25。
  • max_percentile - 用于计算四分位距 (IQR) 的最大百分位数。值必须在 [0.02,0.98] 范围内。默认值为 0.75。
  • K - 检测轻微或更强异常值的非负常数值。默认值为 1.5。

series 中至少需要四个数据点以检测异常值。

返回值

  • 返回一个与输入数组长度相同的数组,其中每个值代表系列中相应元素的可能异常分数。非零分数表示可能存在异常。 Array

示例

查询:

SELECT seriesOutliersDetectTukey([-3, 2, 15, 3, 5, 6, 4, 5, 12, 45, 12, 3, 3, 4, 5, 6]) AS print_0;

结果:

┌───────────print_0─────────────────┐
│[0,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0] │
└───────────────────────────────────┘

查询:

SELECT seriesOutliersDetectTukey([-3, 2, 15, 3, 5, 6, 4.50, 5, 12, 45, 12, 3.40, 3, 4, 5, 6], 0.2, 0.8, 1.5) AS print_0;

结果:

┌─print_0──────────────────────────────┐
│ [0,0,0,0,0,0,0,0,0,19.5,0,0,0,0,0,0] │
└──────────────────────────────────────┘

seriesPeriodDetectFFT

使用FFT - 快速傅里叶变换 找到给定序列数据的周期。

语法

seriesPeriodDetectFFT(series);

参数

  • series - 数值数组。

返回值

  • 返回与序列数据周期相等的实值。当数据点数少于四个时返回 NaN。 Float64

示例

查询:

SELECT seriesPeriodDetectFFT([1, 4, 6, 1, 4, 6, 1, 4, 6, 1, 4, 6, 1, 4, 6, 1, 4, 6, 1, 4, 6]) AS print_0;

结果:

┌───────────print_0──────┐
│                      3 │
└────────────────────────┘
SELECT seriesPeriodDetectFFT(arrayMap(x -> abs((x % 6) - 3), range(1000))) AS print_0;

结果:

┌─print_0─┐
│       6 │
└─────────┘

seriesDecomposeSTL

使用 STL (基于 Loess 的季节性-趋势分解程序) 对序列数据进行分解,得到季节成分、趋势成分和残差成分。

语法

seriesDecomposeSTL(series, period);

参数

  • series - 数值数组。
  • period - 正整数。

series 中的数据点数应至少是 period 值的两倍。

返回值

  • 返回四个数组的数组,其中第一个数组包含季节成分,第二个数组 - 趋势,第三个数组 - 残差成分,第四个数组 - 基线(季节 + 趋势)成分。 Array

示例

查询:

SELECT seriesDecomposeSTL([10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34], 3) AS print_0;

结果:

┌───────────print_0──────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [[
        -13.529999, -3.1799996, 16.71,      -13.53,     -3.1799996, 16.71,      -13.53,     -3.1799996,
        16.71,      -13.530001, -3.18,      16.710001,  -13.530001, -3.1800003, 16.710001,  -13.530001,
        -3.1800003, 16.710001,  -13.530001, -3.1799994, 16.71,      -13.529999, -3.1799994, 16.709997
    ],
    [
        23.63,     23.63,     23.630003, 23.630001, 23.630001, 23.630001, 23.630001, 23.630001,
        23.630001, 23.630001, 23.630001, 23.63,     23.630001, 23.630001, 23.63,     23.630001,
        23.630001, 23.63,     23.630001, 23.630001, 23.630001, 23.630001, 23.630001, 23.630003
    ],
    [
        0, 0.0000019073486, -0.0000019073486, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.0000019073486, 0,
        0
    ],
    [
        10.1, 20.449999, 40.340004, 10.100001, 20.45, 40.34, 10.100001, 20.45, 40.34, 10.1, 20.45, 40.34,
        10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.100002, 20.45, 40.34
    ]]                                                                                                                   │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘