tests/testthat/test_total_receipts.R

context("Tax receipts")

test_that("income_tax on individual sample file reflect historical collections", {
  # testthat::skip_on_travis()
  
  # True value of personal income tax receipts was $159.021 billion
  # 5506.0 - Taxation Revenue, Australia, 2013-14
  actual_collections <- 159.021 * 10^9
  
  prop_c <- function(actual, predicted){
    abs(predicted - actual) / actual
  }
  
  # basic taxable income to tax
  test1 <- 
    .sample_file_("1213") %>%
    copy %>%
    .[, tax0 := income_tax(Taxable_Income, "2012-13")] %>%
    .[, tax1 := income_tax(Taxable_Income, "2012-13", age = 42)] 
  
  expect_lte(prop_c(sum(test1$tax0) * 50, actual_collections), 0.02)
  expect_lte(prop_c(sum(test1$tax1) * 50, actual_collections), 0.02)
  
  # sum(test1$tax0) * 50 / 1e9
  # # [1] 159.24
  # sum(test1$tax1) * 50 / 1e9
  # # [1] 159.24
  
  age_decoder <- 
    read.table(text="Age ranges	Age ranges - description
             0	70 to 75
             1	65 to 69
             2	60 to 64
             3	55 to 59
             4	50 to 54
             5	45 to 49
             6	40 to 44
             7	35 to 39
             8	30 to 34
             9	25 to 29
             10	20 to 24
             11	16 to 20", header = TRUE, sep = "\t") %>%
    as.data.table %>%
    setnames(old = names(.), new = c("age_range", "age")) %>%
    .[, age := sub("\\sto.*$", "", age)] %>%
    setkey(age_range)
  setkey(.sample_file_("1213"), age_range)
  tax.collection <- 
    .sample_file_("1213")[age_decoder] %$%
    {
      sum(income_tax(income = Taxable_Income, fy.year = "2012-13", age = as.integer(age))) * 50
    }
  
  expect_lte(abs(tax.collection - actual_collections)/actual_collections, expected = 0.01)
  
})
HughParsonage/grattan documentation built on April 1, 2024, 4:10 a.m.