Commit bf4a7fdf authored by Le Roux Erwan's avatar Le Roux Erwan
Browse files

[contrasting] add dctionary to save goodness of fit results

parent 68560237
No related merge requests found
Showing with 32 additions and 25 deletions
+32 -25
...@@ -51,20 +51,20 @@ ALTITUDINAL_GEV_MODELS = [ ...@@ -51,20 +51,20 @@ ALTITUDINAL_GEV_MODELS = [
NonStationaryAltitudinalLocationQuadraticScaleLinearCrossTermForLocation, NonStationaryAltitudinalLocationQuadraticScaleLinearCrossTermForLocation,
# Quadratic in the scale # Quadratic in the scale
NonStationaryAltitudinalScaleQuadratic, # NonStationaryAltitudinalScaleQuadratic,
NonStationaryAltitudinalLocationLinearScaleQuadratic, # NonStationaryAltitudinalLocationLinearScaleQuadratic,
NonStationaryAltitudinalLocationQuadraticScaleQuadratic, # NonStationaryAltitudinalLocationQuadraticScaleQuadratic,
NonStationaryAltitudinalScaleQuadraticCrossTermForLocation, # NonStationaryAltitudinalScaleQuadraticCrossTermForLocation,
NonStationaryAltitudinalLocationLinearScaleQuadraticCrossTermForLocation, # NonStationaryAltitudinalLocationLinearScaleQuadraticCrossTermForLocation,
NonStationaryAltitudinalLocationQuadraticScaleQuadraticCrossTermForLocation, # NonStationaryAltitudinalLocationQuadraticScaleQuadraticCrossTermForLocation,
#
# Cross term for the scale # # Cross term for the scale
NonStationaryAltitudinalScaleLinearCrossTermForScale, # NonStationaryAltitudinalScaleLinearCrossTermForScale,
NonStationaryAltitudinalLocationLinearScaleLinearCrossTermForScale, # NonStationaryAltitudinalLocationLinearScaleLinearCrossTermForScale,
NonStationaryAltitudinalLocationQuadraticScaleLinearCrossTermForScale, # NonStationaryAltitudinalLocationQuadraticScaleLinearCrossTermForScale,
NonStationaryAltitudinalScaleQuadraticCrossTermForScale, # NonStationaryAltitudinalScaleQuadraticCrossTermForScale,
NonStationaryAltitudinalLocationLinearScaleQuadraticCrossTermForScale, # NonStationaryAltitudinalLocationLinearScaleQuadraticCrossTermForScale,
NonStationaryAltitudinalLocationQuadraticScaleQuadraticCrossTermForScale, # NonStationaryAltitudinalLocationQuadraticScaleQuadraticCrossTermForScale,
][:] ][:]
......
...@@ -34,14 +34,15 @@ def plot_moments(studies, massif_names=None): ...@@ -34,14 +34,15 @@ def plot_moments(studies, massif_names=None):
def plot_altitudinal_fit(studies, massif_names=None): def plot_altitudinal_fit(studies, massif_names=None):
model_classes = ALTITUDINAL_GEV_MODELS model_classes = ALTITUDINAL_GEV_MODELS
# model_classes = ALTITUDINAL_GEV_MODELS_QUADRATIC
visualizer = AltitudesStudiesVisualizerForNonStationaryModels(studies=studies, visualizer = AltitudesStudiesVisualizerForNonStationaryModels(studies=studies,
model_classes=model_classes, model_classes=model_classes,
massif_names=massif_names, massif_names=massif_names,
show=False) show=False)
# Plot the results for the model that minimizes the individual aic # Plot the results for the model that minimizes the individual aic
# plot_individual_aic(visualizer) plot_individual_aic(visualizer)
# Plot the results for the model that minimizes the total aic # Plot the results for the model that minimizes the total aic
plot_total_aic(model_classes, visualizer) # plot_total_aic(model_classes, visualizer)
def main(): def main():
......
...@@ -34,6 +34,8 @@ class OneFoldFit(object): ...@@ -34,6 +34,8 @@ class OneFoldFit(object):
# Best estimator definition # Best estimator definition
self.best_estimator_class_for_total_aic = None self.best_estimator_class_for_total_aic = None
# Cached object
self._folder_to_goodness = {}
@classproperty @classproperty
def folder_for_plots(cls): def folder_for_plots(cls):
...@@ -160,13 +162,17 @@ class OneFoldFit(object): ...@@ -160,13 +162,17 @@ class OneFoldFit(object):
@property @property
def goodness_of_fit_anderson_test(self): def goodness_of_fit_anderson_test(self):
quantiles = self.compute_empirical_quantiles(estimator=self.best_estimator) if self.folder_for_plots in self._folder_to_goodness:
goodness_of_fit_anderson_test = goodness_of_fit_anderson(quantiles, self.SIGNIFICANCE_LEVEL) return self._folder_to_goodness[self.folder_for_plots]
if not goodness_of_fit_anderson_test: else:
print('{} with {} does not pass the anderson test for model {}'.format(self.massif_name, quantiles = self.compute_empirical_quantiles(estimator=self.best_estimator)
self.folder_for_plots, goodness_of_fit_anderson_test = goodness_of_fit_anderson(quantiles, self.SIGNIFICANCE_LEVEL)
type(self.best_margin_model))) if not goodness_of_fit_anderson_test:
return goodness_of_fit_anderson_test print('{} with {} does not pass the anderson test for model {}'.format(self.massif_name,
self.folder_for_plots,
type(self.best_margin_model)))
self._folder_to_goodness[self.folder_for_plots] = goodness_of_fit_anderson_test
return goodness_of_fit_anderson_test
def compute_empirical_quantiles(self, estimator): def compute_empirical_quantiles(self, estimator):
empirical_quantiles = [] empirical_quantiles = []
......
...@@ -11,10 +11,10 @@ from projects.exceeding_snow_loads.utils import dpi_paper1_figure ...@@ -11,10 +11,10 @@ from projects.exceeding_snow_loads.utils import dpi_paper1_figure
def plots(visualizer): def plots(visualizer):
visualizer.plot_moments()
visualizer.plot_best_coef_maps()
visualizer.plot_shape_map() visualizer.plot_shape_map()
visualizer.plot_year_for_the_peak() visualizer.plot_year_for_the_peak()
visualizer.plot_moments()
visualizer.plot_best_coef_maps()
def plot_individual_aic(visualizer): def plot_individual_aic(visualizer):
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment