OLS
Verification
Scope
Coefficients, covariance matrices, standard errors, test statistics, p-values, confidence intervals, fitted values, residuals, and fit statistics. Identical design matrices and missing-data exclusions across implementations.
References
- Reference
- R lm(), summary(), confint(), logLik()
- Versions
- R 4.6.1, statsmodels 0.15.0, numpy 2.5.4, Python 3.14.7, PHP 8.5.10
Data
- Inputs
- Seven designs: the simulated housing sample with one and two predictors, saved R fixtures for simple, multiple, no-intercept, and correlated designs, and a listwise-deletion case (6 rows, 4 retained).
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
105 comparisons in 7 cases: 105 pass, 0 fail, 0 skipped.
By case
| Case | Comparisons | Largest abs. error | Status |
|---|---|---|---|
| Simulated housing, one predictor | 15 | 2.9e-11 | pass |
| Simulated housing, two predictors | 15 | 1.2e-10 | pass |
| One predictor | 15 | 7.1e-14 | pass |
| Two predictors | 15 | 3.6e-14 | pass |
| No intercept | 15 | 1.4e-14 | pass |
| Correlated predictors | 15 | 2.7e-12 | pass |
| Listwise deletion of missing values | 15 | 1.5e-12 | pass |
All 105 comparisons
| Case | Quantity | Criterion | Values | Package value | Reference value | Max abs. error | statsmodels | Status |
|---|---|---|---|---|---|---|---|---|
| Simulated housing, one predictor | Coefficients | |x − r| ≤ 1e-9 + 1e-7 × |r| | 2 | 4.0e-13 | 1.7e-13 | pass | ||
| Covariance matrix | |x − r| ≤ 1e-9 + 1e-7 × |r| | 4 | 7.3e-12 | 1.5e-11 | pass | |||
| Standard errors | |x − r| ≤ 1e-9 + 1e-7 × |r| | 2 | 1.3e-15 | 2.8e-14 | pass | |||
| t statistics | |x − r| ≤ 1e-9 + 1e-7 × |r| | 2 | 5.3e-15 | 1.8e-15 | pass | |||
| p-values | |x − r| ≤ 1e-9 + 1e-7 × |r| | 2 | 1.1e-16 | 2.8e-16 | pass | |||
| Confidence intervals | |x − r| ≤ 1e-9 + 1e-7 × |r| | 4 | 8.0e-13 | 2.4e-12 | pass | |||
| Fitted values | |x − r| ≤ 1e-9 + 1e-7 × |r| | 8 | 9.1e-13 | 6.8e-13 | pass | |||
| Residuals | |x − r| ≤ 1e-9 + 1e-7 × |r| | 8 | 8.5e-13 | 5.7e-13 | pass | |||
| Residual sum of squares | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 204471.4031 | 204471.4031 | 2.9e-11 | 8.7e-11 | pass | |
| Residual variance | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 34078.56718 | 34078.56718 | 7.3e-12 | 1.5e-11 | pass | |
| Residual standard deviation | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 184.6038114 | 184.6038114 | 2.8e-14 | 2.8e-14 | pass | |
| R² | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.8763743506 | 0.8763743506 | 0 | 0 | pass | |
| Adjusted R² | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.8557700757 | 0.8557700757 | 0 | 1.1e-16 | pass | |
| Residual degrees of freedom | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 6 | 6 | 0 | 0 | pass | |
| Log likelihood | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | -51.94647572 | -51.94647572 | 7.1e-15 | 7.1e-15 | pass | |
| Simulated housing, two predictors | Coefficients | |x − r| ≤ 1e-9 + 1e-7 × |r| | 3 | 1.3e-12 | 4.5e-13 | pass | ||
| Covariance matrix | |x − r| ≤ 1e-9 + 1e-7 × |r| | 9 | 1.2e-10 | 1.5e-11 | pass | |||
| Standard errors | |x − r| ≤ 1e-9 + 1e-7 × |r| | 3 | 1.7e-13 | 5.7e-14 | pass | |||
| t statistics | |x − r| ≤ 1e-9 + 1e-7 × |r| | 3 | 4.7e-15 | 2.0e-15 | pass | |||
| p-values | |x − r| ≤ 1e-9 + 1e-7 × |r| | 3 | 1.5e-15 | 5.0e-16 | pass | |||
| Confidence intervals | |x − r| ≤ 1e-9 + 1e-7 × |r| | 6 | 2.0e-12 | 6.8e-13 | pass | |||
| Fitted values | |x − r| ≤ 1e-9 + 1e-7 × |r| | 8 | 4.5e-13 | 2.3e-12 | pass | |||
| Residuals | |x − r| ≤ 1e-9 + 1e-7 × |r| | 8 | 4.5e-13 | 2.4e-12 | pass | |||
| Residual sum of squares | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 181323.1269 | 181323.1269 | 8.7e-11 | 2.9e-11 | pass | |
| Residual variance | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 36264.62537 | 36264.62537 | 1.5e-11 | 7.3e-12 | pass | |
| Residual standard deviation | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 190.4327319 | 190.4327319 | 2.8e-14 | 2.8e-14 | pass | |
| R² | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.8903700519 | 0.8903700519 | 0 | 0 | pass | |
| Adjusted R² | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.8465180727 | 0.8465180727 | 0 | 0 | pass | |
| Residual degrees of freedom | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 5 | 5 | 0 | 0 | pass | |
| Log likelihood | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | -51.4658859 | -51.4658859 | 7.1e-15 | 7.1e-15 | pass | |
| One predictor | Coefficients | |x − r| ≤ 1e-9 + 1e-7 × |r| | 2 | 7.8e-16 | 4.7e-15 | pass | ||
| Covariance matrix | |x − r| ≤ 1e-9 + 1e-7 × |r| | 4 | 2.4e-16 | 2.9e-16 | pass | |||
| Standard errors | |x − r| ≤ 1e-9 + 1e-7 × |r| | 2 | 5.8e-16 | 7.2e-16 | pass | |||
| t statistics | |x − r| ≤ 1e-9 + 1e-7 × |r| | 2 | 7.1e-14 | 1.1e-13 | pass | |||
| p-values | |x − r| ≤ 1e-9 + 1e-7 × |r| | 2 | 3.8e-15 | 1.7e-14 | pass | |||
| Confidence intervals | |x − r| ≤ 1e-9 + 1e-7 × |r| | 4 | 2.2e-15 | 7.0e-15 | pass | |||
| Fitted values | |x − r| ≤ 1e-9 + 1e-7 × |r| | 5 | 1.8e-15 | 4.4e-15 | pass | |||
| Residuals | |x − r| ≤ 1e-9 + 1e-7 × |r| | 5 | 1.9e-15 | 4.1e-15 | pass | |||
| Residual sum of squares | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.107 | 0.107 | 3.6e-16 | 7.5e-16 | pass | |
| Residual variance | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.03566666667 | 0.03566666667 | 1.2e-16 | 2.5e-16 | pass | |
| Residual standard deviation | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.1888562063 | 0.1888562063 | 3.3e-16 | 6.7e-16 | pass | |
| R² | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.9973585465 | 0.9973585465 | 1.1e-16 | 1.1e-16 | pass | |
| Adjusted R² | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.9964780619 | 0.9964780619 | 2.2e-16 | 2.2e-16 | pass | |
| Residual degrees of freedom | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 3 | 3 | 0 | 0 | pass | |
| Log likelihood | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 2.516218226 | 2.516218226 | 8.4e-15 | 1.6e-14 | pass | |
| Two predictors | Coefficients | |x − r| ≤ 1e-9 + 1e-7 × |r| | 3 | 4.4e-15 | 1.3e-15 | pass | ||
| Covariance matrix | |x − r| ≤ 1e-9 + 1e-7 × |r| | 9 | 7.5e-16 | 3.6e-16 | pass | |||
| Standard errors | |x − r| ≤ 1e-9 + 1e-7 × |r| | 3 | 8.3e-16 | 4.4e-16 | pass | |||
| t statistics | |x − r| ≤ 1e-9 + 1e-7 × |r| | 3 | 3.6e-14 | 1.8e-14 | pass | |||
| p-values | |x − r| ≤ 1e-9 + 1e-7 × |r| | 3 | 7.6e-17 | 1.4e-17 | pass | |||
| Confidence intervals | |x − r| ≤ 1e-9 + 1e-7 × |r| | 6 | 6.7e-15 | 2.2e-15 | pass | |||
| Fitted values | |x − r| ≤ 1e-9 + 1e-7 × |r| | 10 | 3.6e-15 | 3.6e-15 | pass | |||
| Residuals | |x − r| ≤ 1e-9 + 1e-7 × |r| | 10 | 3.1e-15 | 2.1e-15 | pass | |||
| Residual sum of squares | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 2.054054054 | 2.054054054 | 5.8e-15 | 3.1e-15 | pass | |
| Residual variance | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.2934362934 | 0.2934362934 | 8.3e-16 | 4.4e-16 | pass | |
| Residual standard deviation | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.5416976033 | 0.5416976033 | 7.8e-16 | 3.3e-16 | pass | |
| R² | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.9918001834 | 0.9918001834 | 0 | 0 | pass | |
| Adjusted R² | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.9894573787 | 0.9894573787 | 0 | 0 | pass | |
| Residual degrees of freedom | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 7 | 7 | 0 | 0 | pass | |
| Log likelihood | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | -6.275537005 | -6.275537005 | 1.4e-14 | 6.2e-15 | pass | |
| No intercept | Coefficients | |x − r| ≤ 1e-9 + 1e-7 × |r| | 2 | 6.1e-16 | 2.1e-15 | pass | ||
| Covariance matrix | |x − r| ≤ 1e-9 + 1e-7 × |r| | 4 | 6.9e-17 | 9.7e-17 | pass | |||
| Standard errors | |x − r| ≤ 1e-9 + 1e-7 × |r| | 2 | 1.1e-16 | 2.2e-16 | pass | |||
| t statistics | |x − r| ≤ 1e-9 + 1e-7 × |r| | 2 | 1.4e-14 | 4.3e-14 | pass | |||
| p-values | |x − r| ≤ 1e-9 + 1e-7 × |r| | 2 | 6.8e-16 | 1.2e-15 | pass | |||
| Confidence intervals | |x − r| ≤ 1e-9 + 1e-7 × |r| | 4 | 2.2e-15 | 2.5e-15 | pass | |||
| Fitted values | |x − r| ≤ 1e-9 + 1e-7 × |r| | 10 | 3.6e-15 | 1.1e-14 | pass | |||
| Residuals | |x − r| ≤ 1e-9 + 1e-7 × |r| | 10 | 3.6e-15 | 1.1e-14 | pass | |||
| Residual sum of squares | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 4.8515625 | 4.8515625 | 3.6e-15 | 8.0e-15 | pass | |
| Residual variance | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.6064453125 | 0.6064453125 | 4.4e-16 | 1.0e-15 | pass | |
| Residual standard deviation | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.7787459871 | 0.7787459871 | 3.3e-16 | 6.7e-16 | pass | |
| R² | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.9969039167 | 0.9969039167 | 0 | 0 | pass | |
| Adjusted R² | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.9961298959 | 0.9961298959 | 0 | 0 | pass | |
| Residual degrees of freedom | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 8 | 8 | 0 | 0 | pass | |
| Log likelihood | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | -10.57296396 | -10.57296396 | 3.6e-15 | 8.9e-15 | pass | |
| Correlated predictors | Coefficients | |x − r| ≤ 1e-9 + 1e-7 × |r| | 3 | 7.2e-13 | 8.9e-14 | pass | ||
| Covariance matrix | |x − r| ≤ 1e-9 + 1e-7 × |r| | 9 | 2.7e-12 | 2.9e-12 | pass | |||
| Standard errors | |x − r| ≤ 1e-9 + 1e-7 × |r| | 3 | 1.1e-13 | 1.2e-13 | pass | |||
| t statistics | |x − r| ≤ 1e-9 + 1e-7 × |r| | 3 | 9.9e-14 | 1.7e-13 | pass | |||
| p-values | |x − r| ≤ 1e-9 + 1e-7 × |r| | 3 | 7.4e-14 | 1.3e-13 | pass | |||
| Confidence intervals | |x − r| ≤ 1e-9 + 1e-7 × |r| | 6 | 9.7e-13 | 2.9e-13 | pass | |||
| Fitted values | |x − r| ≤ 1e-9 + 1e-7 × |r| | 10 | 4.8e-14 | 2.9e-13 | pass | |||
| Residuals | |x − r| ≤ 1e-9 + 1e-7 × |r| | 10 | 4.8e-14 | 2.9e-13 | pass | |||
| Residual sum of squares | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 4.115877437 | 4.115877437 | 2.6e-14 | 5.9e-14 | pass | |
| Residual variance | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.587982491 | 0.587982491 | 3.8e-15 | 8.4e-15 | pass | |
| Residual standard deviation | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.7668001637 | 0.7668001637 | 2.4e-15 | 5.6e-15 | pass | |
| R² | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.9878551861 | 0.9878551861 | 1.1e-16 | 1.1e-16 | pass | |
| Adjusted R² | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.9843852392 | 0.9843852392 | 1.1e-16 | 1.1e-16 | pass | |
| Residual degrees of freedom | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 7 | 7 | 0 | 0 | pass | |
| Log likelihood | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | -9.750720069 | -9.750720069 | 3.2e-14 | 7.3e-14 | pass | |
| Listwise deletion of missing values | Coefficients | |x − r| ≤ 1e-9 + 1e-7 × |r| | 2 | 1.8e-15 | 3.6e-15 | pass | ||
| Covariance matrix | |x − r| ≤ 1e-9 + 1e-7 × |r| | 4 | 1.6e-16 | 1.4e-17 | pass | |||
| Standard errors | |x − r| ≤ 1e-9 + 1e-7 × |r| | 2 | 1.1e-15 | 9.7e-17 | pass | |||
| t statistics | |x − r| ≤ 1e-9 + 1e-7 × |r| | 2 | 1.5e-12 | 1.4e-13 | pass | |||
| p-values | |x − r| ≤ 1e-9 + 1e-7 × |r| | 2 | 9.3e-15 | 8.9e-15 | pass | |||
| Confidence intervals | |x − r| ≤ 1e-9 + 1e-7 × |r| | 4 | 6.1e-15 | 3.9e-15 | pass | |||
| Fitted values | |x − r| ≤ 1e-9 + 1e-7 × |r| | 4 | 2.7e-15 | 4.4e-15 | pass | |||
| Residuals | |x − r| ≤ 1e-9 + 1e-7 × |r| | 4 | 2.5e-15 | 4.3e-15 | pass | |||
| Residual sum of squares | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.009 | 0.009 | 2.9e-16 | 2.9e-17 | pass | |
| Residual variance | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.0045 | 0.0045 | 1.4e-16 | 1.5e-17 | pass | |
| Residual standard deviation | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.06708203932 | 0.06708203932 | 1.1e-15 | 1.1e-16 | pass | |
| R² | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.9997772829 | 0.9997772829 | 0 | 0 | pass | |
| Adjusted R² | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 0.9996659243 | 0.9996659243 | 0 | 0 | pass | |
| Residual degrees of freedom | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 2 | 2 | 0 | 0 | pass | |
| Log likelihood | |x − r| ≤ 1e-9 + 1e-7 × |r| | 1 | 6.517895993 | 6.517895993 | 6.4e-14 | 7.1e-15 | pass |
Limitations
Exclusions
- Perfect fits compare coefficients, predictions, residuals, and standard errors only: their t statistics, p-values, R², and likelihood are not finite or not stable.
- R reports undefined quantities as NA; those entries are not compared.
Known differences
- phit rejects a rank-deficient design; R lm() drops aliased columns and reports NA.
- Without an intercept, R² is uncentered, as in R.
Reproduction
cargo build -p phit --release --locked
.context/notebooks-venv/bin/python docs/verifications/compare_ols.py
- Raw record
- site/verifications/ols.json
- Full results
- docs/verifications/ols-results.json
- Input data
- docs/data/housing.csv