| acmcp | R Documentation |
Compute prediction intervals and other information by applying the Autocorrelated Multistep-ahead Conformal Prediction (AcMCP) method. The method can only deal with asymmetric nonconformity scores, i.e., forecast errors.
acmcp(
object,
alpha = 1 - 0.01 * object$level,
ncal = 10,
rolling = FALSE,
integrate = TRUE,
scorecast = TRUE,
lr = 0.1,
Tg = NROW(object$ERROR),
delta = 0.01,
Csat = NULL,
KI = max(abs(object$ERROR), na.rm = TRUE),
update = FALSE,
ma_method = c("CSS-ML", "CSS"),
...
)
object |
An object of class |
alpha |
A numeric vector of significance levels to achieve a desired
coverage level |
ncal |
Length of the burn-in period for training the scorecaster.
If |
rolling |
If |
integrate |
If |
scorecast |
If |
lr |
A positive initial learning rate used for quantile tracking.
Defaults to |
Tg |
The time that is set to achieve the target absolute coverage
guarantee before this. It must be greater than 1 when |
delta |
A number in |
Csat |
A positive constant ensuring that by time |
KI |
A non-negative constant to place the integrator on the same scale
as the scores. Defaults to |
update |
If |
ma_method |
Estimation method for the MA |
... |
Not used. |
Similar to the PID method, the AcMCP method also integrates three modules
(P, I, and D) to form the final iteration. However, instead of performing
conformal prediction for each individual forecast horizon h
separately, AcMCP employs a combination of an MA(h-1) model and a
linear regression model of e_{t+h|t} on
e_{t+h-1|t},\dots,e_{t+1|t} as the scorecaster. This allows the AcMCP
method to capture the relationship between the h-step-ahead forecast
error and the past errors.
Scorecasts are constructed recursively, so longer forecast horizons require
more history before all scorecaster inputs are available. For horizon
h, the first scorecast can be computed at cross-validation error index
ncal + h(h-1)/2. The number of successful scorecasts is
reported in scorecast_times.
A list of class
c("acmcp", "cpforecast", "cvforecast", "forecast") with the
following components:
x |
The original time series. |
series |
The name of the series |
xreg |
Exogenous predictor variables used, if applicable. |
method |
A character string "acmcp". |
cp_times |
An integer vector giving the number of conformal predictions performed in cross-validation for each forecast horizon. |
scorecast_times |
An integer vector giving the number of successful
scorecasts for each forecast horizon. Returned when
|
MEAN |
Point forecasts as a multivariate time series, where the
|
ERROR |
Forecast errors given by
|
LOWER |
A list containing lower bounds for prediction intervals for
each |
UPPER |
A list containing upper bounds for prediction intervals for
each |
level |
The confidence values associated with the prediction intervals. |
call |
The matched call. |
model |
A list containing information about the conformal prediction
model: the resolved arguments in |
If mean is included in the object, the components
mean, lower, and upper will also be returned, showing
the information about the test set forecasts generated using all
available observations.
Wang, X., and Hyndman, R. J. (2024). "Online conformal inference for multi-step time series forecasting", arXiv preprint arXiv:2410.13115.
cvforecast to produce object, and
update.cpforecast to extend the results with new
observations.
Other conformal prediction methods:
acp(),
conformal(),
pid(),
scp()
# Simulate time series from an AR(2) model
library(forecast)
set.seed(1)
series <- arima.sim(n = 200, list(ar = c(0.8, -0.5)), sd = sqrt(1))
# Cross-validation forecasting
far2 <- function(x, h, level) {
Arima(x, order = c(2, 0, 0)) |>
forecast(h = h, level)
}
fc <- cvforecast(series, forecastfun = far2, h = 3, level = 95, window = 50)
# AcMCP setup
Tg <- 200; delta <- 0.01
Csat <- 2 / pi * (ceiling(log(Tg) * delta) - 1 / log(Tg))
KI <- 2
# AcMCP with integrator and scorecaster
acmcpfc <- acmcp(fc, ncal = 50, rolling = TRUE, KI = KI, Csat = Csat)
print(acmcpfc)
summary(acmcpfc)
acmcpfc$scorecast_times
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.