Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## ----warning = FALSE, message = FALSE-----------------------------------------
library(insurancerating)
library(dplyr)
head(MTPL2)
## -----------------------------------------------------------------------------
fa <- factor_analysis(
MTPL,
risk_factors = "zip",
claim_count = "nclaims",
exposure = "exposure",
claim_amount = "amount"
)
fa
## -----------------------------------------------------------------------------
autoplot(fa, metrics = c("exposure", "frequency", "risk_premium"))
## -----------------------------------------------------------------------------
age_freq <- risk_factor_gam(
data = MTPL,
risk_factor = "age_policyholder",
claim_count = "nclaims",
exposure = "exposure"
)
autoplot(age_freq, show_observations = TRUE)
## -----------------------------------------------------------------------------
age_segments <- derive_tariff_segments(age_freq)
autoplot(age_segments)
## -----------------------------------------------------------------------------
dat <- MTPL |>
add_tariff_segments(age_segments, name = "age_cat") |>
mutate(across(where(is.character), as.factor)) |>
mutate(across(where(is.factor), ~ set_reference_level(., exposure)))
## -----------------------------------------------------------------------------
mod_freq <- glm(
nclaims ~ age_cat,
offset = log(exposure),
family = poisson(),
data = dat
)
## -----------------------------------------------------------------------------
mod_sev <- glm(
amount ~ age_cat,
weights = nclaims,
family = Gamma(link = "log"),
data = dat |> filter(amount > 0)
)
## -----------------------------------------------------------------------------
premium_df <- dat |>
add_prediction(mod_freq, mod_sev) |>
mutate(premium = pred_nclaims_mod_freq * pred_amount_mod_sev)
head(premium_df)
## -----------------------------------------------------------------------------
burn_unrestricted <- glm(
premium ~ age_cat + zip,
weights = exposure,
family = Gamma(link = "log"),
data = premium_df
)
## -----------------------------------------------------------------------------
rt <- rating_table(burn_unrestricted)
rt
## -----------------------------------------------------------------------------
rating_table(burn_unrestricted) |>
autoplot()
## -----------------------------------------------------------------------------
model_performance(mod_freq)
## -----------------------------------------------------------------------------
bp <- bootstrap_performance(mod_freq, dat, n_resamples = 50, show_progress = FALSE)
autoplot(bp)
## ----eval = FALSE-------------------------------------------------------------
#
# factor_analysis() # analyse portfolio behaviour
# risk_factor_gam() # analyse continuous variables
# derive_tariff_segments() # derive tariff segments
# glm() # estimate pricing models
# rating_table() # interpret fitted coefficients
# bootstrap_performance() # assess stability
# prepare_refinement() # refine tariff structure if needed
#
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.