Skip to content

choo_siow_no_singles module

The components of the derivative of the entropy for the Choo and Siow homoskedastic model w/o singles.

e0_fun_choo_siow_no_singles(muhat, additional_parameters=None)

Returns the values of \(e_0\) for the Choo and Siow model w/o singles.

Parameters:

Name Type Description Default
muhat Matching

a Matching

required

Returns:

Type Description
np.ndarray

the (X,Y) matrix of the first derivative of the entropy

Source code in cupid_matching/choo_siow_no_singles.py
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
def e0_fun_choo_siow_no_singles(
    muhat: Matching,
    additional_parameters: list | None = None,
) -> np.ndarray:
    """Returns the values of $e_0$ for the Choo and Siow model w/o singles.

    Args:
        muhat: a `Matching`

    Returns:
        the `(X,Y)` matrix of the first derivative of the entropy
    """
    check_additional_parameters(0, additional_parameters)
    _, der_entropy = cast(
        tuple[float, np.ndarray], _entropy_choo_siow_no_singles(muhat, deriv=1)
    )
    return der_entropy

e0_fun_choo_siow_no_singles_corrected(muhat, additional_parameters=None)

Returns the values of \(e_0\) for the Choo and Siow model, using the finite-sample correction \(\log(p+(1-p)/(2N))\)

Parameters:

Name Type Description Default
muhat Matching

a Matching

required

Returns:

Type Description
np.ndarray

the (X,Y) matrix of the first derivative of the entropy

Source code in cupid_matching/choo_siow_no_singles.py
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
def e0_fun_choo_siow_no_singles_corrected(
    muhat: Matching,
    additional_parameters: list | None = None,
) -> np.ndarray:
    """Returns the values of $e_0$ for the Choo and Siow model,
        using the finite-sample correction $\\log(p+(1-p)/(2N))$

    Args:
        muhat: a `Matching`

    Returns:
        the (X,Y) matrix of the first derivative of the entropy
    """
    check_additional_parameters(0, additional_parameters)
    e0_val_corrected = _der_entropy_choo_siow_no_singles_corrected(muhat, hessian=False)
    return e0_val_corrected

hessian_mumu_choo_siow_no_singles(muhat, additional_parameters=None)

Returns the hessian of \(e_0\) wrt \((\mu,\mu)\) for the Choo and Siow model w/o singles.

Parameters:

Name Type Description Default
muhat Matching

a Matching

required

Returns:

Type Description
ThreeArrays

the three components of the hessian of the entropy wrt \((\mu,\mu)\)

Source code in cupid_matching/choo_siow_no_singles.py
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
def hessian_mumu_choo_siow_no_singles(
    muhat: Matching,
    additional_parameters: list | None = None,
) -> ThreeArrays:
    """Returns the hessian of $e_0$ wrt $(\\mu,\\mu)$ for the Choo and Siow model w/o singles.

    Args:
        muhat: a `Matching`

    Returns:
        the three components of the hessian  of the entropy wrt $(\\mu,\\mu)$
    """
    check_additional_parameters(0, additional_parameters)
    _, _, hessmumu, _ = cast(
        tuple[float, np.ndarray, np.ndarray, np.ndarray],
        _entropy_choo_siow_no_singles(muhat, deriv=2),
    )
    muxy, *_ = muhat.unpack()
    X, Y = muxy.shape
    hess_x = np.zeros((X, Y, Y))
    hess_y = np.zeros((X, Y, X))
    hess_xy = np.zeros((X, Y))
    for x in range(X):
        d2x = hessmumu[x, :, x, :]
        for y in range(Y):
            hess_xy[x, y] = d2x[y, y]
    return hess_x, hess_y, hess_xy

hessian_mumu_choo_siow_no_singles_corrected(muhat, additional_parameters=None)

Returns the derivatives of the hessian of \(e_0\) wrt \((\mu,\mu)\) for the Choo and Siow model w/o singles, with the small sample correction

Parameters:

Name Type Description Default
muhat Matching

a Matching

required

Returns:

Type Description
ThreeArrays

the three components of the hessian of the entropy wrt \((\mu,\mu)\)

Source code in cupid_matching/choo_siow_no_singles.py
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
def hessian_mumu_choo_siow_no_singles_corrected(
    muhat: Matching,
    additional_parameters: list | None = None,
) -> ThreeArrays:
    """Returns the derivatives of the hessian of $e_0$ wrt $(\\mu,\\mu)$
        for the Choo and Siow model w/o singles, with the small sample correction

    Args:
        muhat: a `Matching`

    Returns:
        the three components of the hessian of the entropy wrt $(\\mu,\\mu)$
    """
    check_additional_parameters(0, additional_parameters)
    _, hessmumu, _ = cast(
        tuple[np.ndarray, np.ndarray, np.ndarray],
        _der_entropy_choo_siow_no_singles_corrected(muhat, hessian=True),
    )
    X, Y = muhat.muxy.shape
    hess_x = np.zeros((X, Y, Y))
    hess_y = np.zeros((X, Y, X))
    hess_xy = np.zeros((X, Y))
    for x in range(X):
        d2x = hessmumu[x, :, x, :]
        for y in range(Y):
            hess_xy[x, y] = d2x[y, y]
    return hess_x, hess_y, hess_xy

hessian_mur_choo_siow_no_singles(muhat, additional_parameters=None)

Returns the hessian of \(e_0\) wrt \((\mu,r)\) for the Choo and Siow model w/o singles.

Parameters:

Name Type Description Default
muhat Matching

a Matching

required

Returns:

Type Description
TwoArrays

the two components of the hessian of the entropy wrt \((\mu,r)\)

Source code in cupid_matching/choo_siow_no_singles.py
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
def hessian_mur_choo_siow_no_singles(
    muhat: Matching,
    additional_parameters: list | None = None,
) -> TwoArrays:
    """Returns the hessian of $e_0$ wrt $(\\mu,r)$ for the Choo and Siow model w/o singles.

    Args:
        muhat: a Matching

    Returns:
        the two components of the hessian of the entropy wrt $(\\mu,r)$
    """
    check_additional_parameters(0, additional_parameters)
    X, Y = muhat.muxy.shape
    hess_nx = np.zeros((X, Y))
    hess_my = np.zeros((X, Y))
    return hess_nx, hess_my

hessian_mur_choo_siow_no_singles_corrected(muhat, additional_parameters=None)

Returns the hessian of \(e_0\) wrt \((\mu,r)\) for the Choo and Siow model w/o singles, with the small sample correction

Parameters:

Name Type Description Default
muhat Matching

a Matching

required

Returns:

Type Description
TwoArrays

the two components of the hessian of the entropy wrt \((\mu,r)\)

Source code in cupid_matching/choo_siow_no_singles.py
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
def hessian_mur_choo_siow_no_singles_corrected(
    muhat: Matching,
    additional_parameters: list | None = None,
) -> TwoArrays:
    """Returns the hessian of $e_0$ wrt $(\\mu,r)$ for the Choo and Siow model w/o singles, with the small sample correction

    Args:
        muhat: a `Matching`

    Returns:
        the two components of the hessian  of the entropy wrt $(\\mu,r)$
    """
    check_additional_parameters(0, additional_parameters)
    X, Y = muhat.muxy.shape
    hess_nx = np.zeros((X, Y))
    hess_my = np.zeros((X, Y))
    return hess_nx, hess_my