Computes empirical weights based on out of sample forecast variances, following Bates and Granger (1969).
two or more fitted
a data frame containing the variables in the model.
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
These predictions are then used to compute the variance-covariance between
models, Σ. Model weights are then calculated as
w_BG = (1' Σ⁻¹ 1)⁻¹ 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.
The function returns a numeric vector of model weights.
For matrix inversion,
ginv from package
MASS is more stable near singularities than
will be used as a fallback if
solve fails and MASS is
Carsten Dormann, Kamil Bartoń
Bates, J. M. & Granger, C. W. J. (1969) The combination of forecasts. Journal of the Operational Research Society, 20: 451-468.
1 2 3 4 5 6 7 8 9 10 11 12 13
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.