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