#!/usr/bin/python # -*- coding: utf8 -*- import numpy as np import pandas as pd # Erro quadrático médio def rmse(targets, forecasts): return np.sqrt(np.nanmean((forecasts - targets) ** 2)) def rmse_interval(targets, forecasts): fmean = [np.mean(i) for i in forecasts] return np.sqrt(np.nanmean((fmean - targets) ** 2)) # Erro Percentual médio def mape(targets, forecasts): return np.mean(abs(forecasts - targets) / forecasts) * 100 def mape_interval(targets, forecasts): fmean = [np.mean(i) for i in forecasts] return np.mean(abs(fmean - targets) / fmean) * 100 # Theil's U Statistic def U(targets, forecasts): l = len(targets) naive = [] y = [] for k in np.arange(0,l-1): y.append(((forecasts[k] - targets[k+1])/targets[k]) ** 2) naive.append(((targets[k + 1] - targets[k]) / targets[k]) ** 2) return np.sqrt(sum(y)/sum(naive)) # Sharpness - Mean size of the intervals def sharpness(forecasts): tmp = [i[1] - i[0] for i in forecasts] return np.mean(tmp) # Resolution - Standard deviation of the intervals def resolution(forecasts): shp = sharpness(forecasts) tmp = [abs((i[1] - i[0]) - shp) for i in forecasts] return np.mean(tmp) # Percent of def coverage(targets, forecasts): preds = [] for i in np.arange(0, len(forecasts)): if targets[i] >= forecasts[i][0] and targets[i] <= forecasts[i][1]: preds.append(1) else: preds.append(0) return np.mean(preds)