Skip to contents

As only whole ibnr numbers can be used in the simulation, the expected ibnr matrix must be rounded.

Algorithms for rounding should allocate the rounded remainders to origin and development years in a way that rowsums and colsums are barely changed. They must moreover secure that 0-entries remain 0 to prevent subsequent errors.

This algorithm is one possible ways to do so and works very well in most examples.

Thanks to Michele Pellino for idea and implementation!

Usage

round_expected_ibnr_numbers(expected_ibnr_numbers)

Arguments

expected_ibnr_numbers

Matrix as a result of get_expected_ibnr_numbers()

Value

Matrix with same dimensions.

Examples

# small example
exp_ibnr <- matrix(c(0,0,0,2.09,0,0,0.585,0.741,0,0,0,0,0.06,0.072,0.09,0.114), 4)
rownames(exp_ibnr) <- 2020:2023
colnames(exp_ibnr) <- 2:5
# Unrounded:
print(exp_ibnr)
#>         2     3 4     5
#> 2020 0.00 0.000 0 0.060
#> 2021 0.00 0.000 0 0.072
#> 2022 0.00 0.585 0 0.090
#> 2023 2.09 0.741 0 0.114
# Rounded:
round_expected_ibnr_numbers(exp_ibnr)
#>      2 3 4 5
#> 2020 0 0 0 0
#> 2021 0 0 0 0
#> 2022 0 1 0 0
#> 2023 2 1 0 0

# more complex example
# prepare data
extended_claims_data_xmpl <- prepare_data(claims_data = claims_data_xmpl,
                                          indices = indices_xmpl,
                                          threshold = 4e5,
                                          first_orig_year = 1989,
                                          last_orig_year = 2023,
                                          expected_year_of_growing_large = 3,
                                          reserve_classes = c(1, 200001, 400001, 700001, 1400001),
                                          pool_of_annuities = pool_of_annuities_xmpl)

# generate claims list
large_claims_list_xmpl <- generate_claims_list(extended_claims_data = extended_claims_data_xmpl,
                                               first_orig_year = 1989,
                                               last_orig_year = 2023)

# generate additive ibnr model using the last ten calendar years
am <- get_additive_ibnr_model(large_claims_list = large_claims_list_xmpl,
                              first_orig_year = 1989,
                              last_orig_year = 2023,
                              exposure = exposure_xmpl,
                              years_for_ibnr_pools = 2014:2023)

expected_ibnr_numbers <- get_expected_ibnr_numbers(am, exposure_xmpl)
rounded_expected_ibnr_numbers <- round_expected_ibnr_numbers(expected_ibnr_numbers)
# Unrounded:
print(expected_ibnr_numbers)
#>             2        3         4         5         6         7         8
#> 1989 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 1990 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 1991 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 1992 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 1993 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 1994 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 1995 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 1996 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 1997 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 1998 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 1999 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 2000 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 2001 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 2002 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 2003 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 2004 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 2005 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 2006 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 2007 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 2008 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 2009 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 2010 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 2011 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 2012 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 2013 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 2014 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 2015 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 2016 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#> 2017 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.0000000 0.3165347
#> 2018 0.000000 0.000000 0.0000000 0.0000000 0.0000000 0.4227415 0.3200673
#> 2019 0.000000 0.000000 0.0000000 0.0000000 0.8584113 0.4334559 0.3281795
#> 2020 0.000000 0.000000 0.0000000 0.5434057 0.8793809 0.4440445 0.3361964
#> 2021 0.000000 0.000000 0.9920832 0.5581261 0.9032026 0.4560733 0.3453037
#> 2022 0.000000 1.670133 1.0165954 0.5719161 0.9255187 0.4673419 0.3538353
#> 2023 4.799245 1.741824 1.0602334 0.5964660 0.9652472 0.4874028 0.3690239
#>              9        10 11        12 13 14        15        16 17 18 19 20
#> 1989 0.0000000 0.0000000  0 0.0000000  0  0 0.0000000 0.0000000  0  0  0  0
#> 1990 0.0000000 0.0000000  0 0.0000000  0  0 0.0000000 0.0000000  0  0  0  0
#> 1991 0.0000000 0.0000000  0 0.0000000  0  0 0.0000000 0.0000000  0  0  0  0
#> 1992 0.0000000 0.0000000  0 0.0000000  0  0 0.0000000 0.0000000  0  0  0  0
#> 1993 0.0000000 0.0000000  0 0.0000000  0  0 0.0000000 0.0000000  0  0  0  0
#> 1994 0.0000000 0.0000000  0 0.0000000  0  0 0.0000000 0.0000000  0  0  0  0
#> 1995 0.0000000 0.0000000  0 0.0000000  0  0 0.0000000 0.0000000  0  0  0  0
#> 1996 0.0000000 0.0000000  0 0.0000000  0  0 0.0000000 0.0000000  0  0  0  0
#> 1997 0.0000000 0.0000000  0 0.0000000  0  0 0.0000000 0.0000000  0  0  0  0
#> 1998 0.0000000 0.0000000  0 0.0000000  0  0 0.0000000 0.0000000  0  0  0  0
#> 1999 0.0000000 0.0000000  0 0.0000000  0  0 0.0000000 0.0000000  0  0  0  0
#> 2000 0.0000000 0.0000000  0 0.0000000  0  0 0.0000000 0.0000000  0  0  0  0
#> 2001 0.0000000 0.0000000  0 0.0000000  0  0 0.0000000 0.0000000  0  0  0  0
#> 2002 0.0000000 0.0000000  0 0.0000000  0  0 0.0000000 0.0000000  0  0  0  0
#> 2003 0.0000000 0.0000000  0 0.0000000  0  0 0.0000000 0.0000000  0  0  0  0
#> 2004 0.0000000 0.0000000  0 0.0000000  0  0 0.0000000 0.0000000  0  0  0  0
#> 2005 0.0000000 0.0000000  0 0.0000000  0  0 0.0000000 0.0000000  0  0  0  0
#> 2006 0.0000000 0.0000000  0 0.0000000  0  0 0.0000000 0.0000000  0  0  0  0
#> 2007 0.0000000 0.0000000  0 0.0000000  0  0 0.0000000 0.0000000  0  0  0  0
#> 2008 0.0000000 0.0000000  0 0.0000000  0  0 0.0000000 0.0000000  0  0  0  0
#> 2009 0.0000000 0.0000000  0 0.0000000  0  0 0.0000000 0.1062928  0  0  0  0
#> 2010 0.0000000 0.0000000  0 0.0000000  0  0 0.1064654 0.1076853  0  0  0  0
#> 2011 0.0000000 0.0000000  0 0.0000000  0  0 0.1074844 0.1087160  0  0  0  0
#> 2012 0.0000000 0.0000000  0 0.0000000  0  0 0.1083262 0.1095675  0  0  0  0
#> 2013 0.0000000 0.0000000  0 0.2107992  0  0 0.1088354 0.1100825  0  0  0  0
#> 2014 0.0000000 0.0000000  0 0.2118543  0  0 0.1093801 0.1106335  0  0  0  0
#> 2015 0.0000000 0.2098748  0 0.2140643  0  0 0.1105212 0.1117876  0  0  0  0
#> 2016 0.2101968 0.2123478  0 0.2165867  0  0 0.1118235 0.1131048  0  0  0  0
#> 2017 0.2132277 0.2154098  0 0.2197098  0  0 0.1134360 0.1147358  0  0  0  0
#> 2018 0.2156074 0.2178139  0 0.2221619  0  0 0.1147020 0.1160163  0  0  0  0
#> 2019 0.2210720 0.2233344  0 0.2277926  0  0 0.1176091 0.1189567  0  0  0  0
#> 2020 0.2264725 0.2287901  0 0.2333572  0  0 0.1204821 0.1218626  0  0  0  0
#> 2021 0.2326074 0.2349878  0 0.2396787  0  0 0.1237459 0.1251638  0  0  0  0
#> 2022 0.2383546 0.2407938  0 0.2456006  0  0 0.1268033 0.1282563  0  0  0  0
#> 2023 0.2485862 0.2511301  0 0.2561431  0  0 0.1322465 0.1337618  0  0  0  0
#>             21        22 23 24 25 26        27
#> 1989 0.0000000 0.0000000  0  0  0  0 0.0000000
#> 1990 0.0000000 0.0000000  0  0  0  0 0.0000000
#> 1991 0.0000000 0.0000000  0  0  0  0 0.0000000
#> 1992 0.0000000 0.0000000  0  0  0  0 0.0000000
#> 1993 0.0000000 0.0000000  0  0  0  0 0.0000000
#> 1994 0.0000000 0.0000000  0  0  0  0 0.0000000
#> 1995 0.0000000 0.0000000  0  0  0  0 0.0000000
#> 1996 0.0000000 0.0000000  0  0  0  0 0.0000000
#> 1997 0.0000000 0.0000000  0  0  0  0 0.0000000
#> 1998 0.0000000 0.0000000  0  0  0  0 0.1230554
#> 1999 0.0000000 0.0000000  0  0  0  0 0.1256842
#> 2000 0.0000000 0.0000000  0  0  0  0 0.1276135
#> 2001 0.0000000 0.0000000  0  0  0  0 0.1295671
#> 2002 0.0000000 0.0000000  0  0  0  0 0.1311293
#> 2003 0.0000000 0.2154907  0  0  0  0 0.1319812
#> 2004 0.1069968 0.2169953  0  0  0  0 0.1329028
#> 2005 0.1076423 0.2183044  0  0  0  0 0.1337045
#> 2006 0.1086832 0.2204155  0  0  0  0 0.1349975
#> 2007 0.1114000 0.2259254  0  0  0  0 0.1383722
#> 2008 0.1121870 0.2275215  0  0  0  0 0.1393497
#> 2009 0.1134110 0.2300038  0  0  0  0 0.1408700
#> 2010 0.1148968 0.2330170  0  0  0  0 0.1427155
#> 2011 0.1159965 0.2352474  0  0  0  0 0.1440816
#> 2012 0.1169050 0.2370898  0  0  0  0 0.1452100
#> 2013 0.1174545 0.2382042  0  0  0  0 0.1458925
#> 2014 0.1180424 0.2393965  0  0  0  0 0.1466227
#> 2015 0.1192738 0.2418939  0  0  0  0 0.1481523
#> 2016 0.1206793 0.2447442  0  0  0  0 0.1498981
#> 2017 0.1224194 0.2482733  0  0  0  0 0.1520595
#> 2018 0.1237857 0.2510441  0  0  0  0 0.1537566
#> 2019 0.1269230 0.2574069  0  0  0  0 0.1576536
#> 2020 0.1300236 0.2636949  0  0  0  0 0.1615048
#> 2021 0.1335458 0.2708382  0  0  0  0 0.1658798
#> 2022 0.1368454 0.2775300  0  0  0  0 0.1699783
#> 2023 0.1427196 0.2894431  0  0  0  0 0.1772748
# Rounded:
print(rounded_expected_ibnr_numbers)
#>      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
#> 1989 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
#> 1990 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
#> 1991 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
#> 1992 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
#> 1993 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
#> 1994 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
#> 1995 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
#> 1996 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
#> 1997 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
#> 1998 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
#> 1999 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
#> 2000 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
#> 2001 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
#> 2002 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
#> 2003 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
#> 2004 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
#> 2005 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
#> 2006 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
#> 2007 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
#> 2008 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
#> 2009 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1
#> 2010 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0
#> 2011 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0
#> 2012 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0
#> 2013 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0
#> 2014 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0
#> 2015 0 0 0 0 0 0 0 0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0
#> 2016 0 0 0 0 0 0 0 0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
#> 2017 0 0 0 0 0 0 0 1  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0
#> 2018 0 0 0 0 0 0 1 0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0
#> 2019 0 0 0 0 1 0 1 0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0
#> 2020 0 0 0 1 0 1 0 0  1  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0
#> 2021 0 0 1 1 0 1 0 0  1  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0
#> 2022 0 2 1 0 1 1 0 0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1
#> 2023 5 2 1 0 1 1 0 0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1
# colsums before and after
print(data.frame(ColSums_unrounded = colSums(expected_ibnr_numbers),
                 ColSums_round = colSums(rounded_expected_ibnr_numbers)))
#>    ColSums_unrounded ColSums_round
#> 2           4.799245             5
#> 3           3.411957             4
#> 4           3.068912             3
#> 5           2.269914             2
#> 6           4.531761             3
#> 7           2.711060             4
#> 8           2.369141             2
#> 9           1.806125             1
#> 10          2.034482             3
#> 11          0.000000             0
#> 12          2.497748             2
#> 13          0.000000             0
#> 14          0.000000             0
#> 15          1.611861             2
#> 16          1.736623             1
#> 17          0.000000             0
#> 18          0.000000             0
#> 19          0.000000             0
#> 20          0.000000             0
#> 21          2.399831             2
#> 22          5.082480             6
#> 23          0.000000             0
#> 24          0.000000             0
#> 25          0.000000             0
#> 26          0.000000             0
#> 27          3.749908             3

# rowsums before and after
print(data.frame(RowSums_unrounded = rowSums(expected_ibnr_numbers),
                 RowSums_round = rowSums(rounded_expected_ibnr_numbers)))
#>      RowSums_unrounded RowSums_round
#> 1989         0.0000000             0
#> 1990         0.0000000             0
#> 1991         0.0000000             0
#> 1992         0.0000000             0
#> 1993         0.0000000             0
#> 1994         0.0000000             0
#> 1995         0.0000000             0
#> 1996         0.0000000             0
#> 1997         0.0000000             0
#> 1998         0.1230554             0
#> 1999         0.1256842             0
#> 2000         0.1276135             0
#> 2001         0.1295671             0
#> 2002         0.1311293             0
#> 2003         0.3474719             0
#> 2004         0.4568948             0
#> 2005         0.4596512             0
#> 2006         0.4640963             0
#> 2007         0.4756976             0
#> 2008         0.4790582             0
#> 2009         0.5905776             1
#> 2010         0.7047801             1
#> 2011         0.7115259             1
#> 2012         0.7170986             1
#> 2013         0.9312683             1
#> 2014         0.9359295             1
#> 2015         1.1555680             1
#> 2016         1.3793812             1
#> 2017         1.7158060             2
#> 2018         2.1576966             2
#> 2019         3.0707950             3
#> 2020         3.6892151             4
#> 2021         4.7812362             5
#> 2022         6.5695028             7
#> 2023        11.6507475            12