R: Bootstrap distribution (the full cashflow) adding prior...
dcl.boot.prior
R Documentation
Bootstrap distribution (the full cashflow) adding prior knowledge
Description
Provide the distribution of the IBNR, RBNS and total (RBNS+IBRN) reserves by calendar years and rows using
bootstrapping.
Usage
dcl.boot.prior( Xtriangle , Ntriangle , sigma2 , mu , inflat.i , inflat.j , Qi ,
Model = 2 , adj = 1 , boot.type = 2, B = 999 ,
Tail = TRUE , summ.by = "diag", Tables = TRUE, num.dec = 2 , n.cal = NA ,
Fj.X = NA , Fj.N = NA )
Arguments
Xtriangle
The paid run-off triangle: incremental aggregated payments. It should be a matrix with incremental aggregated payments located in the upper triangle and the lower triangle consisting in missing or zero values.
Ntriangle
The counts data triangle: incremental number of reported claims. It should be a matrix with the observed counts located in the upper triangle and the lower triangle consisting in missing or zero values. It should has the same dimension as Xtriangle (both in the same aggregation level (quarters, years,etc.))
sigma2
Optional. The variance of the individual payments in the first underwriting period.
mu
Optional. The mean of the individual payments in the first underwriting period.
inflat.i
Optional. A vector with dimension m (the dimension of the input triangles) specifying the severity inflation in the underwriting direction.
inflat.j
Optional. A vector with dimension m specifying the severity inflation in the development direction. If not specified it will be assumed to be 1 and then the severity mean not depending on the development period.
Qi
Optional. A vector with dimension m specifying the probability of zero-claims for each underwriting period. If not specified then it will be assumed no zero-payments.
Model
Possible values are 0, 1 or 2 (default). See dcl.estimation for more in details.
adj
Method to adjust the estimated delay parameters for the distributional model. It should be 1 (default value) or 2. See dcl.estimation for more details.
boot.type
Choose between values 1, to provide only the variance process, or 2 (default), to take into account the uncertainty of the parameters.
B
The number of simulations in the bootstrap algorithm. The defaul value is 999.
Tail
Logical. If TRUE (default) the tail is provided.
summ.by
A character value such as "diag", "row" or "cell".
Tables
Logical. If TRUE (default) it is showed a table with the summary (mean, standard deviation, 1%, 5%, 50%, 95%, 99%) of the distribution of the outstanding liabilities in the future calendar periods (if summ.by="diag") or by underwriting period (if summ.by="row").
num.dec
Number of decimal places used to report numbers in the tables. Used only if Tables=TRUE
n.cal
Integer specifying the number of most recent calendars which will be used to calculate the development factors. By default n.cal=NA and all the observed calendars are used (classical chain ladder).
Fj.X
Optional vector with lentgth m-1 (m being the dimension of the triangles) with the development factors to calculate the chain ladder estimates from Xtriangle. See more details in clm.
Fj.N
Optional vector with lentgth m-1 with the development factors to calculate the chain ladder estimates from Ntriangle.
Details
If proper values are provided for the arguments sigma2, mu, inflat.i, inflat.j and Qi then, they will be considered fixed as prior knowledge. Otherwise, if not specified, inflat.j will be assumed to be a vector of ones, Qi a vector of zeros, and the rest will be estimated using dcl.estimation.
Value
array.rbns.boot
An array with dimensions (m,2m-1,B) (m being the dimension of the input triangles in DCL). Each array.rbns.boot[,,b] is a matrix, with m rows and 2m-1 columns, having the bootstrapped outstanding RBNS numbers as the entries (for b=1,...,B).
Mat.rbns
A matrix with B rows and 2m columns. Each Mat.rbns[b,] is a vector with elements being the outstanding liabilities for RBNS claims in the future calendar periods (sums by diagonals), and last value is the RBNS reserve (overall sum).
array.ibnr.boot
An array with dimensions (m,2m-1,B) (m being the dimension of the input triangles in DCL). Each array.ibnr.boot[,,b] is a matrix, with m rows and 2m-1 columns, having the bootstrapped outstanding IBNR numbers as the entries (for b=1,...,B).
Mat.ibnr
A matrix with B rows and 2m columns. Each Mat.ibnr[b,] is a vector with elements being the outstanding liabilities for IBNR claims in the future calendar periods (sums by diagonals), and last value is the RBNS reserve (overall sum).
Mat.total
A matrix with B rows and 2m columns. Each Mat.total[b,] is a vector with elements being the outstanding liabilities for total(=RBNS+IBNR) claims in the future calendar periods (sums by diagonals), and last value is the RBNS reserve (overall sum).
summ.rbns
A dataframe with the summary of the RBNS distribution. Only if Tables=TRUE.
summ.ibnr
A dataframe with the summary of the IBNR distribution. Only if Tables=TRUE.
summ.total
A dataframe with the summary of the total(=RBNS+IBNR) distribution. Only if Tables=TRUE.
Note
If boot.type=2 the function will take some time to perform the calculations. It increases with the dimension of the triangles and the specified number of simulations B.
Author(s)
M.D. Martinez-Miranda, J.P. Nielsen and R. Verrall
References
Martinez-Miranda, M.D., Nielsen, J.P., Verrall, R. and Wuthrich, M.V. (2013) Double Chain Ladder, Claims Development Inflation and Zero Claims. Scandinavian Actuarial Journal. In press.
See Also
Plot.cashflow, dcl.boot
Examples
## Data application by in Martinez-Miranda, Nielsen, Verrall and Wuthrich (2013)
data(NtrianglePrior)
data(NpaidPrior)
data(XtrianglePrior)
## Extract information about zero-claims and severity dev. inflation
my.priors<-extract.prior(XtrianglePrior,NpaidPrior,NtrianglePrior,Plots=FALSE)
my.inflat.j<-my.priors$inflat.j
my.Qi<-my.priors$Qi
## Bootstrap cashflow incorporating prior knowledge about
## severity inflation and zero claims
# Only variance process
# Below only B=200 simulations for a fast example
dist.priorC.I<-dcl.boot.prior(NtrianglePrior,XtrianglePrior,
inflat.j=my.inflat.j,Qi=my.Qi,adj=2,Tail=FALSE,boot.type=1,B=200)
Plot.cashflow(dist.priorC.I)
## Try to compare with DCL with no prior knowledge:
# Only variance process
# dist.dcl.I<-dcl.boot.prior(NtrianglePrior,XtrianglePrior,adj=2,
# Tail=FALSE,boot.type=1)
# Plot.cashflow(dist.dcl.I)