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.
trendseries provides a unified interface to extract
trends, cycles, and seasonal components from time series. Most filtering
methods in R are designed for ts objects, but datasets
typically come in a data.frame format with a date column,
which makes applying filters cumbersome. trendseries
bridges this gap: augment_trends(),
decompose_series(), deseason_series(), and
detrend_series() all work directly on
data.frame/tibble objects, while
extract_trends() provides the same methods for
ts/xts/zoo objects when you need
to stay in native time-series format.
trendseries is available on CRAN
install.packages("trendseries")You can install the development version of trendseries from GitHub.
# install.packages("remotes")
remotes::install_github("viniciusoike/trendseries")The package provides four main functions for
data.frame/tibble/data.table
workflows:
augment_trends(): adds trend columns
to the original dataset.decompose_series(): splits a series
into trend, seasonal, and remainder components.deseason_series(): wraps
decompose_series() to return a seasonally adjusted
series.detrend_series(): wraps
augment_trends() to return the deviation from trend (the
cycle).Each has a ts/xts/zoo-native
counterpart via extract_trends(), for
workflows that stay in native time-series format.
Time series have a specific structure in R (ts) and most
filtering methods are designed for ts objects. However,
datasets typically come in a data.frame format with a date
column, which can make applying filters cumbersome.
trendseries aims to make this process easy and flexible.
The example below computes three filters (HP, STL, and moving average)
on a quarterly index of construction activity. Note that the
augment_trends() function automatically detects the
frequency of the data and uses conventional defaults for the HP
filter.
library(trendseries)
library(ggplot2)
data(gdp_construction)
# Computes multiple trends at once
series <- gdp_construction |>
# Automatically detects frequency
# Trends are added as new columns to the original dataset
augment_trends(
value_col = "index",
methods = c("hp", "stl", "ma")
)
#> Auto-detected quarterly (4 obs/year)
#> Computing HP filter (two-sided) with lambda = 1600
#> Computing STL trend with s.window = periodic
#> Computing 2x4-period MA (auto-adjusted for even-window centering)
series
#> # A tibble: 124 × 5
#> date index trend_hp trend_stl trend_ma
#> <date> <dbl> <dbl> <dbl> <dbl>
#> 1 1995-01-01 100 101. 102. NA
#> 2 1995-04-01 100 101. 101. 99.7
#> 3 1995-07-01 100 102. 100. 99.6
#> 4 1995-10-01 100 103. 99.4 101.
#> 5 1996-01-01 97.8 103. 101. 102.
#> 6 1996-04-01 101. 104. 102. 103.
#> 7 1996-07-01 107. 104. 103. 104.
#> 8 1996-10-01 103. 105. 104. 106.
#> 9 1997-01-01 101. 106. 106. 109.
#> 10 1997-04-01 108. 106. 109. 111.
#> # ℹ 114 more rows
An equivalent extract_trends() function is also
available for ts objects.
stl_trend <- extract_trends(AirPassengers, methods = "stl")
#> Computing STL trend with s.window = periodic
plot.ts(AirPassengers)
lines(stl_trend, col = "#C53030")trendseries supports 20 trend estimation methods,
covering the most commonly used approaches in econometrics and
statistics. The Trend
Extraction Methods vignette describes each one — when to use it and
which parameters it takes.
| Method | Category | Description |
|---|---|---|
hp |
econometric | Hodrick-Prescott filter |
hamilton |
econometric | Hamilton regression filter |
bn |
econometric | Beveridge-Nelson decomposition |
ucm |
econometric | Unobserved components model |
bk |
bandpass | Baxter-King bandpass filter |
cf |
bandpass | Christiano-Fitzgerald bandpass filter |
ma |
moving average | Simple moving average |
wma |
moving average | Weighted moving average |
ewma |
moving average | Exponentially weighted moving average |
triangular |
moving average | Triangular moving average |
median |
moving average | Median filter |
gaussian |
moving average | Gaussian-weighted moving average |
spencer |
moving average | Spencer’s 15-term moving average |
henderson |
moving average | Henderson moving average |
stl |
smoothing | Seasonal-trend decomposition via Loess |
loess |
smoothing | Local polynomial regression |
spline |
smoothing | Smoothing splines |
poly |
smoothing | Polynomial trends |
kernel |
smoothing | Kernel smoother |
kalman |
smoothing | Kalman filter/smoother |
To split a series into trend, seasonal, and remainder components, use
decompose_series(). It supports STL, regression, classical
moving-average, Basic Structural Model (BSM), and X-13ARIMA-SEATS
decomposition:
gdp_construction |>
decompose_series(value_col = "index", methods = "stl")See the Decomposing Series vignette for details.
See the vignettes for detailed examples and usage patterns:
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.