set_reference_level: Set the reference level of a factor

View source: R/utils.R

set_reference_levelR Documentation

Set the reference level of a factor

Description

Relevels a factor so that the selected category becomes the reference (first) level. By default, the reference level is chosen as the level with the largest total weight, for example the largest exposure in an insurance portfolio. Use method = "manual" with reference_level when a specific business category should be the reference level.

Choosing a reference level does not change fitted values or the overall model fit. It changes the coefficient parameterisation and therefore the level against which the remaining factor relativities are expressed.

Usage

set_reference_level(
  x,
  weight = NULL,
  method = "largest_weight",
  reference_level = NULL
)

Arguments

x

A factor (unordered). Character vectors should be converted to factor before use.

weight

A numeric vector of the same length as x, typically representing exposure or frequency weights. Required when method = "largest_weight".

method

Character. Method used to choose the reference level. Supported methods are "largest_weight" and "manual".

reference_level

Character string with the level to use as reference when method = "manual".

Details

method = "largest_weight" is useful when the reference category should represent a substantial and relatively stable part of the portfolio. The supplied weight is commonly earned exposure, but another actuarially meaningful volume measure may be used.

method = "manual" is appropriate when the reference category is determined by tariff interpretation, governance or an established pricing convention. The selected category must already be an observed factor level.

Value

A factor of the same length as x, with the selected reference level set as the first level.

Author(s)

Martin Haringa

References

Kaas, Rob & Goovaerts, Marc & Dhaene, Jan & Denuit, Michel. (2008). Modern Actuarial Risk Theory: Using R. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1007/978-3-540-70998-5")}

See Also

add_rebasing() for rescaling current tariff relativities within a prepared refinement workflow after a model has been fitted.

Examples

portfolio <- data.frame(
  region = factor(c("North", "North", "South", "West")),
  exposure = c(120, 80, 60, 40)
)

set_reference_level(portfolio$region, portfolio$exposure)
set_reference_level(
  portfolio$region,
  method = "manual",
  reference_level = "South"
)

# Apply the largest-weight reference rule to every factor in a data frame
library(dplyr)
df <- chickwts |>
  mutate(across(where(is.character), as.factor)) |>
  mutate(across(where(is.factor), ~set_reference_level(., weight)))


insurancerating documentation built on Sept. 1, 2026, 5:08 p.m.