makePolicyIncomeTax: Make a Policy of Income Tax

View source: R/makePolicyIncomeTax.R

makePolicyIncomeTaxR Documentation

Make a Policy of Income Tax

Description

This function returns a policy function that redistributes the supplies of economic agents, and the effect is equivalent to the collection of income tax.

Usage

makePolicyIncomeTax(agent, tax.rate, redistribution, time.win = c(1, Inf))

Arguments

agent

a vector specifying the indices or names of taxed agents.

tax.rate

a vector specifying the income tax rates for agents, which has the same length with the argument agent.

redistribution

a vector specifying the proportions of tax revenue received by agents, which has the same length with the argument agent.

time.win

the time window vector, i.e. a 2-vector specifying the start time and end time of policy implementation.

Value

A policy function, which is often used as an argument of the function sdm2.

References

Manuel Alejandro Cardenete, Ana-Isabel Guerra, Ferran Sancho (2012, ISBN: 9783642247453) Applied General Equilibrium: An Introduction. Springer-Verlag Berlin Heidelberg.

See Also

gemTax_5_4

Examples


## an exmaple of income tax (see Cardenete et al., 2012, Table 4.3)
dst.consumer1 <- node_new("utility",
                          type = "CD",
                          alpha = 1,
                          beta = c(0.3, 0.7),
                          "prod1", "prod2"
)

dst.consumer2 <- Clone(dst.consumer1)
dst.consumer2$beta <- c(0.6, 0.4)

dst.firm1 <- node_new("output",
                      type = "Leontief",
                      a = c(0.5, 0.2, 0.3),
                      "VA", "prod1", "prod2"
)
node_set(dst.firm1, "VA",
         type = "CD",
         alpha = 0.8^-0.8 * 0.2^-0.2,
         beta = c(0.8, 0.2),
         "lab", "cap"
)

dst.firm2 <- Clone(dst.firm1)
node_set(dst.firm2, "output",
         a = c(0.25, 0.5, 0.25)
)
node_set(dst.firm2, "VA",
         alpha = 0.4^-0.4 * 0.6^-0.6,
         beta = c(0.4, 0.6)
)
dstl <- list(dst.firm1, dst.firm2, dst.consumer1, dst.consumer2)
ge <- sdm2(dstl,
  names.commodity = c("prod1", "prod2", "lab", "cap"),
  names.agent = c("firm1", "firm2", "consumer1", "consumer2"),
  numeraire = "lab",
  B = {
    tmp <- matrix(0, 4, 4)
    tmp[1, 1] <- 1
    tmp[2, 2] <- 1
    tmp
  },
  S0Exg = {
    tmp <- matrix(NA, 4, 4)
    tmp[3:4, 3] <- c(30, 20)
    tmp[3:4, 4] <- c(20, 5)
    tmp
  },
  maxIteration = 1,
  policy = makePolicyIncomeTax(
    agent = c(3, 4),
    tax.rate = c(0.2, 0.2),
    redistribution = c(0.5, 0.5)
  )
)



GE documentation built on Nov. 8, 2023, 9:07 a.m.

Related to makePolicyIncomeTax in GE...