Hodrick-Prescott filter
Parameters: | X : array-like
The 1d ndarray timeseries to filter of length (nobs,) or (nobs,1)
lamb : float
The Hodrick-Prescott smoothing parameter. A value of 1600 is
suggested for quarterly data. Ravn and Uhlig suggest using a value
of 6.25 (1600/4**4) for annual data and 129600 (1600*3**4) for monthly
data.
|
Returns: | cycle : array
The estimated cycle in the data given lamb.
trend : array
The estimated trend in the data given lamb.
|
Notes
The HP filter removes a smooth trend, T, from the data X. by solving
- min sum((X[t] - T[t])**2 + lamb*((T[t+1] - T[t]) - (T[t] - T[t-1]))**2)
- T t
Here we implemented the HP filter as a ridge-regression rule using
scipy.sparse. In this sense, the solution can be written as
T = inv(I - lamb*K’K)X
where I is a nobs x nobs identity matrix, and K is a (nobs-2) x nobs matrix
such that
K[i,j] = 1 if i == j or i == j + 2
K[i,j] = -2 if i == j + 1
K[i,j] = 0 otherwise
References
- Hodrick, R.J, and E. C. Prescott. 1980. “Postwar U.S. Business Cycles: An
- Empricial Investigation.” Carnegie Mellon University discussion
paper no. 451.
- Ravn, M.O and H. Uhlig. 2002. “Notes On Adjusted the Hodrick-Prescott
- Filter for the Frequency of Observations.” The Review of Economics and
Statistics, 84(2), 371-80.
Examples
>>> import statsmodels.api as sm
>>> dta = sm.datasets.macrodata.load()
>>> X = dta.data['realgdp']
>>> cycle, trend = sm.tsa.filters.hpfilter(X,1600)