if (FALSE) {
# Add restrictions to risk factors for region (zip) -------------------------
# Fit frequency and severity model
library(dplyr)
freq <- glm(nclaims ~ bm + zip, offset = log(exposure), family = poisson(),
data = MTPL)
sev <- glm(amount ~ bm + zip, weights = nclaims,
family = Gamma(link = "log"),
data = MTPL |> filter(amount > 0))
# Add predictions for freq and sev to data, and calculate premium
premium_df <- MTPL |>
add_prediction(freq, sev) |>
mutate(premium = pred_nclaims_freq * pred_amount_sev)
# Restrictions on risk factors for region (zip)
zip_df <- data.frame(zip = c(0,1,2,3), zip_rst = c(0.8, 0.9, 1, 1.2))
# Fit unrestricted model
burn <- glm(premium ~ bm + zip, weights = exposure,
family = Gamma(link = "log"), data = premium_df)
# Fit restricted model
burn_rst <- burn |>
restrict_coef(restrictions = zip_df) |>
update_glm()
# Show rating factors
rating_factors(burn_rst)
}
Run the code above in your browser using DataLab