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

[paper 1] final modifications for plots for the paper

parent 8ed07dbb
No related merge requests found
Showing with 41 additions and 6 deletions
+41 -6
from typing import Dict
import pandas as pd
from experiment.eurocode_data.utils import EUROCODE_ALTITUDES
from papers.exceeding_snow_loads.paper_utils import ModelSubsetForUncertainty
from papers.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import StudyVisualizerForNonStationaryTrends
def uncertainty_interval_size(altitude_to_visualizer: Dict[int, StudyVisualizerForNonStationaryTrends]):
""" Plot one graph for each non-stationary context
:return:
"""
altitude_to_visualizer = {a: v for a, v in altitude_to_visualizer.items() if a in EUROCODE_ALTITUDES}
visualizer = list(altitude_to_visualizer.values())[0]
for a, v in altitude_to_visualizer.items():
print(a)
interval_size(v)
def interval_size(v: StudyVisualizerForNonStationaryTrends):
d = v.all_massif_name_to_eurocode_uncertainty_for_minimized_aic_model_class(
model_subset_for_uncertainty=ModelSubsetForUncertainty.stationary_gev)
# what we want is the confidence interval for the shape parameter
d = {m: [e.confidence_interval[0], e.confidence_interval[1], e.confidence_interval[1] - e.confidence_interval[0]]
for m, e in d.items()}
df = pd.DataFrame(d).transpose()
print((df.head()))
print(df.describe())
...@@ -32,3 +32,4 @@ class ModelSubsetForUncertainty(Enum): ...@@ -32,3 +32,4 @@ class ModelSubsetForUncertainty(Enum):
stationary_gumbel_and_gev = 1 stationary_gumbel_and_gev = 1
non_stationary_gumbel = 2 non_stationary_gumbel = 2
non_stationary_gumbel_and_gev = 3 non_stationary_gumbel_and_gev = 3
stationary_gev = 4
...@@ -2,7 +2,10 @@ from multiprocessing.pool import Pool ...@@ -2,7 +2,10 @@ from multiprocessing.pool import Pool
import matplotlib as mpl import matplotlib as mpl
from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoadTotal, CrocusSnowLoad3Days from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoadTotal, CrocusSnowLoad3Days, \
CrocusSnowLoad5Days, CrocusSnowLoad7Days
from papers.exceeding_snow_loads.check_mle_convergence_for_trends.uncertainty_interval_size import \
uncertainty_interval_size
from papers.exceeding_snow_loads.paper_main_utils import load_altitude_to_visualizer from papers.exceeding_snow_loads.paper_main_utils import load_altitude_to_visualizer
from papers.exceeding_snow_loads.paper_utils import paper_study_classes, paper_altitudes from papers.exceeding_snow_loads.paper_utils import paper_study_classes, paper_altitudes
from papers.exceeding_snow_loads.result_trends_and_return_levels.plot_diagnosis_risk import plot_diagnosis_risk from papers.exceeding_snow_loads.result_trends_and_return_levels.plot_diagnosis_risk import plot_diagnosis_risk
...@@ -71,7 +74,7 @@ def intermediate_result(altitudes, massif_names=None, ...@@ -71,7 +74,7 @@ def intermediate_result(altitudes, massif_names=None,
# plot_uncertainty_massifs(altitude_to_visualizer) # plot_uncertainty_massifs(altitude_to_visualizer)
plot_uncertainty_histogram(altitude_to_visualizer) plot_uncertainty_histogram(altitude_to_visualizer)
# plot_selection_curves(altitude_to_visualizer) # plot_selection_curves(altitude_to_visualizer)
# uncertainty_interval_size(altitude_to_visualizer)
def major_result(): def major_result():
...@@ -92,7 +95,7 @@ def major_result(): ...@@ -92,7 +95,7 @@ def major_result():
if __name__ == '__main__': if __name__ == '__main__':
major_result() major_result()
# intermediate_result(altitudes=[1800], massif_names=None, # intermediate_result(altitudes=[300], massif_names=None,
# uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes, # uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes,
# ConfidenceIntervalMethodFromExtremes.ci_mle][1:], # ConfidenceIntervalMethodFromExtremes.ci_mle][1:],
# multiprocessing=True) # multiprocessing=True)
......
...@@ -64,7 +64,6 @@ def plot_histogram(altitude_to_visualizer, model_subset_for_uncertainty): ...@@ -64,7 +64,6 @@ def plot_histogram(altitude_to_visualizer, model_subset_for_uncertainty):
ax_twiny.set_xlim(ax.get_xlim()) ax_twiny.set_xlim(ax.get_xlim())
ax_twiny.set_xticks(altitudes) ax_twiny.set_xticks(altitudes)
nb_massif_names = [len(v.massif_names_fitted) for v in altitude_to_visualizer.values()] nb_massif_names = [len(v.massif_names_fitted) for v in altitude_to_visualizer.values()]
print(nb_massif_names)
ax_twiny.set_xticklabels(nb_massif_names) ax_twiny.set_xticklabels(nb_massif_names)
ax_twiny.set_xlabel('Total number of massifs at each altitude (for the percentage)', fontsize=fontsize_label) ax_twiny.set_xlabel('Total number of massifs at each altitude (for the percentage)', fontsize=fontsize_label)
......
...@@ -30,7 +30,8 @@ from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two ...@@ -30,7 +30,8 @@ from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two
GumbelLocationAndScaleTrendTest GumbelLocationAndScaleTrendTest
from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \ from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \
TemporalMarginFitMethod TemporalMarginFitMethod
from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import GumbelTemporalModel from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import GumbelTemporalModel, \
StationaryTemporalModel
from extreme_fit.model.result_from_model_fit.result_from_extremes.confidence_interval_method import \ from extreme_fit.model.result_from_model_fit.result_from_extremes.confidence_interval_method import \
ConfidenceIntervalMethodFromExtremes ConfidenceIntervalMethodFromExtremes
from extreme_fit.model.result_from_model_fit.result_from_extremes.eurocode_return_level_uncertainties import \ from extreme_fit.model.result_from_model_fit.result_from_extremes.eurocode_return_level_uncertainties import \
...@@ -322,6 +323,8 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer): ...@@ -322,6 +323,8 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer):
def massif_name_and_model_subset_to_model_class(self, massif_name, model_subset_for_uncertainty): def massif_name_and_model_subset_to_model_class(self, massif_name, model_subset_for_uncertainty):
if model_subset_for_uncertainty is ModelSubsetForUncertainty.stationary_gumbel: if model_subset_for_uncertainty is ModelSubsetForUncertainty.stationary_gumbel:
return GumbelTemporalModel return GumbelTemporalModel
if model_subset_for_uncertainty is ModelSubsetForUncertainty.stationary_gev:
return StationaryTemporalModel
elif model_subset_for_uncertainty is ModelSubsetForUncertainty.stationary_gumbel_and_gev: elif model_subset_for_uncertainty is ModelSubsetForUncertainty.stationary_gumbel_and_gev:
return self.massif_name_to_stationary_trend_test_that_minimized_aic[massif_name].unconstrained_model_class return self.massif_name_to_stationary_trend_test_that_minimized_aic[massif_name].unconstrained_model_class
elif model_subset_for_uncertainty is ModelSubsetForUncertainty.non_stationary_gumbel: elif model_subset_for_uncertainty is ModelSubsetForUncertainty.non_stationary_gumbel:
...@@ -395,7 +398,7 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer): ...@@ -395,7 +398,7 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer):
triplet = [(massif_name_to_eurocode_region[massif_name], triplet = [(massif_name_to_eurocode_region[massif_name],
self.massif_name_to_eurocode_values[massif_name], self.massif_name_to_eurocode_values[massif_name],
self.triplet_to_eurocode_uncertainty[(ci_method, model_subset_for_uncertainty, massif_name)]) self.triplet_to_eurocode_uncertainty[(ci_method, model_subset_for_uncertainty, massif_name)])
for massif_name in self.uncertainty_massif_names] for massif_name in self.massif_names_fitted]
# First array for histogram # First array for histogram
a = 100 * np.array([(uncertainty.confidence_interval[0] > eurocode, a = 100 * np.array([(uncertainty.confidence_interval[0] > eurocode,
uncertainty.mean_estimate > eurocode, uncertainty.mean_estimate > eurocode,
......
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