Skip to content

example_choosiow module

example using the Choo and Siow homoskedastic model

create_choosiow_population(X, Y, K, std_betas=1.0)

we simulate a Choo and Siow population with equal numbers of men and women of each type and random bases dunctions and coefficients

1
2
3
4
5
6
7
8
9
Args:
 X: number of types of men
 Y: number of types of women
 K: random basis functions
 std_betas: the coefficients are drawn from a centered normal
             with this standard deviation

Returns:
    a ChooSiowPrimitives instance, the basis functions, and the coefficients
Source code in cupid_matching/example_choosiow.py
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
def create_choosiow_population(
    X: int, Y: int, K: int, std_betas: Optional[float] = 1.0
) -> Tuple[ChooSiowPrimitives, np.ndarray, np.ndarray]:
    """
    we simulate a Choo and Siow population
    with equal numbers of men and women of each type
    and random bases dunctions and coefficients

        Args:
         X: number of types of men
         Y: number of types of women
         K: random basis functions
         std_betas: the coefficients are drawn from a centered normal
                     with this standard deviation

        Returns:
            a ChooSiowPrimitives instance, the basis functions, and the coefficients
    """
    betas_true = std_betas * np.random.randn(K)
    phi_bases = np.random.randn(X, Y, K)
    n = np.ones(X)
    m = np.ones(Y)
    Phi = phi_bases @ betas_true
    choo_siow_instance = ChooSiowPrimitives(Phi, n, m)
    return choo_siow_instance, phi_bases, betas_true

mde_estimate(mus_sim, phi_bases, betas_true, entropy, title)

we estimate the parameters using the minimum distance estimator

Parameters:

Name Type Description Default
mus_sim Matching

a Choo and Siow Matching

required
phi_bases np.ndarray

the basis functions

required
betas_true np.ndarray

their true coefficients

required
entropy EntropyFunctions

the entropy functions we use

required
title str

the name of the estimator

required

Returns:

Type Description
float

the largest absolute difference between the true and estimated coefficients

Source code in cupid_matching/example_choosiow.py
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
def mde_estimate(
    mus_sim: Matching,
    phi_bases: np.ndarray,
    betas_true: np.ndarray,
    entropy: EntropyFunctions,
    title: str,
) -> float:
    """we estimate the parameters using the minimum distance estimator

    Args:
        mus_sim: a Choo and Siow Matching
        phi_bases: the basis functions
        betas_true: their true coefficients
        entropy: the entropy functions we use
        title: the name of the estimator

    Returns:
        the largest absolute difference between the true and estimated coefficients
    """
    print_stars(f"    {title}")
    mde_results = estimate_semilinear_mde(mus_sim, phi_bases, entropy)
    mde_discrepancy = mde_results.print_results(true_coeffs=betas_true)
    return mde_discrepancy