import numpy as np
from pprint import pprint
from crabbymetrics import TwoSLS
np.set_printoptions(precision=4, suppress=True)TwoSLS Example
This page mirrors examples/twosls_example.py.
1 Fit An Instrumental Variables Model
rng = np.random.default_rng(5)
n = 800
intercept = 0.5
beta_endog = 1.4
beta_exog = -0.8
z = rng.normal(size=(n, 1))
x_exog = rng.normal(size=(n, 1))
u = rng.normal(size=n)
x_endog = 0.9 * z[:, 0] + 0.4 * u + rng.normal(scale=0.1, size=n)
y = intercept + beta_endog * x_endog + beta_exog * x_exog[:, 0] + u + rng.normal(
scale=0.1, size=n
)
x_endog = x_endog.reshape(-1, 1)
model = TwoSLS()
model.fit(x_endog, x_exog, z, y)
print("true intercept:", intercept)
print("true coef:", np.array([beta_endog, beta_exog]))
pprint(model.summary())true intercept: 0.5
true coef: [ 1.4 -0.8]
{'coef': array([ 1.4531, -0.7807]),
'coef_se': array([0.0611, 0.0581]),
'intercept': 0.5145810719250604,
'intercept_se': 0.05729697418329117}