gemTax_3_3 {GE}R Documentation

Some General Equilibrium Models with Tax

Description

Some general equilibrium models with tax.

Usage

gemTax_3_3(...)

Arguments

...

arguments to be passed to the function sdm2.

References

LI Wu (2019, ISBN: 9787521804225) General Equilibrium and Structural Dynamics: Perspectives of New Structural Economics. Beijing: Economic Science Press. (In Chinese)

Examples


#### turnover tax.
dst.firm <- node_new("prod",
                     type = "FIN",
                     rate = c(1, tax.rate = 0.25),
                     "cc1", "tax"
)
node_set(dst.firm, "cc1",
         type = "CD",
         alpha = 2, beta = c(0.5, 0.5),
         "prod", "lab"
)

dst.laborer <- dst.government <-
  node_new("util",
    type = "Leontief",
    a = 1,
    "prod"
  )

ge.TT <- sdm2(
  A = list(dst.firm, dst.laborer, dst.government),
  B = diag(c(1, 0, 0)),
  S0Exg = matrix(c(
    NA, NA, NA,
    NA, 100, NA,
    NA, NA, 100
  ), 3, 3, TRUE),
  names.commodity = c("prod", "lab", "tax"),
  names.agent = c("firm", "laborer", "government"),
  numeraire = "prod"
)

ge.TT$p
ge.TT$z
ge.TT$D
ge.TT$S

#### product tax.
dst.taxed.prod <- node_new("taxed.prod",
                           type = "FIN",
                           rate = c(1, tax.rate = 0.25),
                           "prod", "tax"
)

dst.firm <- node_new("prod",
                     type = "CD",
                     alpha = 2, beta = c(0.5, 0.5),
                     dst.taxed.prod, "lab"
)

dst.laborer <- dst.government <-
  node_new("util",
    type = "Leontief",
    a = 1,
    dst.taxed.prod
  )

ge.PT <- sdm2(
  A = list(dst.firm, dst.laborer, dst.government),
  B = diag(c(1, 0, 0)),
  S0Exg = matrix(c(
    NA, NA, NA,
    NA, 100, NA,
    NA, NA, 100
  ), 3, 3, TRUE),
  names.commodity = c("prod", "lab", "tax"),
  names.agent = c("firm", "laborer", "government"),
  numeraire = "prod"
)

ge.PT$p
ge.PT$z
ge.PT$D
ge.PT$S

#### consumption tax.
dst.firm <- node_new("output",
                     type = "CD", alpha = 2,
                     beta = c(0.5, 0.5),
                     "prod", "lab"
)

dst.laborer <- node_new("util",
                        type = "FIN",
                        rate = c(1, consumption.tax.rate = 1/3),
                        "prod", "tax"
)

dst.government <- node_new("utility",
                           type = "Leontief",
                           a = 1,
                           "prod"
)

ge.CT <- sdm2(
  A = list(dst.firm, dst.laborer, dst.government),
  B = diag(c(1, 0, 0)),
  S0Exg = matrix(c(
    NA, NA, NA,
    NA, 100, NA,
    NA, NA, 100
  ), 3, 3, TRUE),
  names.commodity = c("prod", "lab", "tax"),
  names.agent = c("firm", "laborer", "government"),
  numeraire = "prod"
)

ge.CT$p
ge.CT$z
ge.CT$D
ge.CT$S

#### value added tax.
dst.firm <- node_new("output",
  type = "CD", alpha = 2,
  beta = c(0.5, 0.5),
  "prod", "taxed.lab"
)
node_set(dst.firm, "taxed.lab",
  type = "FIN",
  rate = c(1, vat.rate = 1/3),
  "lab", "tax"
)

dst.laborer <- dst.government <-
  node_new("util",
    type = "Leontief",
    a = 1,
    "prod"
  )

ge.VAT <- sdm2(
  A = list(dst.firm, dst.laborer, dst.government),
  B = diag(c(1, 0, 0)),
  S0Exg = matrix(c(
    NA, NA, NA,
    NA, 100, NA,
    NA, NA, 100
  ), 3, 3, TRUE),
  names.commodity = c("prod", "lab", "tax"),
  names.agent = c("firm", "laborer", "government"),
  numeraire = "prod"
)

ge.VAT$p
ge.VAT$z
ge.VAT$D
ge.VAT$S

#### income tax.
income.tax.rate <- 1 / 4

dst.firm <- node_new("output",
                     type = "CD",
                     alpha = 2, beta = c(0.5, 0.5),
                     "prod", "lab"
)

dst.laborer <- dst.government <-
  node_new("util",
    type = "Leontief",
    a = 1,
    "prod"
  )

ge.IT <- sdm2(
  A = list(dst.firm, dst.laborer, dst.government),
  B <- diag(c(1, 0), 2, 3),
  S0Exg = matrix(c(
    NA, NA, NA,
    NA, 100 * (1 - income.tax.rate), 100 * income.tax.rate
  ), 2, 3, TRUE),
  names.commodity = c("prod", "lab"),
  names.agent = c("firm", "laborer", "government"),
  numeraire = "prod"
)

ge.IT$p
ge.IT$z
ge.IT$D
ge.IT$S

#### turnover tax (Li, 2019, example 4.11).
dst.firm <- node_new("output",
                     type = "FIN",
                     rate = c(1, turnover.tax.rate = 1),
                     "cc1", "tax"
)
node_set(dst.firm, "cc1",
         type = "CD",
         alpha = 1, beta = c(0.5, 0.5),
         "prod", "lab"
)

dst.laborer1 <- node_new("util",
                          type = "CD",
                          alpha = 1, beta = c(0.5, 0.5),
                          "prod", "lab"
)

dst.laborer2 <- node_new("utility",
                          type = "Leontief",
                          a = 1,
                          "prod"
)

ge.TT2 <- sdm2(
  A = list(dst.firm, dst.laborer1, dst.laborer2),
  B = diag(c(1, 0, 0)),
  S0Exg = matrix(c(
    NA, NA, NA,
    NA, 100, NA,
    NA, NA, 100
  ), 3, 3, TRUE),
  names.commodity = c("prod", "lab", "tax"),
  names.agent = c("firm", "laborer1", "laborer2"),
  numeraire = "lab"
)

ge.TT2$p
ge.TT2$z

#### commodity tax in a pure exchange economy.
tax.rate <- 0.25
es.consumer1 <- 0.5
es.consumer2 <- 2

dst.consumer1 <- node_new("util",
                          type = "SCES", es = es.consumer1,
                          alpha = 1, beta = c(0.5, 0.5),
                          "comm1", "comm2"
)

dst.consumer2 <- node_new("util",
                          type = "SCES", es = es.consumer2,
                          alpha = 1, beta = c(0.5, 0.5),
                          "taxed.comm1", "comm2"
)
node_set(dst.consumer2, "taxed.comm1",
         type = "FIN",
         rate = c(1, tax.rate = tax.rate),
         "comm1", "tax"
)

dst.gov <- node_new("util",
                    type = "SCES", es = 0,
                    alpha = 1, beta = c(0.5, 0.5),
                    "comm1", "comm2"
)

ge.CT <- sdm2(
  A = list(dst.consumer1, dst.consumer2, dst.gov),
  B = matrix(0, 3, 3),
  S0Exg = matrix(c(
    100, NA, NA,
    NA, 100, NA,
    NA, NA, 100
  ), 3, 3, TRUE),
  names.commodity = c("comm1", "comm2", "tax"),
  names.agent = c("consumer1", "consumer2", "gov"),
  numeraire = "comm1"
)

ge.CT$p
ge.CT$z
ge.CT$D


[Package GE version 0.4.5 Index]