Rounding expected ibnr matrix
round_expected_ibnr_numbers.Rd
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!
Arguments
- expected_ibnr_numbers
Matrix as a result of
get_expected_ibnr_numbers()
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