Skip to contents

Easily format metrics and metric variables for better readability.

Usage

format_metrics(expstudy)

Arguments

expstudy

an expstudy object

Value

the same expstudy with formatted metrics

Examples

  es <- expstudy(
    data = mortexp,
    actuals = ACTUAL_DEATHS,
    expecteds = EXPECTED_DEATHS,
    exposures =  EXPOSURE,
    variances = VARIANCE_DEATHS
  )

  # Unformatted result:
  es %>%
    aggregate(
      GENDER,
      UNDERWRITING_CLASS
    ) %>%
    add_proportions %>%
    add_metrics %>%
    add_credibility
#> Source: local data table [6 x 14]
#> Call:   `_DT27`[, .(ACTUAL_DEATHS = sum(ACTUAL_DEATHS), EXPECTED_DEATHS = sum(EXPECTED_DEATHS), 
#>     EXPOSURE = sum(EXPOSURE), VARIANCE_DEATHS = sum(VARIANCE_DEATHS)), 
#>     keyby = .(GENDER, UNDERWRITING_CLASS)][, `:=`(PROP_ACTUAL_DEATHS = ACTUAL_DEATHS/sum(ACTUAL_DEATHS), 
#>     PROP_EXPECTED_DEATHS = EXPECTED_DEATHS/sum(EXPECTED_DEATHS), 
#>     PROP_EXPOSURE = EXPOSURE/sum(EXPOSURE), PROP_VARIANCE_DEATHS = VARIANCE_DEATHS/sum(VARIANCE_DEATHS))][, 
#>     `:=`(ACTUAL_TO_EXPECTED = ACTUAL_DEATHS/EXPECTED_DEATHS, 
#>         ACTUAL_TO_EXPOSED = ACTUAL_DEATHS/EXPOSURE, EXPECTED_TO_EXPOSED = EXPECTED_DEATHS/EXPOSURE)][, 
#>     `:=`(CREDIBILITY = pmin(1, 0.05 * EXPECTED_DEATHS/sqrt(1.95996398454005 * 
#>         VARIANCE_DEATHS)))]
#> 
#>   GENDER UNDERWRITING_CLASS ACTUAL_DEATHS EXPECTED_DEATHS EXPOSURE
#>   <fct>  <fct>                      <dbl>           <dbl>    <dbl>
#> 1 FEMALE PREFERRED                     12            10.6     626.
#> 2 FEMALE SELECT                        30            28.4    1602.
#> 3 FEMALE STANDARD                      92            68.2    3870.
#> 4 MALE   PREFERRED                     24            15.1     953.
#> 5 MALE   SELECT                        50            34.6    1932.
#> 6 MALE   STANDARD                     141            95.2    5281.
#> # ℹ 9 more variables: VARIANCE_DEATHS <dbl>, PROP_ACTUAL_DEATHS <dbl>,
#> #   PROP_EXPECTED_DEATHS <dbl>, PROP_EXPOSURE <dbl>,
#> #   PROP_VARIANCE_DEATHS <dbl>, ACTUAL_TO_EXPECTED <dbl>,
#> #   ACTUAL_TO_EXPOSED <dbl>, EXPECTED_TO_EXPOSED <dbl>, CREDIBILITY <dbl>
#> 
#> # Use as.data.table()/as.data.frame()/as_tibble() to access results

  # Formatted result:
  es %>%
    aggregate(
      GENDER,
      UNDERWRITING_CLASS
    ) %>%
    add_proportions %>%
    add_metrics %>%
    add_credibility %>%
    format_metrics
#> Source: local data table [6 x 14]
#> Call:   `_DT27`[, .(ACTUAL_DEATHS = sum(ACTUAL_DEATHS), EXPECTED_DEATHS = sum(EXPECTED_DEATHS), 
#>     EXPOSURE = sum(EXPOSURE), VARIANCE_DEATHS = sum(VARIANCE_DEATHS)), 
#>     keyby = .(GENDER, UNDERWRITING_CLASS)][, `:=`(PROP_ACTUAL_DEATHS = ACTUAL_DEATHS/sum(ACTUAL_DEATHS), 
#>     PROP_EXPECTED_DEATHS = EXPECTED_DEATHS/sum(EXPECTED_DEATHS), 
#>     PROP_EXPOSURE = EXPOSURE/sum(EXPOSURE), PROP_VARIANCE_DEATHS = VARIANCE_DEATHS/sum(VARIANCE_DEATHS))][, 
#>     `:=`(ACTUAL_TO_EXPECTED = ACTUAL_DEATHS/EXPECTED_DEATHS, 
#>         ACTUAL_TO_EXPOSED = ACTUAL_DEATHS/EXPOSURE, EXPECTED_TO_EXPOSED = EXPECTED_DEATHS/EXPOSURE)][, 
#>     `:=`(CREDIBILITY = pmin(1, 0.05 * EXPECTED_DEATHS/sqrt(1.95996398454005 * 
#>         VARIANCE_DEATHS)))][, `:=`(ACTUAL_DEATHS = formatC(ACTUAL_DEATHS, 
#>     format = "f", big.mark = ",", digits = 2), EXPECTED_DEATHS = formatC(EXPECTED_DEATHS, 
#>     format = "f", big.mark = ",", digits = 2), EXPOSURE = formatC(EXPOSURE, 
#>     format = "f", big.mark = ",", digits = 2), VARIANCE_DEATHS = formatC(VARIANCE_DEATHS, 
#>     format = "f", big.mark = ",", digits = 2), PROP_ACTUAL_DEATHS = paste0(round(PROP_ACTUAL_DEATHS * 
#>     100, 2), "%"), PROP_EXPECTED_DEATHS = paste0(round(PROP_EXPECTED_DEATHS * 
#>     100, 2), "%"), PROP_EXPOSURE = paste0(round(PROP_EXPOSURE * 
#>     100, 2), "%"), PROP_VARIANCE_DEATHS = paste0(round(PROP_VARIANCE_DEATHS * 
#>     100, 2), "%"), ACTUAL_TO_EXPECTED = paste0(round(ACTUAL_TO_EXPECTED * 
#>     100, 2), "%"), ACTUAL_TO_EXPOSED = paste0(round(ACTUAL_TO_EXPOSED * 
#>     100, 2), "%"), EXPECTED_TO_EXPOSED = paste0(round(EXPECTED_TO_EXPOSED * 
#>     100, 2), "%"), CREDIBILITY = paste0(round(CREDIBILITY * 100, 
#>     2), "%"))]
#> 
#>   GENDER UNDERWRITING_CLASS ACTUAL_DEATHS EXPECTED_DEATHS EXPOSURE
#>   <fct>  <fct>              <chr>         <chr>           <chr>   
#> 1 FEMALE PREFERRED          12.00         10.60           626.27  
#> 2 FEMALE SELECT             30.00         28.38           1,601.94
#> 3 FEMALE STANDARD           92.00         68.20           3,869.80
#> 4 MALE   PREFERRED          24.00         15.14           952.86  
#> 5 MALE   SELECT             50.00         34.57           1,932.45
#> 6 MALE   STANDARD           141.00        95.23           5,280.98
#> # ℹ 9 more variables: VARIANCE_DEATHS <chr>, PROP_ACTUAL_DEATHS <chr>,
#> #   PROP_EXPECTED_DEATHS <chr>, PROP_EXPOSURE <chr>,
#> #   PROP_VARIANCE_DEATHS <chr>, ACTUAL_TO_EXPECTED <chr>,
#> #   ACTUAL_TO_EXPOSED <chr>, EXPECTED_TO_EXPOSED <chr>, CREDIBILITY <chr>
#> 
#> # Use as.data.table()/as.data.frame()/as_tibble() to access results