Source code for syndirella.slipper.stats

"""Provides functions for calculating errors."""

from __future__ import annotations


[docs] def ae(val_pred: float, val_true: float) -> float: """Calculate absolute error.""" return abs(val_pred - val_true)
[docs] def pe(val_pred: float, val_true: float) -> float: """Calculate percentage error.""" return (val_pred - val_true) / val_true
[docs] def ape(val_pred: float, val_true: float) -> float: """Calculate absolute percentage error.""" return abs(pe(val_pred, val_true))
[docs] def bae(val: float, lb: float, ub: float) -> float: """Calculate out of bounds absolute error.""" if val < lb: return ae(val, lb) if val > ub: return ae(val, ub) return 0.0
[docs] def bpe(val: float, lb: float, ub: float) -> float: """Calculate out of bounds percentage error.""" if val < lb: return pe(val, lb) if val > ub: return pe(val, ub) return 0.0
[docs] def bape(val: float, lb: float, ub: float) -> float: """Calculate out of bounds absolute percentage error.""" if val < lb: return ape(val, lb) if val > ub: return ape(val, ub) return 0.0