An Overview of the New AIC Functions in the TidyDensity Package


Steven P. Sanderson II, MPH


May 31, 2024


The latest update the the TidyDensity package introduces several new functions that make it easier to work with data in R. In this article, we’ll take a look at the new AIC functions and how they work.

New Functions

The set of functions that we will go over are the util_dist_aic() functions, where dist is the distribution in question, for example util_negative_binomial_aic(). These functions calculate the Akaike Information Criterion (AIC) for a given distribution and data. The AIC is a measure of the relative quality of a statistical model for a given set of data. The lower the AIC value, the better the model fits the data. Here is a bit about the functions.




  • .x: A numeric vector of data values.


A numeric value representing the AIC for the given data and distribution.


This function calculates the Akaike Information Criterion (AIC) for a distribution fitted to the provided data.

This function fits a distribution to the provided data. It estimates the parameters of the distribution from the data. Then, it calculates the AIC value based on the fitted distribution.

Initial parameter estimates: The function uses the param estimate family of functions in order to estimate the starting point of the parameters. For example util_negative_binomial_param_estimate().

Optimization method: Since the parameters are directly calculated from the data, no optimization is needed.

Goodness-of-fit: While AIC is a useful metric for model comparison, it’s recommended to also assess the goodness-of-fit of the chosen model using visualization and other statistical tests.



# Generate some data
x <- rnorm(100)

# Calculate the AIC for a negative binomial distribution
  " AIC of rnorm() using TidyDensity: ", util_normal_aic(x), "\n",
  "AIC of rnorm() using fitdistrplus: ", 
  fitdistrplus::fitdist(x, "norm")$aic
 AIC of rnorm() using TidyDensity:  268.5385 
 AIC of rnorm() using fitdistrplus:  268.5385

New AIC Functions

Here is a listing of all of the new AIC functions:

  • util_negative_binomial_aic()
  • util_zero_truncated_negative_binomial_aic()
  • util_zero_truncated_poisson_aic()
  • util_f_aic()
  • util_zero_truncated_geometric_aic()
  • util_t_aic()
  • util_pareto1_aic()
  • util_paralogistic_aic()
  • util_inverse_weibull_aic()
  • util_pareto_aic()
  • util_inverse_burr_aic()
  • util_generalized_pareto_aic()
  • util_generalized_beta_aic()
  • util_zero_truncated_binomial_aic()


Thanks for reading. I hope you find these new functions useful in your work. If you have any questions or feedback, please feel free to reach out. I worked hard to ensure where I could that results would come back identical to what would be calculated from the amazing fitdistrplus package.

Happy Coding!