Univariate analysis for discrete risk factors in an insurance portfolio. The following summary statistics are calculated:
frequency (i.e. number of claims / exposure)
average severity (i.e. severity / number of claims)
risk premium (i.e. severity / exposure)
loss ratio (i.e. severity / premium)
average premium (i.e. premium / exposure)
If input arguments are not specified, the summary statistics related to these arguments are ignored.
univariate(
df,
x,
severity = NULL,
nclaims = NULL,
exposure = NULL,
premium = NULL,
by = NULL
)
data.frame with insurance portfolio
column in df
with risk factor, or use vec_ext()
for use with
an external vector (see examples)
column in df
with severity (default is NULL)
column in df
with number of claims (default is NULL)
column in df
with exposure (default is NULL)
column in df
with premium (default is NULL)
list of column(s) in df
to group by
A data.frame
# Summarize by `area`
univariate(MTPL2, x = area, severity = amount, nclaims = nclaims,
exposure = exposure, premium = premium)
#> area amount nclaims exposure premium frequency average_severity
#> 1: 2 4063270 98 818.53973 51896 0.11972540 41461.94
#> 2: 3 7945311 113 764.99178 49337 0.14771401 70312.49
#> 3: 1 6896187 146 1065.74795 65753 0.13699299 47234.16
#> 4: 0 6922 1 13.30685 902 0.07514927 6922.00
#> risk_premium loss_ratio average_premium
#> 1: 4964.0474 78.296400 63.40071
#> 2: 10386.1390 161.041632 64.49350
#> 3: 6470.7486 104.880188 61.69658
#> 4: 520.1832 7.674058 67.78464
# Summarize by `area`, with column name in external vector
xt <- "area"
univariate(MTPL2, x = vec_ext(xt), severity = amount, nclaims = nclaims,
exposure = exposure, premium = premium)
#> area amount nclaims exposure premium frequency average_severity
#> 1: 2 4063270 98 818.53973 51896 0.11972540 41461.94
#> 2: 3 7945311 113 764.99178 49337 0.14771401 70312.49
#> 3: 1 6896187 146 1065.74795 65753 0.13699299 47234.16
#> 4: 0 6922 1 13.30685 902 0.07514927 6922.00
#> risk_premium loss_ratio average_premium
#> 1: 4964.0474 78.296400 63.40071
#> 2: 10386.1390 161.041632 64.49350
#> 3: 6470.7486 104.880188 61.69658
#> 4: 520.1832 7.674058 67.78464
# Summarize by `zip` and `bm`
univariate(MTPL, x = zip, severity = amount, nclaims = nclaims,
exposure = exposure, by = bm)
#> zip bm amount nclaims exposure frequency average_severity
#> 1: 1 5 4938135 82 5.496986e+02 0.14917265 60221.16
#> 2: 1 3 3623485 86 6.139808e+02 0.14006952 42133.55
#> 3: 2 8 1739654 38 2.491890e+02 0.15249467 45780.37
#> 4: 1 10 2077041 73 4.514219e+02 0.16171124 28452.62
#> 5: 3 1 20064123 381 2.841123e+03 0.13410189 52661.74
#> 6: 3 6 3814492 82 5.386904e+02 0.15222101 46518.20
#> 7: 3 2 11182348 179 1.281537e+03 0.13967603 62471.22
#> 8: 2 1 25368747 356 2.943959e+03 0.12092560 71260.53
#> 9: 1 2 17512277 287 1.835279e+03 0.15637945 61018.39
#> 10: 2 9 574527 25 2.366575e+02 0.10563788 22981.08
#> 11: 2 5 6306221 57 3.963425e+02 0.14381502 110635.46
#> 12: 1 1 38308837 601 4.208589e+03 0.14280320 63741.83
#> 13: 2 2 7792412 175 1.270674e+03 0.13772219 44528.07
#> 14: 3 7 1266843 25 2.335315e+02 0.10705194 50673.72
#> 15: 1 8 5616740 56 3.791479e+02 0.14769960 100298.93
#> 16: 1 6 4944980 106 8.312466e+02 0.12751932 46650.75
#> 17: 2 6 3349845 96 5.949534e+02 0.16135717 34894.22
#> 18: 1 11 25037469 65 4.450082e+02 0.14606472 385191.83
#> 19: 2 12 3538040 56 4.113178e+02 0.13614776 63179.29
#> 20: 2 4 2408722 23 1.800904e+02 0.12771363 104727.04
#> 21: 3 5 2723499 70 3.875151e+02 0.18063814 38907.13
#> 22: 2 3 3098089 44 4.148548e+02 0.10606121 70411.11
#> 23: 1 9 1851067 34 3.112082e+02 0.10925161 54443.15
#> 24: 3 9 2261054 30 2.166712e+02 0.13845862 75368.47
#> 25: 3 15 76264 4 4.481370e+01 0.08925842 19066.00
#> 26: 3 8 1555538 33 2.344466e+02 0.14075701 47137.52
#> 27: 1 7 1963040 44 3.587753e+02 0.12263942 44614.55
#> 28: 3 3 6703451 61 4.764192e+02 0.12803851 109892.64
#> 29: 2 10 1685630 42 2.709918e+02 0.15498625 40134.05
#> 30: 3 12 2661213 52 4.029890e+02 0.12903577 51177.17
#> 31: 3 4 2767687 22 1.834274e+02 0.11993846 125803.95
#> 32: 2 7 1204679 33 2.563014e+02 0.12875468 36505.42
#> 33: 1 12 3553663 72 5.301863e+02 0.13580132 49356.43
#> 34: 2 11 1859592 36 3.522411e+02 0.10220273 51655.33
#> 35: 3 10 1287843 36 2.741397e+02 0.13131989 35773.42
#> 36: 3 11 2262033 46 3.108137e+02 0.14799862 49174.63
#> 37: 2 15 150454 6 4.660822e+01 0.12873266 25075.67
#> 38: 1 4 4796423 58 2.809178e+02 0.20646608 82696.95
#> 39: 1 15 1451895 12 8.560000e+01 0.14018692 120991.25
#> 40: 0 6 87395 4 2.312877e+01 0.17294480 21848.75
#> 41: 0 1 154173 11 7.426301e+01 0.14812219 14015.73
#> 42: 0 2 7777 2 3.186027e+01 0.06277410 3888.50
#> 43: 1 13 110245 3 7.600000e+01 0.03947368 36748.33
#> 44: 1 17 6074 1 1.374247e+01 0.07276715 6074.00
#> 45: 3 19 0 0 7.449315e+00 0.00000000 NaN
#> 46: 0 9 20242 2 5.764384e+00 0.34695817 10121.00
#> 47: 3 18 15231 1 5.586301e+00 0.17900932 15231.00
#> 48: 1 14 53670 3 4.708767e+01 0.06371094 17890.00
#> 49: 3 13 54270 2 5.586027e+01 0.03580362 27135.00
#> 50: 2 14 98128 3 4.833973e+01 0.06206076 32709.33
#> 51: 0 3 222411 2 1.365753e+01 0.14643932 111205.50
#> 52: 3 16 54425 3 2.939726e+01 0.10205033 18141.67
#> 53: 2 13 316269 10 6.207397e+01 0.16109812 31626.90
#> 54: 2 16 15444 3 2.256986e+01 0.13292061 5148.00
#> 55: 1 16 155194 4 3.359452e+01 0.11906704 38798.50
#> 56: 0 10 0 0 7.926027e+00 0.00000000 NaN
#> 57: 3 20 0 0 4.602740e+00 0.00000000 NaN
#> 58: 3 14 231207 10 4.981096e+01 0.20075903 23120.70
#> 59: 0 4 27081 1 6.208219e+00 0.16107679 27081.00
#> 60: 2 20 0 0 5.000000e+00 0.00000000 NaN
#> 61: 1 20 0 0 6.693151e+00 0.00000000 NaN
#> 62: 1 19 63398 3 8.550685e+00 0.35084909 21132.67
#> 63: 2 17 0 0 5.693151e+00 0.00000000 NaN
#> 64: 0 16 217640 3 2.317808e+00 1.29432624 72546.67
#> 65: 0 11 57540 1 7.000000e+00 0.14285714 57540.00
#> 66: 0 12 18745 1 1.166027e+01 0.08576128 18745.00
#> 67: 2 18 166183 3 5.093151e+00 0.58902636 55394.33
#> 68: 0 5 5178 1 1.267945e+01 0.07886776 5178.00
#> 69: 0 15 0 0 6.301370e-02 0.00000000 NaN
#> 70: 1 18 0 0 5.865753e+00 0.00000000 NaN
#> 71: 2 19 5518 1 6.843836e+00 0.14611689 5518.00
#> 72: 1 23 2496 1 1.964384e+00 0.50906555 2496.00
#> 73: 1 21 112540 2 3.068493e+00 0.65178571 56270.00
#> 74: 0 8 3328 1 6.260274e+00 0.15973742 3328.00
#> 75: 3 17 7441 1 5.739726e+00 0.17422434 7441.00
#> 76: 2 22 73831 1 5.315068e-01 1.88144330 73831.00
#> 77: 0 21 0 0 1.000000e+00 0.00000000 NaN
#> 78: 1 22 0 0 3.000000e+00 0.00000000 NaN
#> 79: 2 23 0 0 1.304110e+00 0.00000000 NaN
#> 80: 0 14 0 0 5.479452e-02 0.00000000 NaN
#> 81: 0 7 0 0 2.000000e+00 0.00000000 NaN
#> 82: 0 13 0 0 1.000000e+00 0.00000000 NaN
#> 83: 3 21 0 0 3.000000e+00 0.00000000 NaN
#> 84: 2 21 0 0 1.000000e+00 0.00000000 NaN
#> zip bm amount nclaims exposure frequency average_severity
#> risk_premium
#> 1: 8983.3497
#> 2: 5901.6257
#> 3: 6981.2621
#> 4: 4601.1080
#> 5: 7062.0388
#> 6: 7081.0468
#> 7: 8725.7318
#> 8: 8617.2219
#> 9: 9542.0221
#> 10: 2427.6726
#> 11: 15911.0404
#> 12: 9102.5369
#> 13: 6132.5030
#> 14: 5424.7198
#> 15: 14814.1117
#> 16: 5948.8726
#> 17: 5630.4323
#> 18: 56262.9361
#> 19: 8601.7185
#> 20: 13375.0708
#> 21: 7028.1112
#> 22: 7467.8877
#> 23: 5948.0016
#> 24: 10435.4139
#> 25: 1701.8011
#> 26: 6634.9359
#> 27: 5471.5020
#> 28: 14070.4894
#> 29: 6220.2256
#> 30: 6603.6858
#> 31: 15088.7329
#> 32: 4700.2441
#> 33: 6702.6685
#> 34: 5279.3158
#> 35: 4697.7613
#> 36: 7277.7777
#> 37: 3228.0573
#> 38: 17074.1151
#> 39: 16961.3902
#> 40: 3778.6277
#> 41: 2076.0402
#> 42: 244.0971
#> 43: 1450.5921
#> 44: 441.9876
#> 45: 0.0000
#> 46: 3511.5637
#> 47: 2726.4909
#> 48: 1139.7888
#> 49: 971.5312
#> 50: 2029.9660
#> 51: 16284.8576
#> 52: 1851.3630
#> 53: 5095.0340
#> 54: 684.2753
#> 55: 4619.6224
#> 56: 0.0000
#> 57: 0.0000
#> 58: 4641.6894
#> 59: 4362.1205
#> 60: 0.0000
#> 61: 0.0000
#> 62: 7414.3768
#> 63: 0.0000
#> 64: 93899.0544
#> 65: 8220.0000
#> 66: 1607.5952
#> 67: 32628.7224
#> 68: 408.3773
#> 69: 0.0000
#> 70: 0.0000
#> 71: 806.2730
#> 72: 1270.6276
#> 73: 36675.9821
#> 74: 531.6061
#> 75: 1296.4033
#> 76: 138908.8402
#> 77: 0.0000
#> 78: 0.0000
#> 79: 0.0000
#> 80: 0.0000
#> 81: 0.0000
#> 82: 0.0000
#> 83: 0.0000
#> 84: 0.0000
#> risk_premium
# Summarize by `zip`, `bm` and `power`
univariate(MTPL, x = zip, severity = amount, nclaims = nclaims,
exposure = exposure, by = list(bm, power))
#> zip bm power amount nclaims exposure frequency average_severity
#> 1: 1 5 106 0 0 1.0000000 0.00000000 NaN
#> 2: 1 3 74 2687 1 14.1397260 0.07072273 2687.00
#> 3: 2 8 65 0 0 5.0000000 0.00000000 NaN
#> 4: 1 10 64 0 0 7.0000000 0.00000000 NaN
#> 5: 3 1 29 37784 3 21.8849315 0.13708062 12594.67
#> ---
#> 3286: 1 13 87 0 0 1.0000000 0.00000000 NaN
#> 3287: 2 12 140 9016 1 1.0000000 1.00000000 9016.00
#> 3288: 3 1 145 0 0 1.0000000 0.00000000 NaN
#> 3289: 1 20 66 0 0 1.0000000 0.00000000 NaN
#> 3290: 1 6 57 0 0 0.1178082 0.00000000 NaN
#> risk_premium
#> 1: 0.000
#> 2: 190.032
#> 3: 0.000
#> 4: 0.000
#> 5: 1726.485
#> ---
#> 3286: 0.000
#> 3287: 9016.000
#> 3288: 0.000
#> 3289: 0.000
#> 3290: 0.000