parameters: a powerful and lightweight alternative to broom to describe your models’ coefficients

September 9, 2019
By

[This article was first published on R on easystats, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Okay, “an alternative to broom” might be a bit of an overstatement (at least for now…)

But the parameters package, finally on CRAN, already has some cool features!

parameters

We have recently decided to collaborate around the easystats project, a set of packages designed to make your life easier. This project encompasses several packages, devoted for instance to model internal access, Bayesian analysis, as well as indices of model performance and quality.

parameters' primary goal is to provide utilities for processing the parameters of various statistical models. Beyond computing p-values, CIs, Bayesian indices and other measures for a wide variety of models, this package implements features like standardization or bootstrapping of parameters and models, feature reduction (feature extraction and variable selection) as well as conversion between indices of effect size.

The main function of the package is model_parameters(), which allows you to extract the parameters and their characteristics from various models in a consistent way. It can be considered as a lightweight alternative to broom::tidy(), with some notable differences:

  • The names of the returned dataframe are specific to their content. For instance, the column containing the statistic is named following the statistic name, i.e., t, z, etc., instead of a generic name such as statistic.
  • It is able to compute or extract indices not available by default, such as p values, CIs, etc.
  • It includes feature engineering capabilities, including bootstrapping and standardization of parameters.

Examples

ANOVAs

df <- iris
df$Sepal.Big <- ifelse(df$Sepal.Width >= 3, "Yes", "No")

model <- aov(Sepal.Length ~ Sepal.Big, data = df)
model_parameters(model, eta_squared = "partial")
## Parameter | Sum_Squares |  df | Mean_Square |    F |    p | Eta_Sq (partial)
## ----------------------------------------------------------------------------
## Sepal.Big |        1.10 |   1 |        1.10 | 1.61 | > .1 |             0.01
## Residuals |      101.07 | 148 |        0.68 |      |      |

Mixed models

library(lme4)

model <- lmer(Sepal.Width ~ Petal.Length + Petal.Width + (1|Species), data = iris)
model_parameters(model, standardize = "refit")
## Parameter    | Coefficient |   SE |        95% CI |    t |      p | Coefficient (std.)
## --------------------------------------------------------------------------------------
## (Intercept)  |        1.78 | 0.69 | [-1.71, 5.26] | 2.56 |  < .05 |               0.00
## Petal.Length |        0.15 | 0.06 | [-0.14, 0.43] | 2.26 |  < .05 |               0.59
## Petal.Width  |        0.61 | 0.14 | [-0.59, 1.81] | 4.49 | < .001 |               1.07

And you can also directly plot the parameters with the see package!

library(see)

lmer(Sepal.Width ~ Petal.Length * Petal.Width + (1|Species), data = iris) %>% 
  model_parameters() %>% 
  plot()

Bayesian models

library(rstanarm)

model <- stan_glm(mpg ~ wt + cyl, data = mtcars)
model_parameters(model)
## Parameter   | Median |         89% CI |     pd | % in ROPE |  ESS |  Rhat |               Prior
## -----------------------------------------------------------------------------------------------
## (Intercept) |  39.68 | [36.74, 42.35] |   100% |        0% | 4836 | 0.999 | Normal (0 +- 60.27)
## wt          |  -3.19 | [-4.41, -2.03] | 99.98% |     0.05% | 2276 | 1.000 | Normal (0 +- 15.40)
## cyl         |  -1.50 | [-2.21, -0.88] |   100% |     1.75% | 2300 | 1.000 |  Normal (0 +- 8.44)

Get Involved

There is definitely room for improvement, and some new exciting features are already planned. Feel free to let us know how we could further improve this package!

Note that easystats is a new project in active development, looking for contributors and supporters. Thus, do not hesitate to contact us if you want to get involved 🙂

  • Check out our other blog posts here!

To leave a comment for the author, please follow the link and comment on their blog: R on easystats.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.



If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Comments are closed.

Search R-bloggers

Sponsors

Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)