Create a summary data frame of termination experience for a given target status.
exp_stats(
.data,
target_status = attr(.data, "target_status"),
expected,
col_exposure = "exposure",
col_status = "status",
wt = NULL,
credibility = FALSE,
conf_level = 0.95,
cred_r = 0.05,
conf_int = FALSE
)# S3 method for exp_df
summary(object, ...)
A tibble with class exp_df
, tbl_df
, tbl
,
and data.frame
. The results include columns for any grouping variables,
claims, exposures, and observed termination rates (q_obs
).
If any values are passed to expected
, expected termination rates and
actual-to-expected ratios.
If credibility
is set to TRUE
, additional columns are added
for partial credibility and credibility-weighted termination rates
(assuming values are passed to expected
). Credibility-weighted termination
rates are prefixed by adj_
.
If conf_int
is set to TRUE
, additional columns are added for lower and
upper confidence interval limits around the observed termination rates and
any actual-to-expected ratios. Additionally, if credibility
is TRUE
and
expected values are passed to expected
, the output will contain confidence
intervals around credibility-weighted termination rates. Confidence interval
columns include the name of the original output column suffixed by either
_lower
or _upper
.
If a value is passed to wt
, additional columns are created containing
the the sum of weights (.weight
), the sum of squared weights
(.weight_qs
), and the number of records (.weight_n
).
A data frame with exposure-level records, ideally of type
exposed_df
A character vector of target status values
A character vector containing column names in .data
with expected values
Name of the column in .data
containing exposures
Name of the column in .data
containing the policy status
Optional. Length 1 character vector. Name of the column in
.data
containing weights to use in the calculation of claims,
exposures, partial credibility, and confidence intervals.
If TRUE
, the output will include partial credibility
weights and credibility-weighted termination rates.
Confidence level used for the Limited Fluctuation credibility method and confidence intervals
Error tolerance under the Limited Fluctuation credibility method
If TRUE
, the output will include confidence intervals
around the observed termination rates and any actual-to-expected ratios.
An exp_df
object
Groups to retain after summary()
is called
The expected
argument is optional. If provided, this argument must
be a character vector with values corresponding to columns in .data
containing expected experience. More than one expected basis can be provided.
If credibility
is set to TRUE
, the output will contain a
credibility
column equal to the partial credibility estimate under
the Limited Fluctuation credibility method (also known as Classical
Credibility) assuming a binomial distribution of claims.
If conf_int
is set to TRUE
, the output will contain lower and upper
confidence interval limits for the observed termination rate and any
actual-to-expected ratios. The confidence level is dictated
by conf_level
. If no weighting variable is passed to wt
, confidence
intervals will be constructed assuming a binomial distribution of claims.
Otherwise, confidence intervals will be calculated assuming that the
aggregate claims distribution is normal with a mean equal to observed claims
and a variance equal to:
Var(S) = E(N) * Var(X) + E(X)^2 * Var(N)
,
Where S
is the aggregate claim random variable, X
is the weighting
variable assumed to follow a normal distribution, and N
is a binomial
random variable for the number of claims.
If credibility
is TRUE
and expected values are passed to expected
,
the output will also contain confidence intervals for any
credibility-weighted termination rates.
Applying summary()
to a exp_df
object will re-summarize the
data while retaining any grouping variables passed to the "dots"
(...
).
If .data
is grouped, the resulting data frame will contain
one row per group.
If target_status
isn't provided, exp_stats()
will use the same
target status from .data
if it has the class exposed_df
.
Otherwise, all status values except the first level will be assumed.
This will produce a warning message.
Herzog, Thomas (1999). Introduction to Credibility Theory
toy_census |> expose("2022-12-31", target_status = "Surrender") |>
exp_stats()
exp_res <- census_dat |>
expose("2019-12-31", target_status = "Surrender") |>
group_by(pol_yr, inc_guar) |>
exp_stats()
exp_res
summary(exp_res)
summary(exp_res, inc_guar)
Run the code above in your browser using DataLab