R/util_cobb_douglas.R

Defines functions obj_sum.util_cobb_douglas type_sum.util_cobb_douglas util_demand_marshall.util_cobb_douglas util_calibrate.util_cobb_douglas util_cobb_douglas

#' @export
util_cobb_douglas <- function() {
  f <- function(efficiency, weights, quantities) {
    efficiency * prod(quantities ^ weights)
  }

  new_util_homothetic(f,
                      efficiency = NA_real_,
                      weights = double(),
                      class = "util_cobb_douglas")
}

#' @export
util_calibrate.util_cobb_douglas <- function(x, prices, quantities, ...) {
  weights <- prices * quantities
  weights <- weights / sum(weights)

  x$weights <- weights
  x$efficiency <- sum(prices * quantities) / prod(quantities ^ weights)
  x
}

#' @export
util_demand_marshall.util_cobb_douglas <- function(x, prices, income, ...) {
  weights <- x$weights
  income * weights / sum(weights) / prices
}

#' @export
type_sum.util_cobb_douglas <- function(x, ...) {
  "Cobb-Douglas"
}

#' @export
obj_sum.util_cobb_douglas <- function(x, ...) {
  paste0(type_sum(x), ": ", big_mark(x$efficiency))
}
UchidaMizuki/econutil documentation built on June 6, 2023, 1:12 a.m.