Easily format metrics and metric variables for better readability.
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