HamiltonFilter.filter#

HamiltonFilter.filter(data)[source]#

Filter a panel, one regression per column.

Each column is regressed on its own lags only; a one-dimensional series is treated as a one-column panel. The regression needs more observations than horizon + 2 lags, so that at least one degree of freedom remains.

Parameters:

data (ArrayLike) – A (nobs, k) panel or one-dimensional series.

Return type:

DecompositionFilterResult

Returns:

The DecompositionFilterResult, horizon + lags - 1 rows shorter than the input, with no row provisional.

Raises:

Example

>>> rng = np.random.default_rng(0)
>>> panel = np.cumsum(rng.standard_normal((300, 2)), axis=0)
>>> res = HamiltonFilter(horizon=24, lags=12).filter(panel)
>>> res.n_series, res.offset, res.trend.shape, bool(res.provisional.any())
(2, 35, (265, 2), False)
>>> HamiltonFilter().filter(panel[:16, 0])
Traceback (most recent call last):
    ...
cultivars.exceptions.NumericalError: the Hamilton regression needs more than 16 ...