mod1 <- glm(nclaims ~ age_policyholder,
data = MTPL,
offset = log(exposure),
family = poisson())
# Add the expected claim count for each record's exposure
mtpl_pred <- add_prediction(
MTPL,
mod1,
predictions = "expected_claim_count"
)
# Add predicted values with confidence bounds
mtpl_pred_ci <- add_prediction(
MTPL,
mod1,
predictions = "expected_claim_count",
confidence = TRUE
)
# Combine frequency and severity predictions into a risk premium
freq <- glm(nclaims ~ bm + zip,
data = MTPL,
offset = log(exposure),
family = poisson())
severity_data <- MTPL[MTPL$nclaims > 0 & MTPL$amount > 0, ]
severity_data$average_claim_amount <-
severity_data$amount / severity_data$nclaims
sev <- glm(average_claim_amount ~ bm + zip,
data = severity_data,
weights = nclaims,
family = Gamma(link = "log"))
pricing <- add_prediction(
MTPL,
freq,
sev,
predictions = c("expected_claim_count", "expected_average_severity")
)
pricing$claim_frequency <-
pricing$expected_claim_count / pricing$exposure
pricing$expected_loss <-
pricing$expected_claim_count * pricing$expected_average_severity
pricing$risk_premium <-
pricing$claim_frequency * pricing$expected_average_severity
Run the code above in your browser using DataLab