diff --git a/tests/test_regress.py b/tests/test_regress.py index 89ba21b..33a395e 100644 --- a/tests/test_regress.py +++ b/tests/test_regress.py @@ -38,13 +38,13 @@ def test_regress_ols_ol11_4(): assert result.ftest().pvalue < 0.0005 assert result.rsquared == approx(0.7429, abs=0.0001) - assert result.beta['Intercept'].point == approx(47.48, abs=0.01) - assert result.pvalues['Intercept'] < 0.0005 - assert result.beta['SoilPh'].point == approx(-7.86, abs=0.01) - assert result.pvalues['SoilPh'] < 0.0005 + assert result.terms['(Intercept)'].beta.point == approx(47.48, abs=0.01) + assert result.terms['(Intercept)'].pvalue < 0.0005 + assert result.terms['SoilPh'].beta.point == approx(-7.86, abs=0.01) + assert result.terms['SoilPh'].pvalue < 0.0005 - assert result.beta['SoilPh'].ci_lower == approx(-10.15, abs=0.01) - assert result.beta['SoilPh'].ci_upper == approx(-5.57, abs=0.01) + assert result.terms['SoilPh'].beta.ci_lower == approx(-10.15, abs=0.01) + assert result.terms['SoilPh'].beta.ci_upper == approx(-5.57, abs=0.01) def test_regress_ols_ol13_5(): """Compare yli.regress for Ott & Longnecker (2016) chapter 13.5""" @@ -72,28 +72,28 @@ def test_regress_ols_ol13_5(): assert result.ftest().pvalue < 0.00005 assert result.rsquared == approx(0.8635, abs=0.0001) - assert result.beta['Intercept'].point == approx(-10.63398, abs=0.00001) - assert result.pvalues['Intercept'] == approx(0.0766, abs=0.0001) - assert result.beta['D'].point == approx(0.22760, abs=0.00001) - assert result.pvalues['D'] == approx(0.0157, abs=0.0001) - assert result.beta['T1'].point == approx(0.00525, abs=0.00001) - assert result.pvalues['T1'] == approx(0.8161, abs=0.0001) - assert result.beta['T2'].point == approx(0.00561, abs=0.00001) - assert result.pvalues['T2'] == approx(0.2360, abs=0.0001) - assert result.beta['S'].point == approx(0.00088369, abs=0.00000001) - assert result.pvalues['S'] < 0.0001 - assert result.beta['PR'].point == approx(-0.10813, abs=0.00001) - assert result.pvalues['PR'] == approx(0.2094, abs=0.0001) - assert result.beta['NE'].point == approx(0.25949, abs=0.00001) - assert result.pvalues['NE'] == approx(0.0036, abs=0.0001) - assert result.beta['CT'].point == approx(0.11554, abs=0.00001) - assert result.pvalues['CT'] == approx(0.1150, abs=0.0001) - assert result.beta['BW'].point == approx(0.03680, abs=0.00001) - assert result.pvalues['BW'] == approx(0.7326, abs=0.0001) - assert result.beta['N'].point == approx(-0.01203, abs=0.00001) - assert result.pvalues['N'] == approx(0.1394, abs=0.0001) - assert result.beta['PT'].point == approx(-0.22197, abs=0.00001) - assert result.pvalues['PT'] == approx(0.1035, abs=0.0001) + assert result.terms['(Intercept)'].beta.point == approx(-10.63398, abs=0.00001) + assert result.terms['(Intercept)'].pvalue == approx(0.0766, abs=0.0001) + assert result.terms['D'].beta.point == approx(0.22760, abs=0.00001) + assert result.terms['D'].pvalue == approx(0.0157, abs=0.0001) + assert result.terms['T1'].beta.point == approx(0.00525, abs=0.00001) + assert result.terms['T1'].pvalue == approx(0.8161, abs=0.0001) + assert result.terms['T2'].beta.point == approx(0.00561, abs=0.00001) + assert result.terms['T2'].pvalue == approx(0.2360, abs=0.0001) + assert result.terms['S'].beta.point == approx(0.00088369, abs=0.00000001) + assert result.terms['S'].pvalue < 0.0001 + assert result.terms['PR'].beta.point == approx(-0.10813, abs=0.00001) + assert result.terms['PR'].pvalue == approx(0.2094, abs=0.0001) + assert result.terms['NE'].beta.point == approx(0.25949, abs=0.00001) + assert result.terms['NE'].pvalue == approx(0.0036, abs=0.0001) + assert result.terms['CT'].beta.point == approx(0.11554, abs=0.00001) + assert result.terms['CT'].pvalue == approx(0.1150, abs=0.0001) + assert result.terms['BW'].beta.point == approx(0.03680, abs=0.00001) + assert result.terms['BW'].pvalue == approx(0.7326, abs=0.0001) + assert result.terms['N'].beta.point == approx(-0.01203, abs=0.00001) + assert result.terms['N'].pvalue == approx(0.1394, abs=0.0001) + assert result.terms['PT'].beta.point == approx(-0.22197, abs=0.00001) + assert result.terms['PT'].pvalue == approx(0.1035, abs=0.0001) def test_regress_logit_ol12_23(): """Compare yli.regress for Ott & Longnecker (2016) chapter 12.23""" @@ -112,12 +112,12 @@ def test_regress_logit_ol12_23(): assert lrtest_result.dof == 2 assert lrtest_result.pvalue == approx(0.0191, rel=0.02) - expbeta_fib = np.exp(result.beta['Fibrinogen']) + expbeta_fib = np.exp(result.terms['Fibrinogen'].beta) assert expbeta_fib.point == approx(6.756, rel=0.01) assert expbeta_fib.ci_lower == approx(1.007, rel=0.01) assert expbeta_fib.ci_upper == approx(45.308, rel=0.02) - expbeta_gam = np.exp(result.beta['GammaGlobulin']) + expbeta_gam = np.exp(result.terms['GammaGlobulin'].beta) assert expbeta_gam.point == approx(1.169, abs=0.001) assert expbeta_gam.ci_lower == approx(0.924, abs=0.001) assert expbeta_gam.ci_upper == approx(1.477, abs=0.001) @@ -133,14 +133,14 @@ def test_regress_penalisedlogit_kleinman(): result = yli.regress(yli.PenalisedLogit, df, 'Outcome', 'Pred', exp=False) assert result.dof_model == 1 - assert result.beta['(Intercept)'].point == approx(-2.280389) - assert result.beta['(Intercept)'].ci_lower == approx(-2.765427) - assert result.beta['(Intercept)'].ci_upper == approx(-1.851695) - assert result.pvalues['(Intercept)'] < 0.0001 - assert result.beta['Pred'].point == approx(5.993961) - assert result.beta['Pred'].ci_lower == approx(3.947048) - assert result.beta['Pred'].ci_upper == approx(10.852893) - assert result.pvalues['Pred'] < 0.0001 + assert result.terms['(Intercept)'].beta.point == approx(-2.280389) + assert result.terms['(Intercept)'].beta.ci_lower == approx(-2.765427) + assert result.terms['(Intercept)'].beta.ci_upper == approx(-1.851695) + assert result.terms['(Intercept)'].pvalue < 0.0001 + assert result.terms['Pred'].beta.point == approx(5.993961) + assert result.terms['Pred'].beta.ci_lower == approx(3.947048) + assert result.terms['Pred'].beta.ci_upper == approx(10.852893) + assert result.terms['Pred'].pvalue < 0.0001 lrtest_result = result.lrtest_null() assert lrtest_result.statistic == approx(78.95473) diff --git a/yli/regress.py b/yli/regress.py index 6d6dea4..34aa729 100644 --- a/yli/regress.py +++ b/yli/regress.py @@ -103,7 +103,7 @@ class RegressionResult: raw_result, full_name, model_name, fit_method, dep, nobs, dof_model, fitted_dt, - beta, pvalues, + terms, llf, llnull, dof_resid, rsquared, f_statistic, exp @@ -122,9 +122,8 @@ class RegressionResult: self.dof_model = dof_model self.fitted_dt = fitted_dt - # Regression coefficients - self.beta = beta - self.pvalues = pvalues + # Regression coefficients/p values + self.terms = terms # Model log-likelihood self.llf = llf @@ -165,7 +164,7 @@ class RegressionResult: """ # Get parameters required for AFBF - params = pd.Series({term.replace('[', '_').replace(']', '_'): beta.point for term, beta in self.beta.items()}) + params = pd.Series({term.raw_name.replace('[', '_').replace(']', '_'): term.beta.point for term in self.terms.values()}) cov = self.raw_result.cov_params() # Compute BF matrix @@ -240,12 +239,33 @@ class RegressionResult: # Render coefficients table out += '
{} | (95% CI) | p | |||
---|---|---|---|---|---|
{} | {:.2f} | ({:.2f} | – | {:.2f}) | {} |
{} | {:.2f} | ({:.2f} | – | {:.2f}) | {} |
{} | |||||
{} | Ref. | ||||
{} | {:.2f} | ({:.2f} | – | {:.2f}) | {} |