age <- rep(seq(20, 70, by = 5), each = 5)
portfolio <- data.frame(
claims = rep(c(0, 1, 0, 2, 1), length(age) / 5),
exposure = 1,
age = age
)
portfolio$age_band <- cut(
portfolio$age,
breaks = c(15, 30, 45, 60, 75),
include.lowest = TRUE
)
model <- glm(
claims ~ age_band + offset(log(exposure)),
family = poisson(),
data = portfolio
)
refinement <- prepare_refinement(model, data = portfolio) |>
add_smoothing(
model_variable = "age_band",
source_variable = "age",
breaks = seq(15, 75, by = 5),
smoothing = "poly",
degree = 2,
weights = "exposure"
)
premium_change(refinement, at = c(20, 25, 30))
premium_change(refinement, at = c(20, 25, 30), increment = 5)
premium_change(refinement, at = c(20, 25, 30), basis = "segments")
edited <- refinement |>
edit_smoothing(
model_variable = "age_band",
from = 20,
to = 60,
adjustment = 1.05,
transition = "linear"
)
premium_change(edited, at = c(20, 25, 30), steps = c(1, 2))
Run the code above in your browser using DataLab