Refactor extraction of raw terms from regression result

This commit is contained in:
RunasSudo 2023-04-21 18:10:19 +10:00
parent f9a8a5cf01
commit fd30a3c1c7
Signed by: RunasSudo
GPG Key ID: 7234E476BF21C61A

View File

@ -455,6 +455,18 @@ class RegressionModel:
return out return out
def terms_flat(self):
"""
Iterate over each :class:`SingleTerm` in *self.terms*, recursively stepping through :class:`CategoricalTerm`\ s
"""
for t in self.terms.values():
if isinstance(t, CategoricalTerm):
for t in t.categories.values():
yield t
else:
yield t
# -------------------- # --------------------
# Post hoc tests, etc. # Post hoc tests, etc.
@ -477,12 +489,8 @@ class RegressionModel:
# Get parameters required for AFBF # Get parameters required for AFBF
raw_params = {} raw_params = {}
for t in self.terms.values(): for t in self.terms_flat():
if isinstance(t, CategoricalTerm): raw_params[t.raw_name.replace('[', '_').replace(']', '_')] = t.beta.point
for t in t.categories.values():
raw_params[t.raw_name.replace('[', '_').replace(']', '_')] = t.beta.point
else:
raw_params[t.raw_name.replace('[', '_').replace(']', '_')] = t.beta.point
# Compute BF matrix # Compute BF matrix
bf01 = bayesfactor_afbf(pd.Series(raw_params), self.vcov, self.nobs, '{} = 0'.format(term.replace('[', '_').replace(']', '_'))) bf01 = bayesfactor_afbf(pd.Series(raw_params), self.vcov, self.nobs, '{} = 0'.format(term.replace('[', '_').replace(']', '_')))