import numpy as np
from pprint import pprint
from crabbymetrics import Logit
np.set_printoptions(precision=4, suppress=True)Logit Example
This page mirrors examples/logit_example.py.
1 Fit A Binary Logit Model
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())2 Prediction surfaces
predict_lin() returns the latent index \(x_i'\hat\beta + \hat\alpha\). predict() applies the inverse-logit link to return fitted probabilities. predict_label() thresholds those probabilities into class labels.
check = x[:8]
out = {
"eta": model.predict_lin(check),
"probability": model.predict(check),
"label@0.50": model.predict_label(check),
"label@0.35": model.predict_label(check, cutoff=0.35),
}
pprint(out)