Description Usage Arguments Details Value Author(s) References See Also Examples
Computes forecasts for a model with AC or Chain Ladder structure. Forecasts of the linear predictor are given for all models. Distributions forecasts are provided for a Poisson response model (using Martinez Miranda, Nielsen and Nielsen, 2015), for an over-dispersed Poisson response model (using Harnau and Nielsen, 2017) and for a log normal response model (using Kuang and Nielsen, 2018) This is done for the triangle which shares age and cohort indices with the data.
1 2 | apc.forecast.ac(apc.fit,sum.per.by.age=NULL,
sum.per.by.coh=NULL, quantiles=NULL, suppress.warning=TRUE)
|
apc.fit |
List. Output from |
sum.per.by.age |
Optional. Vector. If not NULL it will generate forecasts by period,
where, for each period, the point forecasts are cummulated over certain age groups.
Indicates which age groups. If |
sum.per.by.coh |
Optional. Vector. Same as |
quantiles |
Optional. Vector. Generates forecast quantiles for indicated quantiles. Example:
|
suppress.warning |
Logical. If true, suppresses warnings from |
The default output only reports standard errors.
By setting the argument
quantiles
to, for instance,
quantiles=c(0.05,0.50,0.95)
forecast quantiles are reported.
Poisson response forecast errors.
The asymptotic theory for the Poisson forecast standard errors is presented in
Martinez Miranda, Nielsen and Nielsen (2015).
The sampling theory is based on multinomial model, conditional on the total number of outcomes.
Asymptotically this gives a normal theory.
There are two independent contributions to the forecast error:
a process error and an estimation error.
The empirical example of that paper uses the data
data.asbestos
.
The results of that paper are reproduced in
the vignette
ReproducingMMNN2015.pdf
,
ReproducingMMNN2015.R
on
Vignettes
.
Overdispersed Poisson response forecast errors. The asymptotic theory for the overdispersed Poission forecast standard errors is presented in Harnau and Nielsen (2018). The sampling theory is based on infinitely devisible distributions, with the compound Poisson distribution as a special case. This results in scale nuisance parameter, which is estimated by the deviance of the AC model divided by the degrees of freedom. Asymptotically this gives a t/F theory. There are three independent contributions to the forecast error: a process error, an estimation error and a sampling error for the overall mean.
Generalized log normal forecast errors. Uses the asymptotic theory present in Kuang and Nielsen (2018). The sampling theory is based on infinitely devisible distributions, using small sigma asymptotics. There are two independent contributions to the forecast error: a process error and an estimation error.
The examples below are based on the smaller data reserving sets
data.loss.VNJ
,
data.loss.TA
.
See also
data.loss.XL
.
linear.predictors.forecast |
Vector. Linear predictors for forecast area. |
index.trap.J |
Matrix. age-coh coordinates for vector. Similar structure to
|
trap.response.forecast |
Matrix. Includes data and point forecasts. Forecasts in lower right triangle. Trapezoid format. |
response.forecast.cell |
Matrix. 4 columns.
1: Point forecasts.
2: corresponding forecast standard errors
3: process standard errors
4: estimation standard errors
Note that the square of column 2 equals the sums of squares of columns 3 and 4
Note that |
response.forecast.age |
Same as |
response.forecast.per |
Same as |
response.forecast.per.ic |
Same as response.forecast.cell,
but point forecasts cumulated by per and intercept corrected by
multiplying column 1 of |
response.forecast.coh |
Same as |
response.forecast.all |
Same as |
response.forecast.per.by.age |
Only if |
response.forecast.per.by.age.ic |
Only if |
response.forecast.per.by.coh |
Only if |
response.forecast.per.by.coh.ic |
Only if |
intercept.correction.per |
Numeric. The intercept correction is constructed as the ratio of the sum of data entries for the last period and the sum of the corresponding fitted values. |
intercept.correction.per.by.age |
Numeric. Only if |
intercept.correction.per.by.coh |
Numeric. Only if |
Bent Nielsen <bent.nielsen@nuffield.ox.ac.uk> 18 November 2019 (2 Mar 2016)
Harnau, J. and Nielsen (2018) Over-dispersed age-period-cohort models. Journal of the American Statistical Association 113, 1722-1732. Download: Nuffield DP
Martinez Miranda, M.D., Nielsen, B. and Nielsen, J.P. (2015) Inference and forecasting in the age-period-cohort model with unknown exposure with an application to mesothelioma mortality. Journal of the Royal Statistical Society A 178, 29-55. Download: Article, Nuffield DP.
Martinez Miranda, M.D., Nielsen, B., Nielsen, J.P. and Verrall, R. (2011) Cash flow simulation for a model of outstanding liabilities based on claim amounts and claim numbers. ASTIN Bulletin 41, 107-129.
Kuang, D, Nielsen B (2018) Generalized log-normal chain-ladder. mimeo Nuffield Collge.
The example below uses Japanese breast cancer data, see data.Japanese.breast.cancer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | #####################
# EXAMPLE with reserving data: data.loss.VNJ()
# Data used in Martinez Miranda, Nielsen, Nielsen and Verrall (2011)
# Point forecasts are the Chain-Ladder forecasts
# *NOTE* Data are over-dispersed,
# so distribution forecast are *NOT* reliable
# The same could be done data.asbestos(),
# which are not over-dispersed
# see vignette.
data <- data.loss.VNJ()
fit.ac <- apc.fit.model(data,"poisson.response","AC")
forecast <- apc.forecast.ac(fit.ac)
# forecasts by "policy-year"
forecast$response.forecast.coh
# forecast se se.proc se.est
# coh_2 1684.763 57.69067 41.04586 40.53949
# coh_3 29379.085 220.53214 171.40328 138.76362
# coh_4 60637.929 313.33867 246.24770 193.76066
# coh_5 101157.697 385.69930 318.05298 218.18857
# coh_6 173801.522 501.42184 416.89510 278.60786
# coh_7 249348.589 595.21937 499.34816 323.94060
# coh_8 475991.739 864.06580 689.92155 520.20955
# coh_9 763918.643 1182.70450 874.02440 796.78810
# coh_10 1459859.526 2216.80272 1208.24647 1858.58945
# forecasts of "cash-flow"
forecast$response.forecast.per
# reproduces Table 6 of MMNNV (2011)
# forecast se se.proc se.est
# per_11 1353858.32 1456.92459 1163.55417 876.7958
# per_12 754180.12 1017.37629 868.43544 529.9758
# per_13 488612.42 816.62860 699.00817 422.2202
# per_14 318043.00 664.36135 563.95302 351.1880
# per_15 184610.86 508.97704 429.66366 272.8494
# per_16 115022.56 414.64945 339.14976 238.5615
# per_17 63145.15 320.93564 251.28700 199.6360
# per_18 35812.79 255.08766 189.24267 171.0466
# per_19 2494.27 78.10439 49.94266 60.0502
# forecast of "total reserve"
# reproduces Table 6 of MMNNV (2011)
forecast$response.forecast.all
# forecast se se.proc se.est
# all 3315779 3182.737 1820.928 2610.371
#####################
# Forecast of cashflows for 7th cohort (policy year)
# Note a series of warnings are given because
# this is done by truncating the data
# which generates the warnings associated
# with apc.data.list.subset()
forecast<- apc.forecast.ac(fit.ac,sum.per.by.coh=7)
forecast$response.forecast.per.by.coh
# forecast se se.proc se.est
# per_11 102975.337 355.97444 320.89771 154.08590
# per_12 58061.306 267.24671 240.95914 115.58329
# per_13 40466.866 226.40049 201.16378 103.87646
# per_14 21615.765 170.90637 147.02301 87.13910
# per_15 24410.927 194.70158 156.23997 116.17994
# per_16 1818.389 61.09857 42.64257 43.75668
#
# This can also be intercept corrected
# Such intercept corrections are useful when
# analysing data.asbestos().
# Unclear if they are useful for
# reserving.
forecast$intercept.correction.per.by.coh
# > [1] 1.241798
forecast$response.forecast.per.by.coh.ic
# forecast se se.proc se.est
# per_11 127874.573 355.97444 320.89771 154.08590
# per_12 72100.417 267.24671 240.95914 115.58329
# per_13 50251.675 226.40049 201.16378 103.87646
# per_14 26842.415 170.90637 147.02301 87.13910
# per_15 30313.441 194.70158 156.23997 116.17994
# per_16 2258.071 61.09857 42.64257 43.75668
#####################
# Forecast of cashflows cumulated for
# 6th and 7th cohort (policy year)
forecast<- apc.forecast.ac(fit.ac,sum.per.by.coh=c(6,7))
forecast$response.forecast.per.by.coh.ic
# forecast se se.proc se.est
# per_11 226219.380 460.52781 414.62816 200.42295
# per_12 139628.153 366.48699 325.74697 167.93339
# per_13 87022.435 295.86605 257.16360 146.29970
# per_14 66584.160 277.64858 224.94656 162.75067
# per_15 34962.678 206.77289 163.00324 127.22018
# per_16 2392.759 61.09857 42.64257 43.75668
#####################
# EXAMPLE with reserving data: data.loss.TA()
# Data used in Harnau and Nielsen (2016)
data <- data.loss.TA()
fit.ac <- apc.fit.model(data,"od.poisson.response","AC")
forecast <- apc.forecast.ac(fit.ac,quantiles=c(0.01,0.05,0.5,0.95,0.99))
forecast$response.forecast.all
# forecast se se.proc se.est tau.est
# all 18680856 2675417 1007826 2474680 134561.2
# ...
# t-0.010 t-0.050 t-0.500 t-0.950 t-0.990
# 12158931 14160544 18680856 23201167 25202781
# ...
# G-0.010 G-0.050 G-0.500 G-0.950 G-0.990
# 12760202 14398564 18553290 23417098 25792423
forecast$response.forecast.per
#####################
# EXAMPLE with reserving data: data.loss.XL()
# see helpfile for data.loss.XL
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.