Skip to content

tobanw/MarriageMarkets.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MarriageMarkets

Build Status Coverage Status

The MarriageMarkets package currently provides two marriage market models as Julia types:

  • StaticMatch: computes the equilibrium of the static frictionless marriage market model from "Who Marries Whom and Why" (Choo & Siow, 2006).
  • SearchMatch: computes the equilibrium of variants on the search and matching model from "Assortative Matching and Search" (Shimer & Smith, 2000) and the empirical extension in "Marriage Gains" (Goussé, 2014).

SearchMatch also allows for inflows of new singles as well as deaths.

Installation

In a Julia REPL, enter pkg mode (by pressing ]) and run:

(v1.0) pkg> add MarriageMarkets

Julia version 1.0 or higher is required (installation instructions here).

Usage

As SearchMatch supports a number of model variants, there are specific constructors for the two main types:

  • SearchClosed: closed-system where agents cycle between singlehood and marriage
  • SearchInflow: steady-state population is determined by exogenous inflows and type-specific death rates

All models support both unidimensional and multidimensional agent types. To specify a multidimensional type space, use a Vector of Vectors, e.g., [[1,1.5,1.7], [0,1]]

Examples

Here are some simple examples of solving models with unidimensional types. I use Gadfly to plot the resulting equilibrium objects.

Static model

using MarriageMarkets
using Gadfly

n = 50 # number of types
Θ = collect(range(0.1, stop=1.0, length=n)) # type space vector
m = ones(n) ./ n # uniform population measures
f(x,y) = x*y # marital surplus function (per capita)

static_mgmkt = StaticMatch(Θ, Θ, m, m, f)

plot(z=static_mgmkt.matches, Geom.contour, Guide.title("Distribution of matches"))

matches

The saddle shape indicates positive assortative matching, as expected, due to the supermodular production function f(x,y) = x*y.

Search model

The example below solves a search model with inflows and death. Then I plot the probabilities of match formation conditional on meeting.

using MarriageMarkets
using Gadfly

λ, δ = 500.0, 0.05 # arrival rates of meetings and divorce shocks
r = 0.05 # discount rate
σ = 1 # variance of Normally distributed match-specific productivity shocks
n = 50 # number of types
Θ = collect(range(0.1, stop=1.0, length=n)) # type space vector
f(x,y) = x*y # marital production function

γ = ones(n) ./ n # uniform inflows
ψ = ones(n) # uniform death rates

search_mgmkt = SearchInflow(λ, δ, r, σ, Θ, Θ, γ, γ, ψ, ψ, f)

plot(z=search_mgmkt.α, Geom.contour, Guide.title("Match probability conditional on meeting"))

alpha

Testing

In a Julia REPL session, enter pkg mode and run test MarriageMarkets.