From b24f675d57c71598d06e6066bb2f2f322f4134ed Mon Sep 17 00:00:00 2001 From: RunasSudo Date: Mon, 17 Oct 2022 20:34:36 +1100 Subject: [PATCH] Don't show SciPy optimisation message in regression --- yli/regress.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/yli/regress.py b/yli/regress.py index bd20806..ad2d4e6 100644 --- a/yli/regress.py +++ b/yli/regress.py @@ -396,13 +396,17 @@ def regress( # Fit model model = model_class.from_formula(formula=dep + ' ~ ' + formula, data=df, **model_kwargs) - result = model.fit(**fit_kwargs) + result = model.fit(disp=False, **fit_kwargs) if isinstance(result, RegressionResult): # Already processed! result.exp = exp return result + # Check convergence + if hasattr(result, 'mle_retvals') and not result.mle_retvals['converged']: + warnings.warn('Maximum likelihood estimation failed to converge. Check raw_result.mle_retvals.') + # Process terms terms = {} @@ -478,6 +482,10 @@ def logit_then_regress(model_class, df, dep, formula, *, nan_policy='warn', **kw logit_result = regress(sm.Logit, df, dep, formula, **kwargs) logit_params = logit_result.raw_result.params + # Check convergence + if not logit_result.raw_result.mle_retvals['converged']: + return None + # Perform desired regression return regress(model_class, df, dep, formula, start_params=logit_params, **kwargs)