crabbymetrics
  • Home
  • API
  • Binding Crash Course
  • Supervised Learning
    • OLS
    • Ridge
    • Fixed Effects OLS
    • ElasticNet
    • Synthetic Control
    • Logit
    • Multinomial Logit
    • Poisson
    • TwoSLS
    • GMM
    • FTRL
    • MEstimator Poisson
  • Semiparametrics
    • Balancing Weights
    • EPLM
    • Average Derivative
    • Double ML And AIPW
    • Richer Regression
  • Unsupervised Learning
    • PCA And Kernel Basis
  • Ablations
    • Variance Estimators
    • Semiparametric Estimator Comparisons
    • Bridging Finite And Superpopulation
  • Optimization
    • Optimizers
    • GMM With Optimizers
  • Ding: First Course
    • Overview And TOC
    • Ch 1 Correlation And Simpson
    • Ch 2 Potential Outcomes
    • Ch 3 CRE And Fisher RT
    • Ch 4 CRE And Neyman
    • Ch 9 Bridging Finite And Superpopulation
    • Ch 11 Propensity Score
    • Ch 12 Double Robust ATE
    • Ch 13 Double Robust ATT
    • Ch 21 Experimental IV
    • Ch 23 Econometric IV

Logit Example

This page mirrors examples/logit_example.py.

1 Fit A Binary Logit Model

import numpy as np
from pprint import pprint

from crabbymetrics import Logit

np.set_printoptions(precision=4, suppress=True)
rng = np.random.default_rng(2)
n = 800
k = 4
beta = np.array([1.2, -0.8, 0.4, -1.1])
intercept = 0.3

x = rng.normal(size=(n, k))
logits = intercept + x @ beta
probs = 1.0 / (1.0 + np.exp(-logits))
y = rng.binomial(1, probs).astype(np.int32)

model = Logit(alpha=1.0, max_iterations=200)
model.fit(x, y)

print("true intercept:", intercept)
print("true coef:", beta)
pprint(model.summary())
true intercept: 0.3
true coef: [ 1.2 -0.8  0.4 -1.1]
{'coef': array([ 1.1245, -0.785 ,  0.4493, -1.1894]),
 'coef_se': array([0.1058, 0.1029, 0.0934, 0.1113]),
 'intercept': 0.2866745643642197,
 'intercept_se': 0.09089945628323781}