Calculate, extract or set normalized model likelihoods (‘Akaike weights’).

Weights(x)
Weights(x) <- value

Arguments

x

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.

value

numeric, the new weights for the "averaging" object or NULL to reset the weights based on the original IC used.

Details

The replacement function can assign new weights to an "averaging" object, affecting coefficient values and order of component models.

Value

For the extractor, a numeric vector of normalized likelihoods.

Note

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.

Author

Kamil Bartoń

See also

sw, weighted.mean

armWeights, bootWeights, BGWeights, cos2Weights, jackknifeWeights and stackingWeights can be used to produce model weights.

weights, which extracts fitting weights from model objects.

Examples


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