def max_num_obs_difference(self) -> PointMetric: return PointMetric( "max_num_obs_difference", "The average number of observation differences", max([ self.no_delay[ix].num_points - delay_pred.num_points for ix, delay_pred in enumerate(self.delay) ]))
def percent_points_missed(self): return PointMetric( "percent_points_missed", "The expected percentage of points missing", 100 * (self.average_num_obs_difference().value / self.average_expected_number_obs().value))
def average_expected_number_obs(self): return PointMetric( "average_expected_number_obs", "The expected number of observations, on average", sum(obs.num_points for obs in self.no_delay) / len(self.no_delay))
def average_delay(self) -> PointMetric: return PointMetric( "average_delay", "The average time the delayed points are delay", sum([pred.timestamp.time_difference() for pred in self.delay]) / len(self.delay))
def max_delay(self) -> PointMetric: return PointMetric( "max_delay", "The max time a point is delayed", max([pred.timestamp.time_difference() for pred in self.delay]))
def delay_rmse(self): return PointMetric("rmse_delay", "The RMSE of delay", self.calc_rmse(self.delay))
def no_delay_rmse(self): return PointMetric("rmse_no_delay", "The RMSE of no delay", self.calc_rmse(self.no_delay))
def rmse_difference(self) -> PointMetric: return PointMetric("rmse_difference", "The difference in RMSE between delayed and non delayed dataset", self.calc_rmse(self.delay) - self.calc_rmse(self.no_delay))