BGWeights | R Documentation |
Compute empirical weights based on out of sample forecast variances, following Bates and Granger (1969).
BGWeights(object, ..., data, force.update = FALSE)
object , ... |
two or more fitted |
data |
a data frame containing the variables in the model. |
force.update |
if |
Bates-Granger model weights are calculated using prediction covariance. To
get the estimate of prediction covariance, the models are fitted to
randomly selected half of data
and prediction is done on the
remaining half.
These predictions are then used to compute the variance-covariance between
models, \Sigma
. Model weights are then calculated as
\myequationw_BG = (1' \Sigma^-1 1)^-1 1 \Sigma^-1
w_BG = (1' \Sigma^-1 1)^-1 1 \Sigma^-1
w_BG = (1' Sigma^-1 1)^-1 1 \ Sigma^-1,
where 1
a vector of 1-s.
Bates-Granger model weights may be outside of the [0,1]
range, which
may cause the averaged variances to be negative. Apparently this method
works best when data is large.
A numeric vector of model weights.
For matrix inversion, MASS::ginv()
is more stable near singularities
than solve
. It will be used as a fallback if solve
fails and
MASS is available.
Carsten Dormann, Kamil Bartoń
Bates, J. M. and Granger, C. W. J. 1969 The combination of forecasts. Journal of the Operational Research Society 20, 451-468.
Dormann, C. et al. (2018) Model averaging in ecology: a review of Bayesian, information-theoretic, and tactical approaches for predictive inference. Ecological Monographs 88, 485–504.
Weights
, model.avg
Other model weights:
bootWeights()
,
cos2Weights()
,
jackknifeWeights()
,
stackingWeights()
fm <- glm(Prop ~ mortality + dose, family = binomial, Beetle, na.action = na.fail)
models <- lapply(dredge(fm, evaluate = FALSE), eval)
ma <- model.avg(models)
# this produces warnings because of negative variances:
set.seed(78)
Weights(ma) <- BGWeights(ma, data = Beetle)
coefTable(ma, full = TRUE)
# SE for prediction is not reliable if some or none of coefficient's SE
# are available
predict(ma, data = test.data, se.fit = TRUE)
coefTable(ma, full = TRUE)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.