Weights.Rd
Calculate, extract or set normalized model likelihoods (‘Akaike weights’).
Weights(x)
Weights(x) <- value
a numeric vector of information criterion values such as AIC, or
objects returned by functions like AIC
. There are also methods for
extracting ‘Akaike weights’ from "model.selection"
or
"averaging"
objects.
numeric, the new weights for the "averaging"
object or
NULL
to reset the weights based on the original IC used.
The replacement function can assign new weights to an "averaging"
object, affecting coefficient values and order of component models.
For the extractor, a numeric vector of normalized likelihoods.
On assigning new weights, the model order changes accordingly, so assigning
the same weights again will cause incorrect re-calculation of averaged
coefficients. To avoid that, either re-set model weights by assigning NULL
,
or use ordered weights.
armWeights
,
bootWeights
, BGWeights
, cos2Weights
,
jackknifeWeights
and stackingWeights
can be used to
produce model weights.
weights
, which extracts fitting weights from model objects.
fm1 <- glm(Prop ~ dose, data = Beetle, family = binomial)
fm2 <- update(fm1, . ~ . + I(dose^2))
fm3 <- update(fm1, . ~ log(dose))
fm4 <- update(fm3, . ~ . + I(log(dose)^2))
round(Weights(AICc(fm1, fm2, fm3, fm4)), 3)
#> model weights
#> [1] 0.312 0.329 0.044 0.314
am <- model.avg(fm1, fm2, fm3, fm4, rank = AICc)
coef(am)
#> (Intercept) dose I(dose^2) log(dose) I(log(dose)^2)
#> 149.56958558 -0.20303260 0.00726326 -219.93533091 32.74938293
# Assign equal weights to all models:
Weights(am) <- rep(1, 4) # assigned weights are rescaled to sum to 1
Weights(am)
#> unknown model weights
#> [1] 0.25 0.25 0.25 0.25
coef(am)
#> (Intercept) dose I(dose^2) log(dose) I(log(dose)^2)
#> 105.86553402 -0.19150628 0.00726326 -119.12081828 32.74938293
# Assign dummy weights:
wts <- c(2,1,4,3)
Weights(am) <- wts
coef(am)
#> (Intercept) dose I(dose^2) log(dose) I(log(dose)^2)
#> 27.13729609 -0.04582424 0.00726326 -52.21611191 32.74938293
# Component models are now sorted according to the new weights.
# The same weights assigned again produce incorrect results!
Weights(am) <- wts
coef(am) # wrong!
#> (Intercept) dose I(dose^2) log(dose) I(log(dose)^2)
#> 141.62459048 -0.33718833 0.00726326 -186.02552464 32.74938293
#
Weights(am) <- NULL # reset to original model weights
Weights(am) <- wts
coef(am) # correct
#> (Intercept) dose I(dose^2) log(dose) I(log(dose)^2)
#> 27.13729609 -0.04582424 0.00726326 -52.21611191 32.74938293