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