phit

Poisson regression

Verification

Scope

Coefficients, covariance matrices, standard errors, z statistics, p-values, confidence intervals, fitted values, residuals, log likelihood, deviance, null deviance, and AIC. Identical design matrices and missing-data exclusions across implementations.

References

Reference
R glm(family = poisson)
Versions
R 4.6.1, statsmodels 0.15.0, numpy 2.5.4, Python 3.14.7, PHP 8.5.10

Data

Inputs
Six saved R fixtures: the simulated clinic sample, one predictor, no intercept, intercept only, correlated columns, and sparse counts, plus a listwise-deletion case with two dropped rows.

Method

Each design is fitted by R, statsmodels, and phit's matrix function, with the intercept supplied as a column. Every quantity is compared with R, and each case's status is recomputed from the saved values.

Check
Comparison with a reference implementation
Recorded
2026-11-01, PHP 8.5.10, macOS 27.0.1 (arm64), commit 066e2e1

Tolerances

|x − r| ≤ 1e-9 + 1e-7 × |r|

Applies to: Numerical results

exact equality

Applies to: Row indices, counts, and warnings

x: package value; r: reference value. Absolute error: |x − r|. Max errors are over the values a row compares. statsmodels: that implementation’s error against the same reference.

Results

91 comparisons in 7 cases: 91 pass, 0 fail, 0 skipped.

By case

Results by case
Case Comparisons Largest abs. error Status
Simulated clinic sample 13 6.5e-12 pass
One predictor 13 3.0e-11 pass
No intercept 13 6.2e-13 pass
Intercept only 13 4.0e-13 pass
Correlated predictors 13 1.1e-11 pass
Sparse counts 13 9.9e-13 pass
Listwise deletion of missing values 13 5.7e-12 pass
All 91 comparisons
Every comparison
Case Quantity Criterion Values Package value Reference value Max abs. error statsmodels Status
Simulated clinic sample Coefficients |x − r| ≤ 1e-9 + 1e-7 × |r| 3 1.4e-15 8.9e-16 pass
Covariance matrix |x − r| ≤ 1e-9 + 1e-7 × |r| 9 1.2e-16 4.2e-17 pass
Standard errors |x − r| ≤ 1e-9 + 1e-7 × |r| 3 2.8e-16 1.1e-16 pass
z statistics |x − r| ≤ 1e-9 + 1e-7 × |r| 3 7.5e-15 4.9e-15 pass
p-values |x − r| ≤ 1e-9 + 1e-7 × |r| 3 6.5e-12 1.3e-15 pass
Confidence intervals |x − r| ≤ 1e-9 + 1e-7 × |r| 6 1.9e-15 9.4e-16 pass
Fitted values |x − r| ≤ 1e-9 + 1e-7 × |r| 120 2.2e-15 1.8e-15 pass
Residuals |x − r| ≤ 1e-9 + 1e-7 × |r| 120 2.2e-15 1.8e-15 pass
Log likelihood |x − r| ≤ 1e-9 + 1e-7 × |r| 1 -198.3816382 -198.3816382 8.5e-14 5.7e-14 pass
Deviance |x − r| ≤ 1e-9 + 1e-7 × |r| 1 144.5306619 144.5306619 2.8e-14 2.8e-14 pass
Null deviance |x − r| ≤ 1e-9 + 1e-7 × |r| 1 154.4689075 154.4689075 5.7e-14 2.8e-14 pass
AIC |x − r| ≤ 1e-9 + 1e-7 × |r| 1 402.7632764 402.7632764 1.7e-13 1.1e-13 pass
Residual degrees of freedom |x − r| ≤ 1e-9 + 1e-7 × |r| 1 117 117 0 0 pass
One predictor Coefficients |x − r| ≤ 1e-9 + 1e-7 × |r| 2 2.2e-16 6.4e-16 pass
Covariance matrix |x − r| ≤ 1e-9 + 1e-7 × |r| 4 1.4e-17 4.9e-17 pass
Standard errors |x − r| ≤ 1e-9 + 1e-7 × |r| 2 2.8e-17 1.1e-16 pass
z statistics |x − r| ≤ 1e-9 + 1e-7 × |r| 2 1.8e-15 3.1e-15 pass
p-values |x − r| ≤ 1e-9 + 1e-7 × |r| 2 3.0e-11 1.7e-15 pass
Confidence intervals |x − r| ≤ 1e-9 + 1e-7 × |r| 4 2.8e-16 6.9e-16 pass
Fitted values |x − r| ≤ 1e-9 + 1e-7 × |r| 120 1.3e-15 8.9e-16 pass
Residuals |x − r| ≤ 1e-9 + 1e-7 × |r| 120 1.8e-15 8.9e-16 pass
Log likelihood |x − r| ≤ 1e-9 + 1e-7 × |r| 1 -201.9155972 -201.9155972 1.1e-13 5.7e-14 pass
Deviance |x − r| ≤ 1e-9 + 1e-7 × |r| 1 151.59858 151.59858 0 5.7e-14 pass
Null deviance |x − r| ≤ 1e-9 + 1e-7 × |r| 1 154.4689075 154.4689075 5.7e-14 2.8e-14 pass
AIC |x − r| ≤ 1e-9 + 1e-7 × |r| 1 407.8311945 407.8311945 2.3e-13 1.1e-13 pass
Residual degrees of freedom |x − r| ≤ 1e-9 + 1e-7 × |r| 1 118 118 0 0 pass
No intercept Coefficients |x − r| ≤ 1e-9 + 1e-7 × |r| 2 1.4e-16 8.3e-17 pass
Covariance matrix |x − r| ≤ 1e-9 + 1e-7 × |r| 4 2.6e-18 8.7e-18 pass
Standard errors |x − r| ≤ 1e-9 + 1e-7 × |r| 2 1.4e-17 5.6e-17 pass
z statistics |x − r| ≤ 1e-9 + 1e-7 × |r| 2 1.8e-15 1.8e-15 pass
p-values |x − r| ≤ 1e-9 + 1e-7 × |r| 2 6.2e-13 2.6e-17 pass
Confidence intervals |x − r| ≤ 1e-9 + 1e-7 × |r| 4 1.4e-16 1.1e-16 pass
Fitted values |x − r| ≤ 1e-9 + 1e-7 × |r| 120 3.1e-15 4.4e-15 pass
Residuals |x − r| ≤ 1e-9 + 1e-7 × |r| 120 3.1e-15 4.4e-15 pass
Log likelihood |x − r| ≤ 1e-9 + 1e-7 × |r| 1 -199.4042122 -199.4042122 8.5e-14 5.7e-14 pass
Deviance |x − r| ≤ 1e-9 + 1e-7 × |r| 1 146.5758098 146.5758098 0 2.8e-14 pass
Null deviance |x − r| ≤ 1e-9 + 1e-7 × |r| 1 218.7623551 218.7623551 5.7e-14 2.8e-14 pass
AIC |x − r| ≤ 1e-9 + 1e-7 × |r| 1 402.8084243 402.8084243 1.7e-13 1.1e-13 pass
Residual degrees of freedom |x − r| ≤ 1e-9 + 1e-7 × |r| 1 118 118 0 0 pass
Intercept only Coefficients |x − r| ≤ 1e-9 + 1e-7 × |r| 1 3.3e-16 1.1e-16 pass
Covariance matrix |x − r| ≤ 1e-9 + 1e-7 × |r| 1 0 3.1e-14 pass
Standard errors |x − r| ≤ 1e-9 + 1e-7 × |r| 1 0 2.3e-13 pass
z statistics |x − r| ≤ 1e-9 + 1e-7 × |r| 1 5.3e-15 3.0e-11 pass
p-values |x − r| ≤ 1e-9 + 1e-7 × |r| 1 6.3e-29 3.2e-28 pass
Confidence intervals |x − r| ≤ 1e-9 + 1e-7 × |r| 2 3.3e-16 4.5e-13 pass
Fitted values |x − r| ≤ 1e-9 + 1e-7 × |r| 120 6.7e-16 2.2e-16 pass
Residuals |x − r| ≤ 1e-9 + 1e-7 × |r| 120 8.9e-16 2.2e-16 pass
Log likelihood |x − r| ≤ 1e-9 + 1e-7 × |r| 1 -203.350761 -203.350761 2.0e-13 1.4e-13 pass
Deviance |x − r| ≤ 1e-9 + 1e-7 × |r| 1 154.4689075 154.4689075 2.8e-14 0 pass
Null deviance |x − r| ≤ 1e-9 + 1e-7 × |r| 1 154.4689075 154.4689075 5.7e-14 2.8e-14 pass
AIC |x − r| ≤ 1e-9 + 1e-7 × |r| 1 408.701522 408.701522 4.0e-13 2.8e-13 pass
Residual degrees of freedom |x − r| ≤ 1e-9 + 1e-7 × |r| 1 119 119 0 0 pass
Correlated predictors Coefficients |x − r| ≤ 1e-9 + 1e-7 × |r| 3 4.4e-15 5.5e-15 pass
Covariance matrix |x − r| ≤ 1e-9 + 1e-7 × |r| 9 5.1e-16 3.9e-16 pass
Standard errors |x − r| ≤ 1e-9 + 1e-7 × |r| 3 1.1e-15 3.2e-16 pass
z statistics |x − r| ≤ 1e-9 + 1e-7 × |r| 3 4.1e-14 5.8e-14 pass
p-values |x − r| ≤ 1e-9 + 1e-7 × |r| 3 1.1e-11 1.9e-14 pass
Confidence intervals |x − r| ≤ 1e-9 + 1e-7 × |r| 6 6.7e-15 6.0e-15 pass
Fitted values |x − r| ≤ 1e-9 + 1e-7 × |r| 120 2.2e-14 1.7e-13 pass
Residuals |x − r| ≤ 1e-9 + 1e-7 × |r| 120 2.2e-14 1.7e-13 pass
Log likelihood |x − r| ≤ 1e-9 + 1e-7 × |r| 1 -200.999247 -200.999247 2.8e-14 5.7e-14 pass
Deviance |x − r| ≤ 1e-9 + 1e-7 × |r| 1 149.7658795 149.7658795 8.5e-14 5.7e-14 pass
Null deviance |x − r| ≤ 1e-9 + 1e-7 × |r| 1 154.4689075 154.4689075 5.7e-14 2.8e-14 pass
AIC |x − r| ≤ 1e-9 + 1e-7 × |r| 1 407.998494 407.998494 5.7e-14 1.1e-13 pass
Residual degrees of freedom |x − r| ≤ 1e-9 + 1e-7 × |r| 1 117 117 0 0 pass
Sparse counts Coefficients |x − r| ≤ 1e-9 + 1e-7 × |r| 3 6.7e-16 6.9e-16 pass
Covariance matrix |x − r| ≤ 1e-9 + 1e-7 × |r| 9 5.6e-16 5.6e-16 pass
Standard errors |x − r| ≤ 1e-9 + 1e-7 × |r| 3 4.4e-16 4.4e-16 pass
z statistics |x − r| ≤ 1e-9 + 1e-7 × |r| 3 1.8e-15 2.1e-15 pass
p-values |x − r| ≤ 1e-9 + 1e-7 × |r| 3 9.9e-13 1.6e-15 pass
Confidence intervals |x − r| ≤ 1e-9 + 1e-7 × |r| 6 1.2e-15 1.3e-15 pass
Fitted values |x − r| ≤ 1e-9 + 1e-7 × |r| 120 5.6e-16 4.2e-16 pass
Residuals |x − r| ≤ 1e-9 + 1e-7 × |r| 120 5.6e-16 4.2e-16 pass
Log likelihood |x − r| ≤ 1e-9 + 1e-7 × |r| 1 -57.87342643 -57.87342643 2.8e-14 7.1e-15 pass
Deviance |x − r| ≤ 1e-9 + 1e-7 × |r| 1 79.90573594 79.90573594 0 1.4e-14 pass
Null deviance |x − r| ≤ 1e-9 + 1e-7 × |r| 1 79.98814494 79.98814494 0 8.5e-14 pass
AIC |x − r| ≤ 1e-9 + 1e-7 × |r| 1 121.7468529 121.7468529 5.7e-14 1.4e-14 pass
Residual degrees of freedom |x − r| ≤ 1e-9 + 1e-7 × |r| 1 117 117 0 0 pass
Listwise deletion of missing values Coefficients |x − r| ≤ 1e-9 + 1e-7 × |r| 3 5.6e-16 1.3e-15 pass
Covariance matrix |x − r| ≤ 1e-9 + 1e-7 × |r| 9 5.2e-18 1.2e-16 pass
Standard errors |x − r| ≤ 1e-9 + 1e-7 × |r| 3 2.8e-17 2.5e-16 pass
z statistics |x − r| ≤ 1e-9 + 1e-7 × |r| 3 3.6e-15 6.7e-15 pass
p-values |x − r| ≤ 1e-9 + 1e-7 × |r| 3 5.7e-12 1.7e-15 pass
Confidence intervals |x − r| ≤ 1e-9 + 1e-7 × |r| 6 6.7e-16 1.9e-15 pass
Fitted values |x − r| ≤ 1e-9 + 1e-7 × |r| 118 3.1e-15 1.3e-15 pass
Residuals |x − r| ≤ 1e-9 + 1e-7 × |r| 118 3.1e-15 1.3e-15 pass
Log likelihood |x − r| ≤ 1e-9 + 1e-7 × |r| 1 -196.0907588 -196.0907588 8.5e-14 5.7e-14 pass
Deviance |x − r| ≤ 1e-9 + 1e-7 × |r| 1 143.948903 143.948903 2.8e-14 0 pass
Null deviance |x − r| ≤ 1e-9 + 1e-7 × |r| 1 153.5778407 153.5778407 2.8e-14 1.1e-13 pass
AIC |x − r| ≤ 1e-9 + 1e-7 × |r| 1 398.1815175 398.1815175 1.7e-13 1.1e-13 pass
Residual degrees of freedom |x − r| ≤ 1e-9 + 1e-7 × |r| 1 115 115 0 0 pass

Limitations

Exclusions

  • These cases have no offset; offset and exposure fits are covered by the test-suite and R compatibility records.

Known differences

  • R intervals come from confint.default() (Wald), not profile-likelihood confint().
  • phit reports the covariance at the converged coefficients; R glm() evaluates it at the last IRLS iterate. With the tight fitting tolerances used here the difference is negligible. See the R compatibility page for details.
  • Without an intercept, the null deviance uses a mean of one.

Reproduction

From the repository root
cargo build -p phit --release --locked
.context/notebooks-venv/bin/python docs/verifications/compare_poisson.py
Raw record
site/verifications/poisson.json
Full results
docs/verifications/poisson-results.json
Input data
docs/data/clinic.csv