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:
- Returns:
The
DecompositionFilterResult,horizon + lags - 1rows shorter than the input, with no row provisional.- Raises:
DimensionError – If the panel is malformed.
NumericalError – If it is too short for the regression.
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 ...