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)