4 Calculating SIMD

For the final calculation of the SIMD ranks we follow a few simple steps, see the script scripts/calculations/openSIMD.R:

  • load packages and data
  • inverse domain rankings
  • exponentially transform the inversed domain rankings
  • combine transformed domain scores
  • rank final SIMD scores

First, we load the packages and data from the previous domain rank calculations.

library(dplyr)
source("../openSIMD_analysis/scripts/utils/helpers.R")
domains <- read.csv("../openSIMD_analysis/results/domain_ranks.csv")

Then we invert the domain rankings (so that 1 = least deprived) and exponentially transform them, using expoTransform. This step spreads out the scores at the deprived end of each domain, so that where an area is deprived in one domain, this deprivation won’t be cancelled out by a lack of deprivation in another domain.

invRank <- function(v) rank(-v)

exponential_domains <- domains %>%
  mutate_at(vars(-data_zone), funs(invRank)) %>%
  mutate_at(vars(-data_zone), funs(expoTransform))

We then combine the domain ranks using fixed weightings.

with(exponential_domains, {
  simd_score <<-
    .28 * income +
    .28 * employment +
    .14 * health +
    .14 * education +
    .09 * access +
    .05 * crime +
    .02 * housing
})

Finally, we rank the final SIMD score to get the SIMD rankings (1 = most deprived).

simd_rank <- rank(-simd_score)

SIMD and domain ranks are saved in results/domain_ranks.csv and results/openSIMD_ranks.csv.