An Overview of the New AIC Functions in the TidyDensity Package

[This article was first published on Steve's Data Tips and Tricks, 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.


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!

To leave a comment for the author, please follow the link and comment on their blog: Steve's Data Tips and Tricks. 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.

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)