Exploring Model Selection with TidyDensity: Understanding AIC for Statistical Distributions


Steven P. Sanderson II, MPH


May 6, 2024


In the world of data analysis and statistics, one of the key challenges is selecting the best model to describe and analyze your data. This decision is crucial because it impacts the accuracy and reliability of your results. Among the many tools available, the Akaike Information Criterion (AIC) stands out as a powerful method for comparing different models and choosing the most suitable one.

Today we will go through an example of model selection using the AIC, specifically focusing on its application to various statistical distributions available in the TidyDensity package. TidyDensity, a part of the healthyverse ecosystem, offers a comprehensive suite of tools for data analysis in R, including functions to compute AIC scores for different probability distributions.

What is AIC?

The Akaike Information Criterion (AIC) is a mathematical tool used for model selection. It balances the goodness of fit of a model with its complexity, penalizing overly complex models to prevent overfitting. In simpler terms, AIC helps us choose the most effective model that explains our data without being too complex.

Exploring TidyDensity’s Distribution Functions

TidyDensity provides a range of utility functions prefixed with util_ that calculate the AIC for specific probability distributions. Let’s take a closer look at some of these functions:

  • Beta Distribution (util_beta_aic()): Computes the AIC for a beta distribution, which is often used to model random variables constrained to the interval [0, 1].

  • Binomial Distribution (util_binomial_aic()): Calculates the AIC for a binomial distribution, commonly used to model the number of successes in a fixed number of independent trials.

  • Cauchy Distribution (util_cauchy_aic()): Computes the AIC for a Cauchy distribution, known for its symmetric bell-shaped curve.

  • Exponential Distribution (util_exponential_aic()): Determines the AIC for an exponential distribution, frequently used to model the time between events in a Poisson process.

  • Normal Distribution (util_normal_aic()): Computes the AIC for a normal distribution, which is ubiquitous in statistics due to the central limit theorem.

These are just a few examples of the distribution-specific AIC functions available in TidyDensity. Each function evaluates the goodness of fit of a particular distribution to your data and provides an AIC score, aiding in the selection of the most appropriate model.

How to Use AIC for Model Selection

Using these functions in TidyDensity is straightforward. Simply pass your data to the desired distribution function, and it will return the AIC score. Lower AIC values indicate a better fit, so the distribution with the lowest AIC is typically chosen as the optimal model.

Here’s a simplified example of how you might use these functions:

# Load TidyDensity library

# Generate some sample data
data <- rnorm(100, mean = 0, sd = 1)

# Compute AIC for normal distribution
normal_aic <- util_normal_aic(data)

# Compute AIC for exponential distribution
cauchy_aic <- util_cauchy_aic(data)

# Compare AIC scores
if (normal_aic < cauchy_aic) {
  print("Normal distribution is a better fit.")
} else {
  print("Cauchy distribution is a better fit.")
[1] "Normal distribution is a better fit."
cat("Normal AIC: ", normal_aic, "\n")
Normal AIC:  285.9777 
cat("Cauchy AIC: ", cauchy_aic)
Cauchy AIC:  317.1025


In conclusion, the Akaike Information Criterion (AIC) plays a crucial role in statistical modeling and model selection. The TidyDensity package enhances this capability by providing specialized functions to compute AIC scores for various probability distributions. By leveraging these functions, data analysts and researchers can make informed decisions about which distribution best describes their data, leading to more robust and accurate statistical analyses.

If you’re interested in harnessing the power of AIC and exploring different probability distributions in R, be sure to check out TidyDensity and incorporate these tools into your data analysis toolkit. Happy modeling!