Model selection, assumption testing, and admissibility analysis under the Canadian Mohan / White Burgess framework. The statistical diagnostics (heteroscedasticity, autocorrelation, normality, multicollinearity) address reliability concerns common to Daubert jurisdictions, but the legal criteria and citations are Canadian. Upload data, select your model, and get court-ready regression output with diagnostic flags.
Auto-detect examines your data structure and recommends the appropriate model. OLS for cross-sectional, ARIMA for time series. If OLS diagnostics fail, WLS or Robust alternatives are automatically computed.
| Variable | Coefficient | Std Error | t-Stat | P-Value | 95% CI |
|---|
Every number below was chosen rather than measured: it is a modelling judgment, a labelling threshold, or a statistical convention. Each one was tested across the range shown in the September 2026 audit, and the effect on this tool's outputs is recorded in the methodology. Measured inputs — FJC federal civil case outcomes, SSA life tables, BLS benefit rates, BEA regional price parities, work-life expectancy tables — are not listed here; they carry their own provenance.
| assumption | value | basis | range tested |
|---|---|---|---|
reg.mohan_r2_strongR² above which (with a significant F) the fit is called adequate for Mohan/Daubert | judgment label | [0.2, 0.5] | |
reg.mohan_r2_weakR² above which the fit is called weak rather than none | judgment label | [0.05, 0.2] | |
reg.mohan_n_adequateobservations at or above which the sample is called adequate | convention | [20, 50] | |
reg.mohan_n_minimalobservations at or above which the sample is called minimal | convention | [10, 20] | |
reg.dw_bandDurbin-Watson band treated as no autocorrelation | convention | [[1.7, 2.3], [1.3, 2.7]] | |
reg.vif_maxVIF at or above which multicollinearity is flagged | convention | [5, 10] | |
reg.cooks_influential_fracshare of observations allowed above the Cook's distance threshold before flagging | judgment | [0.02, 0.1] | |
reg.timeseries_min_daysdate span above which data is treated as a time series | judgment | [90, 365] | |
reg.timeseries_min_rowsrows required to treat dated data as a time series | judgment | [8, 24] | |
reg.monthly_max_rowsrows at or below which a time series is called monthly rather than daily | judgment | [60, 240] | |
reg.small_sample_nrows below which the sample is flagged small | convention | [20, 50] | |
reg.normality_small_nresidual count below which a normality failure is a higher Daubert risk | judgment | [50, 200] |
Source of truth: assumptions.py in the NorthLaw repository (Audit C, F-56–F-59). If one of these does not fit your matter, the expert-review engagement re-runs the analysis with your figures.