Learn R Programming

grattan (version 2024.1.1)

model_income_tax: Modelled Income Tax

Description

The income tax payable if tax settings are changed.

Usage

model_income_tax(
  sample_file,
  baseline_fy,
  elasticity_of_taxable_income = NULL,
  ordinary_tax_thresholds = NULL,
  ordinary_tax_rates = NULL,
  medicare_levy_taper = NULL,
  medicare_levy_rate = NULL,
  medicare_levy_lower_threshold = NULL,
  medicare_levy_upper_threshold = NULL,
  medicare_levy_lower_sapto_threshold = NULL,
  medicare_levy_upper_sapto_threshold = NULL,
  medicare_levy_lower_family_threshold = NULL,
  medicare_levy_upper_family_threshold = NULL,
  medicare_levy_lower_family_sapto_threshold = NULL,
  medicare_levy_upper_family_sapto_threshold = NULL,
  medicare_levy_lower_up_for_each_child = NULL,
  lito_max_offset = NULL,
  lito_taper = NULL,
  lito_min_bracket = NULL,
  lito_multi = NULL,
  offsets = NULL,
  Budget2018_lamington = FALSE,
  Budget2019_lamington = NA,
  Budget2018_lito_202223 = FALSE,
  Budget2018_watr = FALSE,
  Budget2019_watr = FALSE,
  sapto_eligible = NULL,
  sapto_max_offset = NULL,
  sapto_lower_threshold = NULL,
  sapto_taper = NULL,
  sapto_max_offset_married = NULL,
  sapto_lower_threshold_married = NULL,
  sapto_taper_married = NULL,
  sbto_discount = NULL,
  cgt_discount_rate = NULL,
  calc_baseline_tax = TRUE,
  return. = c("sample_file", "tax", "sample_file.int"),
  clear_tax_cols = TRUE,
  warn_upper_thresholds = TRUE,
  .debug = FALSE
)

Arguments

sample_file

A sample file having at least as many variables as the 2012-13 sample file.

baseline_fy

If a parameter is not selected, the parameter's value in this tax year is used.

Must be a valid tax year and one for which income_tax has been programmed.

elasticity_of_taxable_income

Either NULL (the default), or a numeric vector the same length of sample_file (or length-1) providing the elasticity of taxable income for each observation in sample_file; $$\frac{\Delta z / z}{\Delta \tau / (1 - \tau)}$$ where \(z\) is taxable income and \(\tau\) is tax payable.

For example, if, for a given taxpayer, the tax settings would otherwise result in a 2% decrease of disposable income under the tax settings to be modelled, and elasticity_of_taxable_income is set to 0.1, the Taxable_Income is reduced by 0.2% before the tax rates are applied.

If NULL, an elasticity of 0 is used.

ordinary_tax_thresholds

A numeric vector specifying the lower bounds of the brackets for "ordinary tax" as defined by the Regulations. The first element should be zero if there is a tax-free threshold.

ordinary_tax_rates

The marginal rates of ordinary tax. The first element should be zero if there is a tax-free threshold. Since the temporary budget repair levy was imposed on a discrete tax bracket when it applied, it is not included in this function.

medicare_levy_taper

The taper that applies between the _lower and _upper thresholds.

medicare_levy_rate

The ordinary rate of the Medicare levy for taxable incomes above medicare_levy_upper_threshold.

medicare_levy_lower_threshold

Minimum taxable income at which the Medicare levy will be applied.

medicare_levy_upper_threshold

Minimum taxable income at which the Medicare levy will be applied at the full Medicare levy rate (2% in 2015-16). Between this threshold and the medicare_levy_lower_threshold, a tapered rate applies, starting from zero and climbing to medicare_levy_rate.

medicare_levy_lower_sapto_threshold, medicare_levy_upper_sapto_threshold

The equivalent values for SAPTO-eligible individuals (not families).

medicare_levy_lower_family_threshold, medicare_levy_upper_family_threshold

The equivalent values for families.

medicare_levy_lower_family_sapto_threshold, medicare_levy_upper_family_sapto_threshold

The equivalent values for SAPTO-eligible individuals in a family.

medicare_levy_lower_up_for_each_child

The amount to add to the _family_thresholds for each dependant child.

lito_max_offset

(deprecated) The maximum offset available for low incomes.

lito_taper

(deprecated) The taper to apply beyond lito_min_bracket.

lito_min_bracket

(deprecated) The taxable income at which the value of the offset starts to reduce (from lito_max_offset).

lito_multi

No longer supported.

offsets

A list of lists created by set_offsets. If NULL, the default, the list is populated by the offsets in baseline_fy.

Budget2018_lamington

No longer supported

Budget2019_lamington

No longer supported.

Budget2018_lito_202223

No longer supported.

Budget2018_watr

No longer supported

Budget2019_watr

No longer supported.

sapto_eligible

Whether or not each taxpayer in sample_file is eligible for SAPTO. If NULL, the default, then eligibility is determined by age_range in sample_file; i.e., if age_range <= 1 then the taxpayer is assumed to be eligible for SAPTO.

sapto_max_offset

The maximum offset available through SAPTO.

sapto_lower_threshold

The threshold at which SAPTO begins to reduce (from sapto_max_offset).

sapto_taper

The taper rate beyond sapto_lower_threshold.

sapto_max_offset_married, sapto_lower_threshold_married, sapto_taper_married

As above, but applied to members of a couple

sbto_discount

The tax_discount in small_business_tax_offset.

cgt_discount_rate

(numeric(1)) The capital gains tax discount rate, currently 50%.

calc_baseline_tax

(logical, default: TRUE) Should the income tax in baseline_fy be included as a column in the result?

return.

What should the function return? One of tax, sample_file, or sample_file.int. If tax, the tax payable under the settings; if sample_file, the sample_file, but with variables tax and possibly new_taxable_income; if sample_file.int, same as sample_file but new_tax is coerced to integer.

clear_tax_cols

If TRUE, the default, then return. = sample_file implies any columns called new_tax or baseline_tax in sample_file are dropped silently.

warn_upper_thresholds

If TRUE, the default, then any inconsistency between baseline_fy and the upper thresholds result in a warning. Set to FALSE, if the lower_thresholds may take priority.

.debug

Return a data.table of new_tax. Experimental so cannot be relied in future versions.

Examples

Run this code

library(data.table)
library(hutils)

# With new tax-free threshold of $20,000:
# if (requireNamespace("taxstats", quietly = TRUE) && FALSE) {
# library(taxstats)
# library(magrittr)
#    
# model_income_tax(sample_file_1314,
#                  "2013-14",
#                  ordinary_tax_thresholds = c(0, 20e3, 37e3, 80e3, 180e3)) %>%
 #   select_grep("tax", "Taxable_Income")
#
# }

Run the code above in your browser using DataLab