The income tax payable if tax settings are changed.
model_income_tax(sample_file, baseline_fy, n_dependants = 0L,
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,
Budget2018_lamington = FALSE, Budget2019_lamington = FALSE,
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.
The number of dependants for each entry in sample_file
.
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.
The maximum offset available for low incomes.
The taper to apply beyond lito_min_bracket
.
The taxable income at which the value of the offset starts to reduce (from lito_max_offset
).
A list of two components, named x
and y
, giving the value of a replacement for lito
at specified points, which will be linked by a piecewise linear curve between the points specified. For example, to mimic LITO in 2015-16 (when the offset was \$445 for incomes below \$37,000, and afterwards tapered off to \$66,667), one would use lito_multi = list(x = c(-Inf, 37e3, 200e3/3, Inf), y = c(445, 445, 0, 0))
. The reason the argument ends with multi
is that it is intended to extend the original parameters of LITO so that multiple kinks (including ones of positive and negative gradients) can be modelled.
logical; default is `FALSE`. If set to `TRUE`, calculates the amount that taxpayers would be entitled to under the Low and Middle Income Tax Offset as contained in the 2018 Budget.
logical; default is `FALSE`. If set to `TRUE`, calculates the amount that taxpayers would be entitled to under the Low and Middle Income Tax Offset as amended by the 2019 Budget.
The LITO proposed for 2022-23 proposed in the 2018 Budget.
logical; default is `FALSE`. If set to `TRUE`, calculates the "Working Australian Tax Refund" as proposed in the Labor Opposition Leader's Budget Reply Speech 2018.
logical; default is `FALSE`. If set to `TRUE`, calculates the "Working Australian Tax Refund" as revised in the Labor Opposition Leader's Budget Reply Speech 2019.
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.
# NOT RUN {
library(data.table)
library(hutils)
# With new tax-free threshold of $20,000:
if (requireNamespace("taxstats", quietly = TRUE)) {
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