pg_stl
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_stl | 1.0.0 | TIME | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 1130 | pg_stl | 否 | 是 | 否 | 是 | 否 | 是 | - |
| 相关扩展 | timescaledb_toolkit timeseries timescaledb first_last_agg extra_window_functions quantile tdigest |
|---|
ACF, PACF, STL decomposition, and Holt-Winters forecasting.
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.0.0 | 1817161514 | pg_stl | - |
| RPM | PIGSTY | 1.0.0 | 1817161514 | pg_stl_$v | - |
| DEB | PIGSTY | 1.0.0 | 1817161514 | postgresql-$v-pg-stl | - |
构建
您可以使用 pig build 命令构建 pg_stl 扩展的 RPM / DEB 包:
安装
您可以直接安装 pg_stl 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
使用 pig 或者是 apt/yum/dnf 安装扩展:
创建扩展:
用法
pg_stl 为 PostgreSQL 提供时间序列分析函数:自相关、偏自相关、STL 分解和 Holt-Winters 预测。上游 README 和 SQL 定义面向 PostgreSQL 16+。
自相关
acf_array(data double precision[], lags integer) 返回 lag 1..lags 的自相关值:
README 描述了如何把 7、14、21 等 lag 上的峰值作为周周期性的信号。当序列太短、lags < 1 或 lags >= n 时,该函数返回 NULL。
偏自相关
pacf_array(data double precision[], lags integer) 使用 Durbin-Levinson 递推返回偏自相关值:
当你想在扣除较短 lag 的影响后观察某个 lag 的直接关系时,可以使用 PACF。
STL 分解
stl_decompose 会把序列分解为 trend、seasonal 和 residual 三个数组:
SQL 定义中的函数签名为:
只需要单个分量时,可以使用便捷函数:
有序聚合辅助函数
SQL 文件还定义了 stl_collect_ordered(tbl regclass, val text, ord text),用于按顺序把某一列收集为 double precision[]:
Holt-Winters 预测
holt_winters_predict(seasonal_type text, period_length int, start_data_array real[]) 会向前预测一个季节周期。seasonal_type 为 'mult' 时表示乘法季节性,为 'add' 时表示加法季节性:
SQL 实现会自动选择平滑系数:先进行 500 次随机初始化,再以 0.001 步长细化搜索,以最小化平方误差。辅助函数 holt_winters_mse(...) 作为预测器使用的误差计算例程一并提供。
注意事项
stl_decompose需要一个不含NULL的double precision[]。- README 说明序列长度至少应为
2 * period。 seasonal必须是不小于3的奇数。- Holt-Winters 需要
real[]输入,并且只支持'mult'和'add'两种季节类型。