The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Type: Package
Title: Corbae-Ouliaris Frequency Domain Filtering
Version: 0.1.5
Maintainer: Christos Adam <econp266@econ.soc.uoc.gr>
Description: Corbae-Ouliaris frequency domain filtering. According to Corbae and Ouliaris (2006) <doi:10.1017/CBO9781139164863.008>, this is a solution for extracting cycles from time series, like business cycles etc. when filtering. This method is valid for both stationary and non-stationary time series.
License: GPL-3
Encoding: UTF-8
URL: https://github.com/cadam00/corbouli, https://cadam00.github.io/corbouli/
BugReports: https://github.com/cadam00/corbouli/issues
LazyData: true
Imports: stats
Suggests: Rfast, Rfast2, knitr, rmarkdown, testthat (≥ 3.0.0)
VignetteBuilder: knitr, rmarkdown
Config/testthat/edition: 3
NeedsCompilation: no
Packaged: 2025-06-03 08:39:03 UTC; Administrator
Author: Christos Adam ORCID iD [aut, cre]
Repository: CRAN
Date/Publication: 2025-06-03 08:50:02 UTC

USgdp

Description

Quarterly US GDP in billions of chained 2017 dollars (Seasonally adjusted) series from 1947.1 to 2019.4.

number of observations : 292

observation : country

country : United States

Usage

data(USgdp)

Format

A monthly time series, in billions of chained 2017 dollars.

Value

A ts object.

Source

Bureau of Economic Analysis.

References

U.S. Bureau of Economic Analysis. (2024). Current-dollar and “real” GDP. Retrieved from BEA website. https://www.bea.gov/

Examples

# Apply on vector
data(USgdp)
USgdp

Corbae-Ouliaris

Description

Corbae-Ouliaris (2006) Frequency Domain Filter

Usage

corbae_ouliaris(x, low_freq = NULL, high_freq = NULL)

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 into 2 / high_freq. The default is NULL, meaning that the ifelse(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 into 2 / low_freq. The default is NULL, meaning that the trunc(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.

Value

Filtered object with the same length/dimensions and class as the input x.

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.

See Also

dftse

Examples

# Apply on ts
data(USgdp)
res <- corbae_ouliaris(USgdp, low_freq = 0.0625, high_freq = 0.3333)
head(res)

# Apply on vector
data(USgdp)
res <- corbae_ouliaris(USgdp, low_freq = 0.0625, high_freq = 0.3333)
head(res)

# Apply on matrix per column
mat <- matrix(USgdp, ncol = 4)
res <- corbae_ouliaris(mat, low_freq = 0.0625, high_freq = 0.3333)
head(res)

# 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)

Remove irrelevant frequencies

Description

Remove irrelevant frequencies

Usage

dftse(x, low_freq = NULL, high_freq = NULL)

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 into 2 / high_freq. The default is NULL, meaning that the ifelse(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 into 2 / low_freq. The default is NULL, meaning that the trunc(freq * 8) will be used.

Details

This is a pure R implementation of removing the irrelevant frequencies. First, DFT is applied on the data and this result is filtered according to low_freq and high_freq. Finally, an inverse DFT is performed on these relevant frequencies. Both low_freq and high_freq must be 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, this transformation is applied per column.

Value

Filtered object with length/dimensions same with the input x. Note that for inputs with dimensions (e.g. matrix, data.frame) a matrix object will be returned.

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.

See Also

corbae_ouliaris

Examples

# Apply on ts object
data(USgdp)
res <- dftse(USgdp, low_freq = 0.0625, high_freq = 0.3333)
head(res)

# Apply on vector
res <- dftse(c(USgdp), low_freq = 0.0625, high_freq = 0.3333)
head(res)

# Apply on matrix per column
mat <- matrix(USgdp, ncol = 4)
res <- dftse(mat, low_freq = 0.0625, high_freq = 0.3333)
head(res)

# Apply on data.frame per column
dfmat <- as.data.frame(mat)
res <- dftse(dfmat, low_freq = 0.0625, high_freq = 0.3333)
head(res)

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.