-
-
Notifications
You must be signed in to change notification settings - Fork 77
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
new vignette to catalog comparisons between broom
and easystats
ecosystems
#104
Comments
Though I think the closer equivalent of broom::augment would be directly |
The applications of all of these are mostly for various types of plotting (e.g., for diagnostics, evaluating model fit, or illustrating predictions). Indeed, I think the main reason that It makes some sense to me that (1) and (2) would use the same function (as Based on my reading of various discussions, the current easystats thinking is that |
totally agree |
@vincentarelbundock Given that you are the team member with the most experience of contributing both to the broom and easystats ecosystems, I am wondering if you would be interested in jump-starting this article? No worries if you are already spread too thin to take an additional thing on your plate. Just wanted to check |
Thanks for the ping @IndrajeetPatil! Honestly, I don't feel I have the energy to write a polished vignette on this, but here are a few points I think are noteworthy. Equivalence between
|
This is incredible, @vincentarelbundock! Thank you so much for your valuable (and incredibly insightful) remarks! Your comment actually provides the perfect skeleton, wherein I can now introduce some flesh. ✍️ @easystats/maintainers Please have a look at Vincent's comment. I think these are valid concerns, and we should pay heed to them and make the necessary changes. |
Thanks a lot for your input, Vincent. I share your concerns you mentioned under "Further thoughts about broom vs. easystats". Regarding 2), I think we managed to address many / most important points where performance was really poor and could improve the speed a lot. Still, we have to keep this in mind. Regarding 1), that's why I don't like snapshot tests. I'd say there are quite a lot of places in our tests where the hard coded values are indeed from external sources, so a kind of "external validation". And in some places, in particular And regarding 3), I think we have made some improvements on the one hand; on the other hand, since we're adding new features regularly, we always fall behind our achievements again ;-) As an example for parameters, we could "templatize" the code files a bit more: e.g., if the methods_AER.r file has no (needs no) Regarding all the previous part of Vincent's post, that's a great draft we can build on. |
Regarding 3) I agree feature creep is scary, but my hope is that we will (soon) reach a point of stability, especially for lower-level packages like insight/datawizard/parameters, where the methods will work and be feature-complete for 98% of the most used models. Since we don't rely much on other dependencies, we don't have to adjust to upstream changes, so we will enter a maintenance phase where most of the additions will be related to edgecase bugs, and the supporting of new models as they are made. And less breaking changes :) But it's true that, despite having this as a general direction and end-goal, it's hard to tell through which port the easystats ship will sail, given that we must also stay aware of the tides and the winds that blow in the R-verse, to keep our momentum and stay relevant Regarding the code quality yes, there's a lot improvement to be made in terms of efficiency or simply structure (RIP bayestestR ). But for that, the best would be to obtain funding and recruit a dev that could help with that as a full-time job. In general, we should really start seriously looking for funding, so many smaller projects are funded I don't see why not easystats |
Thanks all for engaging! All your points are well-taken and reassuring. To be clear, none of the points I raised seem like big deals to me. The code base is nice and relatively easy to read, and there are many tests. I just wanted to flag these as things to keep in mind for the future, but IMHO the current state of affairs is healthy and exciting! The idea of finding grant support is very intriguing. I don't know of any programs like this in Canada, but would be very curious to learn about them (here or elsewhere). |
More thoughts and questions (as the maintainer of I would be interested in bringing (Based on GH activity it seems as though There might be philosophical differences in some places as well (e.g. I'm really not sure about providing Wald CIs, even on the log scale, for RE SDs by default, although I agree that it's a useful option to have ...) Another question/thought is about how easy it is to facilitate contributions of additional methods ... for better or worse, model_parameters(model) |> c() |> tibble::as_tibble() possibly optionally renaming the columns for library(broom.mixed); library(parameters)
m1 <- methods("model_parameters")
m2 <- methods("tidy") ## 157 but includes broom stuff as well
m3 <- broom.mixed::get_methods() ## 24 p_methods <- m1 |> unclass() |> c() |> gsub(pattern = "^[^.]*\\.", replacement = "")
b_methods <- m3$class
intersect(p_methods, b_methods)
## [1] "brmsfit" "gamlss" "glmmTMB" "lme" "lqmm" "mcmc"
## [7] "mcmc.list" "MCMCglmm" "merMod" "MixMod" "rlmerMod" "stanfit"
## [13] "stanreg"
setdiff(b_methods, p_methods)
## [1] "allFit" "gamm4" "glmmadmb" "gls" "lmList4"
## [6] "mediate.mer" "ranef.mer" "rjags" "TMB" "varComb"
## [11] "varFunc" I don't know exactly how to isolate "mixed model-like classes" from the list of This is the list of mm_pkgs <- ctv:::.get_pkgs_from_ctv_or_repos("MixedModels")
intersect(p_methods, mm_pkgs[[1]])
[1] "bamlss" "blavaan" "gamlss" "ggeffects"
[5] "glmm" "glmmTMB" "hglm" "lavaan"
[9] "lqmm" "marginaleffects" "MCMCglmm" "mmrm"
[13] "sem" |
I can’t speak for the core devs, but from the perspective of a user (who sometimes makes minor contributions), this would be a welcome development. A couple comments. First, from a design perspective, I feel that the main differences
FYI, you can rename columns to library(parameters)
mod <- lm(mpg ~ hp * am, data = mtcars)
parameters(mod) |> standardize_names(style = "broom")
|
An alternative syntax and strategy would be to simply define a model_parameters(model) |> tidy() |
I will take a first crack at this once the new
API
formodelbased
is stable (easystats/insight#315).Should discuss:
easystats
overbroom
broom
code toeasystats
codeFeel free to add comments listing other things to discuss.
The text was updated successfully, but these errors were encountered: