An Overview of the New AIC Functions in the TidyDensity Package
code
rtip
tidydensity
Author
Steven P. Sanderson II, MPH
Published
May 31, 2024
Introduction
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.
Usage
util_negative_binomial_aic()
Arguments
.x: A numeric vector of data values.
Value
A numeric value representing the AIC for the given data and distribution.
Details
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.
Examples
library(TidyDensity)set.seed(123)# Generate some datax <-rnorm(100)# Calculate the AIC for a negative binomial distributioncat(" 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()
Conclusion
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.