Source code for pymer4.tidystats.broom

 1from rpy2.robjects.packages import importr
 2from .bridge import ensure_py_output, to_dict, ensure_r_input
 3import rpy2.robjects as ro
 4
 5__all__ = ["tidy", "glance", "augment"]
 6
 7lib_broom = importr("broom")
 8lib_broom_mixed = importr("broom.mixed")
 9
10
[docs] 11@ensure_py_output 12@ensure_r_input 13def tidy(model, **kwargs): 14 """Summarize information about model components. Uses `broom.mixed::tidy.merMod <https://www.rdocumentation.org/packages/broom.mixed/versions/0.2.9.6/topics/lme4_tidiers>`_ for linear-mixed-models, `broom::tidy.lm <https://www.rdocumentation.org/packages/broom/versions/0.7.0/topics/tidy.lm>`_ for linear models, and `broom::tidy.glm <https://www.rdocumentation.org/packages/broom/versions/0.7.0/topics/tidy.glm>`_ for generalized linear models.""" 15 if isinstance(model, ro.methods.RS4): 16 func = lib_broom_mixed.tidy_merMod 17 elif isinstance(model, ro.vectors.ListVector): 18 method = to_dict(model).get("method", None) 19 if method and method[0] == "glm.fit": 20 func = lib_broom.tidy_glm 21 else: 22 func = lib_broom.tidy_lm 23 24 return func(model, **kwargs)
25 26
[docs] 27@ensure_py_output 28def glance(model, /, **kwargs): 29 """Report information about the entire model. Uses `broom.mixed:::glance.merMod <https://www.rdocumentation.org/packages/broom.mixed/versions/0.2.9.6/topics/lme4_tidiers>`_ for linear-mixed-models, `broom::glance.lm <https://www.rdocumentation.org/packages/broom/versions/0.7.0/topics/glance.lm>`_ for linear models, and `broom::glance.glm <https://www.rdocumentation.org/packages/broom/versions/0.7.0/topics/glance.glm>`_ for generalized linear models.""" 30 if isinstance(model, ro.methods.RS4): 31 func = lib_broom_mixed.glance_merMod 32 elif isinstance(model, ro.vectors.ListVector): 33 method = to_dict(model).get("method", None) 34 if method and method[0] == "glm.fit": 35 func = lib_broom.glance_glm 36 else: 37 func = lib_broom.glance_lm 38 39 return func(model, **kwargs)
40 41
[docs] 42@ensure_py_output 43def augment(model, /, **kwargs): 44 """Add information as observations to dataset. Uses `broom.mixed:::augment.merMod <https://www.rdocumentation.org/packages/broom.mixed/versions/0.2.9.6/topics/lme4_tidiers>`_ for linear-mixed-models, `broom::augment.lm <https://www.rdocumentation.org/packages/broom/versions/0.7.0/topics/augment.lm>`_ for linear models, and `broom::augment.glm <https://www.rdocumentation.org/packages/broom/versions/0.7.0/topics/augment.glm>`_ for generalized linear models.""" 45 if isinstance(model, ro.methods.RS4): 46 func = lib_broom_mixed.augment_merMod 47 if isinstance(model, ro.vectors.ListVector): 48 method = to_dict(model).get("method", None) 49 if method and method[0] == "glm.fit": 50 func = lib_broom.augment_glm 51 else: 52 func = lib_broom.augment_lm 53 54 return func(model, **kwargs)