parameters
Describe and understand your model’s parameters!
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
bootstrapping of parameters and models, feature reduction
(feature extraction and variable selection).
Installation
Run the following:
install.packages("parameters")
library("parameters")
Documentation
Click on the buttons above to access the package documentation and the easystats blog, and check-out these vignettes:
- Parameters description
- Bootstrapped parameters
- Parameters selection
- Feature reduction (PCA, cMDS, ICA…)
- Structural models (EFA, CFA, SEM…)
Features
Model’s parameters description
The
model_parameters()
function (that can be accessed via the parameters()
shortcut) 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 column names of the returned data frame 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 (however, you can get
standardized (generic) column names using
standardize_names()
). - It is able to compute or extract indices not available by default, such as p-values, CIs, etc.
- It includes feature engineering capabilities, including parameters bootstrapping.
Classical Regression Models
model <- lm(Sepal.Width ~ Petal.Length * Species + Petal.Width, data = iris)
# regular model parameters
model_parameters(model)
# Parameter | Coefficient | SE | 95% CI | t | df | p
# ------------------------------------------------------------------------------------------------
# (Intercept) | 2.89 | 0.36 | [ 2.18, 3.60] | 8.01 | 143 | < .001
# Petal.Length | 0.26 | 0.25 | [-0.22, 0.75] | 1.07 | 143 | 0.287
# Species [versicolor] | -1.66 | 0.53 | [-2.71, -0.62] | -3.14 | 143 | 0.002
# Species [virginica] | -1.92 | 0.59 | [-3.08, -0.76] | -3.28 | 143 | 0.001
# Petal.Width | 0.62 | 0.14 | [ 0.34, 0.89] | 4.41 | 143 | < .001
# Petal.Length * Species [versicolor] | -0.09 | 0.26 | [-0.61, 0.42] | -0.36 | 143 | 0.721
# Petal.Length * Species [virginica] | -0.13 | 0.26 | [-0.64, 0.38] | -0.50 | 143 | 0.618
# standardized parameters
model_parameters(model, standardize = "refit")
# Parameter | Coefficient (std.) | SE | 95% CI | t | df | p
# -------------------------------------------------------------------------------------------------------
# (Intercept) | 3.59 | 1.30 | [ 1.03, 6.14] | 8.01 | 143 | < .001
# Petal.Length | 1.07 | 1.00 | [-0.89, 3.03] | 1.07 | 143 | 0.287
# Species [versicolor] | -4.62 | 1.31 | [-7.19, -2.06] | -3.14 | 143 | 0.002
# Species [virginica] | -5.51 | 1.38 | [-8.20, -2.81] | -3.28 | 143 | 0.001
# Petal.Width | 1.08 | 0.24 | [ 0.60, 1.56] | 4.41 | 143 | < .001
# Petal.Length * Species [versicolor] | -0.38 | 1.06 | [-2.46, 1.70] | -0.36 | 143 | 0.721
# Petal.Length * Species [virginica] | -0.52 | 1.04 | [-2.56, 1.52] | -0.50 | 143 | 0.618
Mixed Models
library(lme4)
model <- lmer(Sepal.Width ~ Petal.Length + (1|Species), data = iris)
# model parameters with CI, df and p-values based on Wald approximation
model_parameters(model)
# Parameter | Coefficient | SE | 95% CI | t | df | p
# ----------------------------------------------------------------------
# (Intercept) | 2.00 | 0.56 | [0.90, 3.10] | 3.56 | 146 | < .001
# Petal.Length | 0.28 | 0.06 | [0.17, 0.40] | 4.75 | 146 | < .001
# model parameters with CI, df and p-values based on Kenward-Roger approximation
model_parameters(model, df_method = "kenward")
# Parameter | Coefficient | SE | 95% CI | t | p
# ----------------------------------------------------------------
# (Intercept) | 2.00 | 0.57 | [0.08, 3.92] | 3.53 | 0.046
# Petal.Length | 0.28 | 0.06 | [0.16, 0.40] | 4.58 | < .001
Structural Models
Besides many types of regression models and packages, it also works for other types of models, such as structural models (EFA, CFA, SEM…).
library(psych)
model <- psych::fa(attitude, nfactors = 3)
model_parameters(model)
# # Rotated loadings from Principal Component Analysis (oblimin-rotation)
#
# Variable | MR1 | MR2 | MR3 | Complexity | Uniqueness
# ------------------------------------------------------------
# rating | 0.90 | -0.07 | -0.05 | 1.02 | 0.23
# complaints | 0.97 | -0.06 | 0.04 | 1.01 | 0.10
# privileges | 0.44 | 0.25 | -0.05 | 1.64 | 0.65
# learning | 0.47 | 0.54 | -0.28 | 2.51 | 0.24
# raises | 0.55 | 0.43 | 0.25 | 2.35 | 0.23
# critical | 0.16 | 0.17 | 0.48 | 1.46 | 0.67
# advance | -0.11 | 0.91 | 0.07 | 1.04 | 0.22
#
# The 3 latent factors (oblimin rotation) accounted for 66.60% of the total variance of the original data (MR1 = 38.19%, MR2 = 22.69%, MR3 = 5.72%).
Variable and parameters selection
parameters_selection()
can help you quickly select and retain the most relevant predictors
using methods tailored for the model type.
library(dplyr)
lm(disp ~ ., data = mtcars) %>%
select_parameters() %>%
model_parameters()
# Parameter | Coefficient | SE | 95% CI | t | df | p
# ----------------------------------------------------------------------------
# (Intercept) | 141.70 | 125.67 | [-116.62, 400.02] | 1.13 | 26 | 0.270
# cyl | 13.14 | 7.90 | [ -3.10, 29.38] | 1.66 | 26 | 0.108
# hp | 0.63 | 0.20 | [ 0.22, 1.03] | 3.18 | 26 | 0.004
# wt | 80.45 | 12.22 | [ 55.33, 105.57] | 6.58 | 26 | < .001
# qsec | -14.68 | 6.14 | [ -27.31, -2.05] | -2.39 | 26 | 0.024
# carb | -28.75 | 5.60 | [ -40.28, -17.23] | -5.13 | 26 | < .001
This function also works for mixed or Bayesian models:
library(rstanarm)
stan_glm(mpg ~ ., data = mtcars, refresh = 0) %>%
select_parameters() %>%
model_parameters()
# Parameter | Median | 89% CI | pd | % in ROPE | Rhat | ESS | Prior
# -----------------------------------------------------------------------------------------------
# (Intercept) | 19.90 | [-0.59, 44.44] | 92.62% | 1.23% | 1.000 | 2348 | Normal (0 +- 60.27)
# wt | -3.98 | [-5.92, -1.88] | 99.75% | 0.32% | 1.001 | 2159 | Normal (0 +- 15.40)
# cyl | -0.48 | [-1.91, 0.76] | 71.43% | 46.02% | 1.000 | 2651 | Normal (0 +- 8.44)
# hp | -0.02 | [-0.04, 0.01] | 89.22% | 100% | 1.000 | 2766 | Normal (0 +- 0.22)
# am | 2.93 | [-0.01, 5.77] | 94.90% | 7.42% | 1.000 | 2813 | Normal (0 +- 15.07)
# qsec | 0.80 | [-0.18, 1.73] | 91.33% | 35.23% | 1.000 | 2273 | Normal (0 +- 8.43)
# disp | 0.01 | [-0.01, 0.03] | 87.08% | 100% | 1.002 | 2601 | Normal (0 +- 0.12)
Miscellaneous
This packages also contains a lot of other useful functions:
Describe a Distribution
x <- rnorm(300)
describe_distribution(x)
Mean | SD | Min | Max | Skewness | Kurtosis | n | n_Missing |
---|---|---|---|---|---|---|---|
-0.1 | 1 | -3 | 3 | 0 | -0.3 | 300 | 0 |
Citation
In order to cite this package, please use the following citation:
- Makowski D, Ben-Shachar M, Lüdecke D (2019). “Describe and understand your model’s parameters.” CRAN. R package, https://github.com/easystats/parameters.
Corresponding BibTeX entry:
@Article{,
title = {Describe and understand your model's parameters},
author = {Dominique Makowski and Mattan S. Ben-Shachar and Daniel
Lüdecke},
journal = {CRAN},
year = {2019},
note = {R package},
url = {https://github.com/easystats/parameters},
}