Skip to contents

Determines the probability that claims occuring under a Poisson process with arrival intensity expo and reporting delay distribution dist during the time between t_min and t_max are reported between tau_min and tau_max.

Usage

prob_report(
  dist,
  intervals,
  expo = NULL,
  with_params = list(),
  .tolerance = .Machine$double.eps^0.5,
  .max_iter = 100L,
  .try_compile = TRUE
)

Arguments

dist

A reporting delay Distribution, or a compiled interval probability function.

intervals

A data frame with columns xmin, xmax, tmin, tmax. Claims occur within [xmin, xmax] and be reported within [tmin, tmax].

expo

Poisson intensity. If given, must be a vectorised function that yields the intensity of the claim arrival process at a specified time. expo = NULL is equivalent to a constant intensity function. expo is only relevant up to a multiplicative constant.

with_params

Parameters of dist to use. Can be a parameter set with different values for each interval. If dist is a compiled interval probability function, with_params can be a matrix instead.

.tolerance

Absolute element-wise tolerance.

.max_iter

Maximum number of iterations. The number of integration intervals will be at most length(lower) * .max_iter. Therefor the maximum number of function evaluations per integration interval will be 15 * .max_iter.

.try_compile

Try compiling the distributions probability function to speed up integration?

Value

A vector of reporting probabilities, with one entry per row of intervals.

Details

The reporting probability is given by

P(x + d in [tmin, tmax] | x in [xmin, xmax]) = E(P(x + d in [tmin, tmax] | x) | x in [xmin, xmax]) / P(x in [xmin, xmax]) = int_[xmin, xmax] expo(x) P(x + d in [tmin, tmax]) dx = int_[xmin, xmax] expo(x) P(d in [tmin - x, tmax - x]) dx / int_[xmin, xmax] expo(x) dx

prob_report uses integrate_gk() to compute the two integrals.

Examples

dist <- dist_exponential()
ints <- data.frame(
  xmin = 0,
  xmax = 1,
  tmin = seq_len(10) - 1.0,
  tmax = seq_len(10)
)
params <- list(rate = rep(c(1, 0.5), each = 5))

prob_report(dist, ints, with_params = params)
#>  [1] 0.367879441 0.399576401 0.146995943 0.054076785 0.019893738 0.041904709
#>  [7] 0.025416491 0.015415881 0.009350204 0.005671186