pg_stl
Overview
| Package | Version | Category | License | Language |
|---|---|---|---|---|
pg_stl | 1.0.0 | TIME | PostgreSQL | C |
| ID | Extension | Bin | Lib | Load | Create | Trust | Reloc | Schema |
|---|---|---|---|---|---|---|---|---|
| 1130 | pg_stl | No | Yes | No | Yes | No | Yes | - |
| Related | timescaledb_toolkit timeseries timescaledb first_last_agg extra_window_functions quantile tdigest |
|---|
ACF, PACF, STL decomposition, and Holt-Winters forecasting.
Version
| Type | Repo | Version | PG Ver | Package | Deps |
|---|---|---|---|---|---|
| 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 | - |
Build
You can build the RPM / DEB packages for pg_stl using pig build:
Install
You can install pg_stl directly. First, make sure the PGDG and PIGSTY repositories are added and enabled:
Install the extension using pig or apt/yum/dnf:
Create Extension:
Usage
Sources: pg_ts_analysis README, SQL definitions, control file.
pg_stl provides time-series analysis functions for PostgreSQL: autocorrelation, partial autocorrelation, STL decomposition, and Holt-Winters forecasting. The upstream README and SQL definitions target PostgreSQL 16+.
Autocorrelation
acf_array(data double precision[], lags integer) returns autocorrelation values for lags 1..lags:
The README describes using peaks at lags such as 7, 14, and 21 as a signal for weekly seasonality. The function returns NULL when the series is too short, lags < 1, or lags >= n.
Partial Autocorrelation
pacf_array(data double precision[], lags integer) returns partial autocorrelation values using the Durbin-Levinson recursion:
Use PACF when you want the direct lag relationship after accounting for shorter lags.
STL Decomposition
stl_decompose decomposes a series into trend, seasonal, and residual arrays:
Signature from the SQL definition:
Use the convenience functions when only one component is needed:
Ordered Collection Helper
The SQL file also defines stl_collect_ordered(tbl regclass, val text, ord text) to collect a column into an ordered double precision[]:
Holt-Winters Forecasting
holt_winters_predict(seasonal_type text, period_length int, start_data_array real[]) forecasts one seasonal cycle ahead. seasonal_type is 'mult' for multiplicative seasonality or 'add' for additive seasonality:
The SQL implementation chooses smoothing coefficients automatically: first by 500 random initializations, then by refinement in 0.001 steps to minimize squared error. The helper holt_winters_mse(...) is present as the error-calculation routine used by the predictor.
Caveats
stl_decomposeexpects adouble precision[]with noNULLvalues.- The README states the series length must be at least
2 * period. seasonalmust be an odd integer greater than or equal to3.- Holt-Winters expects a
real[]input and supports only'mult'and'add'seasonal types.
Was this page helpful?
Thanks—your feedback helps us improve this page.
What got in the way? (optional)