Corbae-Ouliaris
corbae_ouliaris.Rd
Corbae-Ouliaris (2006) Frequency Domain Filter
Arguments
- x
Vector,
data.frame
,matrix
or any similar 1D/2D object containing values for filtering.- low_freq
Number indicating the lowest period of oscillation as fractions of \(\pi\). If
low_freq > 1
, indicating that the direct frequency of the data is provided, this is transformed internally into2 / high_freq
. The default is NULL, meaning that theifelse(freq > 1, trunc(freq * 1.5), 2)
will be used.- high_freq
Number indicating the highest period of oscillation as radians of \(\pi\). If
high_freq > 1
, indicating that the direct frequency of the data is provided, this is transformed internally into2 / low_freq
. The default is NULL, meaning that thetrunc(freq * 8)
will be used.
Details
This is a pure R implementation of the filtering algorithm. low_freq
and
high_freq
are connected with characteristics of the series, for example
the business circle. low_freq
and high_freq
must be both either
between 0 and 1, meaning that they are frequencies of the period as radians, or
both >1, indicating that both are starting and ending periods of the cycle.
low_freq
and high_freq
are used for keeping the relevant
frequencies. These are meant to be the ones inside the range
\([ low \_ freq, high \_ freq ]\). Therefore, values outside this range are
removed.
For 2-dimensional objects x
, filtering per column is applied.
References
Corbae, D., Ouliaris, S., & Phillips, P. (2002), Band Spectral Regression with Trending-Data. Econometrica 70(3), pp. 1067-1109.
Corbae, D. & Ouliaris, S. (2006), Extracting Cycles from Nonstationary Data, in Corbae D., Durlauf S.N., & Hansen B.E. (eds.). Econometric Theory and Practice: Frontiers of Analysis and Applied Research. Cambridge: Cambridge University Press, pp. 167–177. doi:10.1017/CBO9781139164863.008 .
Shaw, E.S. (1947), Burns and Mitchell on Business Cycles. Journal of Political Economy, 55(4): pp. 281-298. doi:10.1086/256533 .
Examples
# Apply on ts
data(USgdp)
res <- corbae_ouliaris(USgdp, low_freq = 0.0625, high_freq = 0.3333)
head(res)
#> [1] 220.437445 122.214673 33.554008 -3.624313 10.611337 39.376810
# Apply on vector
data(USgdp)
res <- corbae_ouliaris(USgdp, low_freq = 0.0625, high_freq = 0.3333)
head(res)
#> [1] 220.437445 122.214673 33.554008 -3.624313 10.611337 39.376810
# Apply on matrix per column
mat <- matrix(USgdp, ncol = 4)
res <- corbae_ouliaris(mat, low_freq = 0.0625, high_freq = 0.3333)
head(res)
#> [,1] [,2] [,3] [,4]
#> [1,] 122.74643 -147.02035 -113.696760 37.14300
#> [2,] 121.75519 -139.93212 1.967257 40.79558
#> [3,] 104.71525 -114.29315 90.769600 -27.41276
#> [4,] 81.59822 -71.11876 117.136438 -129.43620
#> [5,] 61.87092 -26.92243 84.482012 -212.27882
#> [6,] 46.35087 -1.33427 27.081152 -240.99583
# Apply on data.frame per column
dfmat <- as.data.frame(mat)
res <- corbae_ouliaris(dfmat, low_freq = 0.0625, high_freq = 0.3333)
head(res)
#> V1 V2 V3 V4
#> 1 122.74643 -147.02035 -113.696760 37.14300
#> 2 121.75519 -139.93212 1.967257 40.79558
#> 3 104.71525 -114.29315 90.769600 -27.41276
#> 4 81.59822 -71.11876 117.136438 -129.43620
#> 5 61.87092 -26.92243 84.482012 -212.27882
#> 6 46.35087 -1.33427 27.081152 -240.99583