crabbymetrics
  • Home
  • API
  • Examples
    • OLS
    • Fixed Effects OLS
    • ElasticNet
    • Logit
    • Multinomial Logit
    • Poisson
    • TwoSLS
    • FTRL
    • MEstimator Poisson

On this page

  • 1 Fit An Instrumental Variables Model

TwoSLS Example

This page mirrors examples/twosls_example.py.

1 Fit An Instrumental Variables Model

import numpy as np
from pprint import pprint

from crabbymetrics import TwoSLS

np.set_printoptions(precision=4, suppress=True)
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}