Transportation Methods for Econometrics via Rcpp modules
TraME (Transportation Methods for Econometrics) is a C++ library for solving problems of equilibrium computation and estimation in consumer demand and matching frameworks via the Mass Transportation Approach.
TraME-Rcpp is a package of Rcpp modules that allows seamless integration of the TraME C++ library with R.
The quickest way to install TraME-Rcpp is via the devtools package.
install.packages("devtools")
library(devtools)
install_github("TraME-Project/TraME-Rcpp")
The TraME test routines are invoked as follows:
library(TraME.Rcpp)
tests_TraME()
Note that TraME requires compilation, and so an appropriate development environment is necessary to install the package.
The following code replicates the example from here.
rm(list=ls())
library(TraME.Rcpp)
#
nbX = 18 # number of x types
nbY = 5 # number of y types
sigma = 1 # scaling value
n = rep(1,nbX) # number of agents of each type
m = rep(1,nbY)
# systematic utilities
alpha = matrix(runif(nbX*nbY),nbX,nbY)
gamma = matrix(runif(nbX*nbY),nbX,nbY)
lambda = 1 + matrix(runif(nbX*nbY),nbX,nbY)
zeta = 1 + matrix(runif(nbX*nbY),nbX,nbY)
phi = alpha + gamma
lambda_LTU = lambda/(lambda + zeta)
phi_LTU = (lambda*alpha + zeta*gamma) / (lambda + zeta)
# build markets
mfe_geo_obj <- new(mfe_geo) # geometric matching function <=> perfectly transferable utility
mfe_geo_obj$build(n,m,phi,sigma,FALSE)
mfe_cd_obj <- new(mfe_cd) # CD matching function <=> linearly transferable utility
mfe_cd_obj$build(n,m,lambda_LTU,phi_LTU,sigma,FALSE)
mfe_min_obj <- new(mfe_min) # min matching function <=> non-transferable utility
mfe_min_obj$build(n,m,alpha,gamma,sigma,FALSE)
# run IPFP
ptm = proc.time()
sol_geo <- mfe_geo_obj$solve("ipfp")
sol_cd <- mfe_cd_obj$solve("ipfp")
sol_min <- mfe_min_obj$solve("ipfp")
time = proc.time() - ptm
message(paste0('\nTime taken = ', time["elapsed"], 's.\n'))
sol_cd <- mfe_cd_obj$solve("ipfp",1E-04,1000) # direct control over tolerance values
Alfred Galichon and Keith O'Hara
GPL (>= 2)
Work on TraME is supported by NSF Grant DMS-1716489