Source code for cv19gm.utils.cv19errors

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import numpy as np
"""
# -------------------------------- #
#     Error measuring functions    #
# -------------------------------- #
"""
# -------------------------------- #
#          Global Errors           #
# -------------------------------- #

[docs]def ITWE(sim, data, t_data=None, rho=1): # Inverse time weighted error if type(t_data) == type(None): t_data = list(range(len(data))) err = [((data[i] - sim[t_data[i]]) ** 2) / (1 + t_data[i]) ** rho for i in range(len(data))] return np.sqrt(np.mean(np.array(err) ** 2))
[docs]def ITWE_log(sim, data, t_data=None, rho=1): # Log Inverse time weighted error if type(t_data) == type(None): t_data = list(range(len(data))) err = [((np.log(data[i]+1) - np.log(sim[t_data[i]]+1)) ** 2) / (1 + t_data[i]) ** rho for i in range(len(data))] return np.sqrt(np.mean(np.array(err) ** 2))
[docs]def RMSE(sim, data, t_data=None, rho=None): # Root Mean Squared Error if type(t_data) == type(None): t_data = list(range(len(data))) err = [((data[i] - sim[t_data[i]]) ** 2) / (1) for i in range(len(data))] return np.sqrt(np.mean(np.array(err) ** 2))
[docs]def MSE(sim, data, t_data=None, ): # Mean Square Error if type(t_data) == type(None): t_data = list(range(len(data))) err = [((data[i] - sim[t_data[i]]) ** 2) / (1) for i in range(len(data))] return np.mean(np.array(err) ** 2)
[docs]def RRMSE(sim, data, t_data=None): # Relative Root Mean Square Error if type(t_data) == type(None): t_data = list(range(len(data))) err = [((data[i] - sim[t_data[i]]) ** 2) / (1 + data[i]) for i in range(len(data))] return np.sqrt(np.mean(np.array(err) ** 2))
# -------------------------------- # # Residual Metrics # # -------------------------------- #
[docs]def LAE(sim, data, t_data=None): # Local Absolute Error. Output is a vector if type(t_data) == type(None): t_data = list(range(len(data))) return [np.abs(data[i] - sim[t_data[i]]) for i in range(len(data))]
[docs]def LRAE(sim, data, t_data=None): # Local Relative Error. Output is a vector if type(t_data) == type(None): t_data = list(range(len(data))) return [(np.abs(data[i] - sim[t_data[i]])) / (1 + data[i]) for i in range(len(data))]
[docs]def LCE(sim, data, t_data=None): """Local Cummulative Error To do Args: sim (list): Simulation data data (list): Data to compare t_data (list, optional): _description_. Defaults to None. Returns: list: accumulative error """ # Local Integrative Error. Output is a vector if type(t_data) == type(None): t_data = list(range(len(data))) return np.cumsum([data[i] - sim[t_data[i]] for i in range(len(data))])
[docs]def LRCE(sim, data, t_data=None): """Local Relative Cummulative Error To do Args: sim (list): Simulation data data (list): Data to compare t_data (list, optional): _description_. Defaults to None. Returns: list: accumulative error """ # Local Integrative Error. Output is a vector if type(t_data) == type(None): t_data = list(range(len(data))) return np.cumsum([(data[i] - sim[t_data[i]]) / (1 + data[i]) for i in range(len(data))])
# -------------------------------- # # Residual Metrics # # -------------------------------- #
[docs]def cv19errorbuild(input): """ Function builder. Used to create a function from a configuration file # crear un iterador que recorra el input y cree la función a partir de un comando exec: # Acepta diccionarios o strings con forma de diccionario """ if callable(input): return input elif type(input)==str: print('input dict') return locals()[input]