A worked example follows to serve as motivation for the use case.
TODO
elt <- create_elt(raw_elt, ann_rate="rate", mu="mean", sdev_i = "sdevi" , sdev_c = "sdevc", expval = "exp")
elt
#> id rate mean sdevi sdevc exp mdr sdev cov alpha
#> <int> <num> <int> <int> <int> <int> <num> <int> <num> <num>
#> 1: 1 0.10 500 500 200 100000 0.0050000 700 1.40 0.502653061
#> 2: 2 0.10 200 400 100 5000 0.0400000 500 2.50 0.113600000
#> 3: 3 0.20 300 200 400 40000 0.0075000 600 2.00 0.240625000
#> 4: 4 0.10 100 300 500 4000 0.0250000 800 8.00 -0.009765625
#> 5: 5 0.20 500 100 200 2000 0.2500000 300 0.60 1.833333333
#> 6: 6 0.25 200 200 500 50000 0.0040000 700 3.50 0.077306122
#> 7: 7 0.01 1000 500 600 100000 0.0100000 1100 1.10 0.808181818
#> 8: 8 0.12 250 300 100 5000 0.0500000 400 1.60 0.321093750
#> 9: 9 0.14 1000 500 200 6000 0.1666667 700 0.70 1.534013605
#> 10: 10 0.00 10000 1000 500 1000000 0.0100000 1500 0.15 43.990000000
#> beta random_num
#> <num> <num>
#> 1: 100.0279592 0.081967213
#> 2: 2.7264000 0.081967213
#> 3: 31.8427083 0.163934426
#> 4: -0.3808594 0.081967213
#> 5: 5.5000000 0.163934426
#> 6: 19.2492245 0.204918033
#> 7: 80.0100000 0.008196721
#> 8: 6.1007812 0.098360656
#> 9: 7.6700680 0.114754098
#> 10: 4355.0100000 0.000000000ylt <- create_ylt(elt, sims=10 ,ann_rate = "rate" , event_id = "id", expval = "exp" , mu ="mean")
#> Warning in stats::rbeta(length(row_port), dt$alpha[row_port],
#> dt$beta[row_port]): NAs produced
ylt
#> Year Loss Event
#> <int> <num> <char>
#> 1: 1 0.000000e+00 None
#> 2: 2 9.708117e+02 8
#> 3: 3 1.386400e+01 3
#> 4: 3 4.648847e+02 1
#> 5: 4 4.410310e+01 2
#> 6: 4 4.261854e+01 8
#> 7: 4 4.215657e+02 8
#> 8: 4 4.199530e+00 6
#> 9: 5 1.000000e+02 4
#> 10: 5 6.907311e+01 1
#> 11: 5 2.337397e-05 2
#> 12: 5 2.445585e-01 8
#> 13: 6 2.867179e+03 3
#> 14: 6 2.871440e+02 5
#> 15: 7 0.000000e+00 None
#> 16: 8 0.000000e+00 None
#> 17: 9 3.332927e-05 2
#> 18: 10 0.000000e+00 None
# Layer 500 xs 50
ylt[ , layer1_loss := layer_loss(Loss, Excess = 50 , Limit = 500 ) ]
ylt
#> Year Loss Event layer1_loss
#> <int> <num> <char> <num>
#> 1: 1 0.000000e+00 None 0.00000
#> 2: 2 9.708117e+02 8 500.00000
#> 3: 3 1.386400e+01 3 0.00000
#> 4: 3 4.648847e+02 1 414.88473
#> 5: 4 4.410310e+01 2 0.00000
#> 6: 4 4.261854e+01 8 0.00000
#> 7: 4 4.215657e+02 8 371.56568
#> 8: 4 4.199530e+00 6 0.00000
#> 9: 5 1.000000e+02 4 50.00000
#> 10: 5 6.907311e+01 1 19.07311
#> 11: 5 2.337397e-05 2 0.00000
#> 12: 5 2.445585e-01 8 0.00000
#> 13: 6 2.867179e+03 3 500.00000
#> 14: 6 2.871440e+02 5 237.14404
#> 15: 7 0.000000e+00 None 0.00000
#> 16: 8 0.000000e+00 None 0.00000
#> 17: 9 3.332927e-05 2 0.00000
#> 18: 10 0.000000e+00 None 0.00000
ann <-ylt[, lapply( .SD , sum), by=Year, .SDcols = c("Loss","layer1_loss") ]
ann
#> Year Loss layer1_loss
#> <int> <num> <num>
#> 1: 1 0.000000e+00 0.00000
#> 2: 2 9.708117e+02 500.00000
#> 3: 3 4.787487e+02 414.88473
#> 4: 4 5.124868e+02 371.56568
#> 5: 5 1.693177e+02 69.07311
#> 6: 6 3.154323e+03 737.14404
#> 7: 7 0.000000e+00 0.00000
#> 8: 8 0.000000e+00 0.00000
#> 9: 9 3.332927e-05 0.00000
#> 10: 10 0.000000e+00 0.00000
expected_loss <- ann[ , lapply(.SD, mean) , .SDcols = c("Loss","layer1_loss") ]
expected_loss
#> Loss layer1_loss
#> <num> <num>
#> 1: 528.5688 209.2668
ep <-create_oep_curve(ann , y= "Year", z="Loss")
ep
#> return_period OEP
#> <num> <num>
#> 1: 10000 3152.35781
#> 2: 5000 3150.39265
#> 3: 1000 3134.67137
#> 4: 500 3115.01976
#> 5: 250 3075.71656
#> 6: 200 3056.06496
#> 7: 100 2957.80695
#> 8: 50 2761.29093
#> 9: 25 2368.25890
#> 10: 10 1189.16280
#> 11: 5 604.15181
#> 12: 2 84.65886