Source code for kappa_sdk.gof_utils
from .vector import Vector
from .vector_extensions import interpolate_vectors
from typing import List
[docs]
def compute_goodness_of_fit_from_vectors(reference_vector: Vector, vector: Vector, p_value: float = 0.5) -> float:
"""
Compute the goodness of fit from vector objects
Parameters
----------
reference_vector:
Vector used as reference for calculation
vector:
Vector for comparison
p_value:
p for Lp norm
Returns
-------
float:
Goodness of fit value
"""
interpolated_vectors = interpolate_vectors([vector], reference_vector)
return compute_goodness_of_fit(interpolated_vectors[0].values, interpolated_vectors[1].values, p_value)
[docs]
def compute_goodness_of_fit(reference_values: List[float], values: List[float], p_value: float = 0.5) -> float:
"""
Compute the goodness of fit from vector objects
Parameters
----------
reference_values:
reference values used for gof computation
values:
values used for gof computation
p_value:
p for Lp norm
Returns
-------
float:
Goodness of fit value
"""
gof = 0.0
if len(reference_values) != 0:
gof_sum = 0.0
for reference_point, point in zip(reference_values, values):
gof_sum += (abs(reference_point - point) ** p_value)
gof = (gof_sum / len(values)) ** (1 / p_value)
return gof