# \donttest{
MDCES_demand(
es = 1.7, beta = c(0.9, 0.1), xi = c(12, 48),
w = 24, p = c(1, 1 / 400),
betaMod = function(u.unmod) {
beta2 <- min(0.1, 10 / u.unmod)
c(1 - beta2, beta2)
},
detail = TRUE
)
#### An example of computing the daily
#### labor supply at various wage rates.
result <- c()
for (real.wage in 4:400) {
x <- MDCES_demand(
es = 1.7, beta = c(0.9, 0.1),
xi = c(12, 48), w = 24,
p = c(1, 1 / real.wage),
betaMod = function(u.unmod) {
beta2 <- min(0.1, 10 / u.unmod)
c(1 - beta2, beta2)
},
detail = TRUE
)
lab.supply <- unname(24 - x[1])
result <- rbind(
result,
c(real.wage, lab.supply, x)
)
}
plot(result[, 1:2],
type = "o", pch = 20,
xlab = "hourly real wage",
ylab = "daily labor supply"
)
#### A 2-by-2 general equilibrium model
#### with a MDCES demand function
ge <- sdm2(
A = function(state) {
a.firm <- CD_A(alpha = 5, Beta = c(0.5, 0.5), state$p)
a.consumer <-
MDCES_demand(
es = 1, beta = c(0.5, 0.5), xi = c(0, 0), w = state$w[2], p = state$p,
betaMod = function(u.unmod) {
beta2 <- 0.95 * plogis(u.unmod, location = 2, scale = 2)
c(1 - beta2, beta2)
}
)
cbind(a.firm, a.consumer)
},
B = matrix(c(
1, 0,
0, 0
), 2, 2, TRUE),
S0Exg = matrix(c(
NA, NA,
NA, 1
), 2, 2, TRUE),
names.commodity = c("prod", "lab"),
names.agent = c("firm", "consumer"),
numeraire = "lab"
)
ge$z
ge$D
MDCES_demand(
es = 1, beta = c(0.5, 0.5), xi = c(0, 0),
w = 1, p = ge$p,
betaMod = function(u.unmod) {
beta2 <- 0.95 * plogis(u.unmod, location = 2, scale = 2)
c(1 - beta2, beta2)
}
)
# }
Run the code above in your browser using DataLab