From 9eb670da0df398708eb57a7f110fc7069bed648f Mon Sep 17 00:00:00 2001
From: Le Roux Erwan <erwan.le-roux@irstea.fr>
Date: Fri, 24 Jan 2020 19:14:58 +0100
Subject: [PATCH] [paper 2] add main plot for big shapes

---
 .../qqplot/main_qqplot_for_big_shapes.py      | 71 +++++++++++++++++++
 1 file changed, 71 insertions(+)
 create mode 100644 experiment/paper_past_snow_loads/check_mle_convergence_for_trends/qqplot/main_qqplot_for_big_shapes.py

diff --git a/experiment/paper_past_snow_loads/check_mle_convergence_for_trends/qqplot/main_qqplot_for_big_shapes.py b/experiment/paper_past_snow_loads/check_mle_convergence_for_trends/qqplot/main_qqplot_for_big_shapes.py
new file mode 100644
index 00000000..565c2378
--- /dev/null
+++ b/experiment/paper_past_snow_loads/check_mle_convergence_for_trends/qqplot/main_qqplot_for_big_shapes.py
@@ -0,0 +1,71 @@
+from typing import Dict
+
+from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoadTotal
+from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \
+    ALL_ALTITUDES_WITHOUT_NAN
+from experiment.paper_past_snow_loads.study_visualizer_for_non_stationary_trends import \
+    StudyVisualizerForNonStationaryTrends
+
+
+def qqplots_for_biggest_shape_parameters_before_selection():
+    altitudes = ALL_ALTITUDES_WITHOUT_NAN
+    altitude_to_visualizer = {altitude: StudyVisualizerForNonStationaryTrends(CrocusSnowLoadTotal(altitude=altitude),
+                                                                              select_only_acceptable_shape_parameter=False,
+                                                                              multiprocessing=True)
+                              for altitude in altitudes}
+    plot_qqplot_for_time_series_with_worst_shape_parameters(altitude_to_visualizer, nb_worst_examples=5)
+
+
+def plot_qqplot_for_time_series_with_worst_shape_parameters(
+        altitude_to_visualizer: Dict[int, StudyVisualizerForNonStationaryTrends],
+        nb_worst_examples=3):
+    # Extract all the values
+    l = []
+    for a, v in altitude_to_visualizer.items():
+        l.extend([(a, v, m, t.unconstrained_estimator_gev_params.shape) for m, t in v.massif_name_to_trend_test_that_minimized_aic.items()])
+    # Sort them and keep the highest examples
+    l = sorted(l, key=lambda t: t[-1])
+    print('Highest examples:')
+    for a, v, m, shape in l[-nb_worst_examples:][::-1]:
+        print(a, m, shape)
+        v.qqplot(m)
+    print('Lowest examples:')
+    for a, v, m, shape in l[:1]:
+        print(a, m, shape)
+        v.qqplot(m)
+
+"""
+10 Worst examples:
+300 Oisans 1.1070477650581747
+300 Mercantour 1.0857026816954518
+300 Haut_Var-Haut_Verdon 0.8446498197950775
+600 Haut_Var-Haut_Verdon 0.7058940819679821
+300 Devoluy 0.6118436479835319
+
+
+600 Mercantour 0.4580626323761203
+300 Vanoise 0.42632782561692767
+600 Ubaye 0.41433496140619247
+300 Vercors 0.41292383543990946
+300 Bauges 0.39291367817905504
+"""
+
+
+"""
+for the worst example for -shape
+
+1500 Vercors 0.5697054636978954
+3000 Haute-Tarentaise 0.37528087242416885
+2700 Chablais 0.3116920569770965
+2700 Aravis 0.2950327331813883
+1500 Oisans 0.2942533152179413
+1200 Chartreuse 0.2925925517975945
+1200 Grandes-Rousses 0.2886979734343222
+1500 Devoluy 0.2769805270894181
+2100 Chablais 0.27558561202487164
+2700 Mont-Blanc 0.2712596135797868
+"""
+
+
+if __name__ == '__main__':
+    qqplots_for_biggest_shape_parameters_before_selection()
-- 
GitLab