The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
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[@]metanet.ch.
A pure R implementation of CAMPLET, a transparent, adaptive seasonal adjustment method that corrects for seasonality and outliers via arithmetic-progression updates, without model identification or optimisation, and without revising earlier adjusted values when new observations arrive. The method is described in Abeln & Jacobs (2023), Seasonal Adjustment Without Revisions.
Ported from the original VBA macro
(D200603-CampletExcel-v4.2, basCBFherzien.bas)
and validated against its own output (see
tests/testthat/test-camplet.R). A Java port for JDemetra+
v3 lives at jdplus-camplet;
this package has no dependency on it or on Java.
install.packages("camplet")
# development version
# install.packages("remotes")
remotes::install_git("https://gitrepo.service.rug.nl/team-data-science/camplet-r.git")library(camplet)
res <- camplet(AirPassengers)
res$accuracy
head(as.data.frame(res))camplet() is univariate: one series in, one result out.
To adjust many series, loop over them yourself
(e.g. lapply()/purrr::map() over a list of
series, or dplyr::group_by() |> group_modify() on a long
data frame) - the same way you would with seasonal::seas()
or stats::stl().
The returned object’s $data has
raw/sa/seasonal columns;
$diagnostics (or
as.data.frame(res, diagnostics = TRUE), the default) adds
the per-period adaptive-parameter trace that the original VBA tool wrote
to its “Adj_” worksheets (ca, mu,
pa, le, ti, expo_e,
abs_pct_e, years, weight,
growth).
CAMPLET reads observations by position: the k-th value is taken to be
the period after the (k-1)-th. A skipped period therefore shifts every
later observation into the wrong season while still producing
plausible-looking output. To catch this, camplet():
x contains NA,
NaN or Inf (fill or trim the gaps first);dates has duplicated,
out-of-order or irregularly spaced timestamps, e.g. a missing
month;periodicity
contradicts monthly or quarterly data,
e.g. camplet(AirPassengers, periodicity = 4).A plain numeric vector without dates can’t be checked,
so making sure it has no gaps is up to you. See ?camplet,
section “Input checks”.
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.