
Add coefficient restrictions to a refinement workflow
Source:R/model_refinement.R
add_restriction.RdFixes selected model levels to user-supplied relativities in a refinement workflow. This is useful when the fitted GLM coefficients need to be adjusted before the final tariff is refitted, for example to apply expert judgement, enforce a business rule, remove an implausible local effect, or make a tariff structure easier to explain.
Arguments
- model
Object of class
rating_refinement, usually created withprepare_refinement().- restrictions
Data frame with exactly two columns. The first column must have the same name as the model variable to restrict and contains the levels to adjust. The second column contains the replacement relativities. Levels that are not supplied are filled with the currently fitted GLM relativities.
Details
add_restriction() stores a restriction step on a rating_refinement
object. It does not refit the GLM immediately. The restrictions are applied
when refit() is called.
The restrictions data frame identifies the model variable to restrict by
its first column. The second column contains the relativities that should be
used for those levels in the refined model. New code should use this function
after prepare_refinement(); the deprecated restrict_coef() wrapper is
only kept for backwards compatibility.
The restriction table may contain all levels of the model variable, or only the levels that need a manual adjustment. If only a subset is supplied, the missing levels are automatically filled with their current fitted GLM relativities. This makes it possible to fix one level explicitly while keeping the other levels at their already estimated values.
Examples
portfolio <- data.frame(
claims = c(1, 2, 1, 3, 2, 4),
exposure = rep(1, 6),
postal_area = factor(c("A", "B", "C", "A", "B", "C"))
)
model <- glm(
claims ~ postal_area + offset(log(exposure)),
family = poisson(),
data = portfolio
)
restrictions <- data.frame(
postal_area = "C",
relativity = 1.10
)
refined <- prepare_refinement(model, data = portfolio) |>
add_restriction(restrictions)