Skip to contents

This function estimates the parameters of a triangular distribution (min, max, and mode) from the provided data and calculates the AIC value based on the fitted distribution.

Usage

util_triangular_aic(.x)

Arguments

.x

A numeric vector containing the data to be fitted to a triangular distribution.

Value

The AIC value calculated based on the fitted triangular distribution to the provided data.

Details

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

The function operates in several steps:

  1. Parameter Estimation: The function extracts the minimum, maximum, and mode values from the data via the TidyDensity::util_triangular_param_estimate function. It returns these initial parameters as the starting point for optimization.

  2. Negative Log-Likelihood Calculation: A custom function calculates the negative log-likelihood using the EnvStats::dtri function to obtain density values for each data point. The densities are logged manually to simulate the behavior of a log parameter.

  3. Parameter Validation: During optimization, the function checks that the constraints min <= mode <= max are met, and returns an infinite loss if not.

  4. Optimization: The optimization process utilizes the "SANN" (Simulated Annealing) method to minimize the negative log-likelihood and find optimal parameter values.

  5. AIC Calculation: The Akaike Information Criterion (AIC) is calculated using the optimized negative log-likelihood and the total number of parameters (3).

Author

Steven P. Sanderson II, MPH

Examples

# Example: Calculate AIC for a sample dataset
set.seed(123)
data <- tidy_triangular(.min = 0, .max = 1, .mode = 1/2)$y
util_triangular_aic(data)
#> [1] -14.39203