The income tax payable if tax settings are changed.
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
)
A sample file having at least as many variables as the 2012-13 sample file.
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.
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.
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.
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.
The taper that applies between the _lower
and _upper
thresholds.
The ordinary rate of the Medicare levy for taxable incomes above medicare_levy_upper_threshold
.
Minimum taxable income at which the Medicare levy will be applied.
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
.
The equivalent values for SAPTO-eligible individuals (not families).
The equivalent values for families.
The equivalent values for SAPTO-eligible individuals in a family.
The amount to add to the _family_threshold
s for each dependant child.
(deprecated) The maximum offset available for low incomes.
(deprecated) The taper to apply beyond lito_min_bracket
.
(deprecated) The taxable income at which the value of the offset starts to reduce (from lito_max_offset
).
No longer supported.
A list of lists created by set_offsets
. If
NULL
, the default, the list is populated by the offsets
in baseline_fy
.
No longer supported
No longer supported.
No longer supported.
No longer supported
No longer supported.
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.
The maximum offset available through SAPTO.
The threshold at which SAPTO begins to reduce (from sapto_max_offset
).
The taper rate beyond sapto_lower_threshold
.
As above, but applied to members of a couple
The tax_discount
in small_business_tax_offset
.
(numeric(1)) The capital gains tax discount rate, currently 50%.
(logical, default: TRUE
) Should the income tax in baseline_fy
be included as a column in the result?
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.
If TRUE
, the default, then return. = sample_file
implies any columns called new_tax
or baseline_tax
in sample_file
are dropped silently.
If TRUE
, the default, then any inconsistency between baseline_fy
and the upper thresholds result in a warning. Set to FALSE
, if the lower_threshold
s may take priority.
Return a data.table of new_tax
. Experimental so cannot be relied in future versions.
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