View source: R/reconc_MixCond.R
reconc_MixCond | R Documentation |
Uses importance sampling to draw samples from the reconciled forecast distribution, obtained via conditioning, in the case of a mixed hierarchy.
reconc_MixCond(
A,
fc_bottom,
fc_upper,
bottom_in_type = "pmf",
distr = NULL,
num_samples = 20000,
return_type = "pmf",
suppress_warnings = FALSE,
seed = NULL
)
A |
Aggregation matrix (n_upper x n_bottom). |
fc_bottom |
A list containing the bottom base forecasts, see details. |
fc_upper |
A list containing the upper base forecasts, see details. |
bottom_in_type |
A string with three possible values:
|
distr |
A string describing the type of bottom base forecasts ('poisson' or 'nbinom'). This is only used if |
num_samples |
Number of samples drawn from the reconciled distribution.
This is ignored if |
return_type |
The return type of the reconciled distributions. A string with three possible values:
|
suppress_warnings |
Logical. If |
seed |
Seed for reproducibility. |
The base bottom forecasts fc_bottom
must be a list of length n_bottom, where each element is either
a PMF object (see details below), if bottom_in_type='pmf'
;
a vector of samples, if bottom_in_type='samples'
;
a list of parameters, if bottom_in_type='params'
:
lambda for the Poisson base forecast if distr
='poisson', see Poisson;
size and prob (or mu) for the negative binomial base forecast if distr
='nbinom',
see NegBinomial.
The base upper forecasts fc_upper
must be a list containing the parameters of
the multivariate Gaussian distribution of the upper forecasts.
The list must contain only the named elements mu
(vector of length n_upper)
and Sigma
(n_upper x n_upper matrix).
The order of the upper and bottom base forecasts must match the order of (respectively) the rows and the columns of A.
A PMF object is a numerical vector containing the probability mass function of a discrete distribution. Each element corresponds to the probability of the integers from 0 to the last value of the support. See also PMF.get_mean, PMF.get_var, PMF.sample, PMF.get_quantile, PMF.summary for functions that handle PMF objects.
Warnings are triggered from the Importance Sampling step if:
weights are all zeros, then the upper forecast is ignored during reconciliation;
the effective sample size is < 200;
the effective sample size is < 1% of the sample size.
Note that warnings are an indication that the base forecasts might have issues. Please check the base forecasts in case of warnings.
A list containing the reconciled forecasts. The list has the following named elements:
bottom_reconciled
: a list containing the pmf, the samples (matrix n_bottom x num_samples
) or both,
depending on the value of return_type
;
upper_reconciled
: a list containing the pmf, the samples (matrix n_upper x num_samples
) or both,
depending on the value of return_type
.
Zambon, L., Azzimonti, D., Rubattu, N., Corani, G. (2024). Probabilistic reconciliation of mixed-type hierarchical time series. The 40th Conference on Uncertainty in Artificial Intelligence, accepted.
reconc_TDcond()
, reconc_BUIS()
library(bayesRecon)
# Consider a simple hierarchy with two bottom and one upper
A <- matrix(c(1,1),nrow=1)
# The bottom forecasts are Poisson with lambda=15
lambda <- 15
n_tot <- 60
fc_bottom <- list()
fc_bottom[[1]] <- apply(matrix(seq(0,n_tot)),MARGIN=1,FUN=function(x) dpois(x,lambda=lambda))
fc_bottom[[2]] <- apply(matrix(seq(0,n_tot)),MARGIN=1,FUN=function(x) dpois(x,lambda=lambda))
# The upper forecast is a Normal with mean 40 and std 5
fc_upper<- list(mu=40, Sigma=matrix(5^2))
# We can reconcile with reconc_MixCond
res.mixCond <- reconc_MixCond(A, fc_bottom, fc_upper)
# Note that the bottom distributions are slightly shifted to the right
PMF.summary(res.mixCond$bottom_reconciled$pmf[[1]])
PMF.summary(fc_bottom[[1]])
PMF.summary(res.mixCond$bottom_reconciled$pmf[[2]])
PMF.summary(fc_bottom[[2]])
# The upper distribution is slightly shifted to the left
PMF.summary(res.mixCond$upper_reconciled$pmf[[1]])
PMF.get_var(res.mixCond$upper_reconciled$pmf[[1]])
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.