ruff for code formatting BIC statistic AND BIC test implemented test_distributions.py for test new created dists with pytest REFACTOR: k_gen pdf changed from 2 params to generalized
35 lines
862 B
Python
35 lines
862 B
Python
import numpy as np
|
|
|
|
|
|
def aic_statistic(dist, data, axis):
|
|
"""
|
|
AIC-based goodness-of-fit statistic.
|
|
|
|
AIC = 2k - 2ln(L)
|
|
|
|
Lower AIC indicates better fit, but since goodness_of_fit()
|
|
treats larger statistic values as worse fit, AIC works directly.
|
|
"""
|
|
|
|
k = len(dist.args)
|
|
log_likelihood = np.sum(dist.logpdf(data), axis=axis)
|
|
aic = 2 * k - 2 * log_likelihood
|
|
|
|
return aic
|
|
|
|
def bic_statistic(dist, data, axis):
|
|
"""
|
|
BIC-based goodness-of-fit statistic.
|
|
|
|
BIC = ln(n)k - 2ln(L)s
|
|
|
|
Lower BIC indicates better fit, but since goodness_of_fit()
|
|
treats larger statistic values as worse fit, BIC works directly.
|
|
"""
|
|
|
|
n = data.size if axis is None else data.shape[axis]
|
|
k = len(dist.args)
|
|
log_likelihood = np.sum(dist.logpdf(data), axis=axis)
|
|
bic = np.log(n) * k - 2 * log_likelihood
|
|
|
|
return bic |