diff --git a/extreme_trend/abstract_gev_trend_test.py b/extreme_trend/abstract_gev_trend_test.py index b0c829acb74aa49f41a1ab543089b5512fd51cd8..bf235c3129b5d44fb35e046892d2503339cffbe4 100644 --- a/extreme_trend/abstract_gev_trend_test.py +++ b/extreme_trend/abstract_gev_trend_test.py @@ -490,3 +490,10 @@ class AbstractGevTrendTest(object): gev_params.location = param_name_to_value[GevParams.LOC] gev_params.scale = param_name_to_value[GevParams.SCALE] return gev_params.mean + + def change_in_mean_for_the_last_x_years(self, nb_years): + last_mean = self.unconstrained_estimator_gev_params_last_year.mean + old_mean = self.get_unconstrained_gev_params(year=self.years[-nb_years]).mean + return last_mean - old_mean + + diff --git a/projects/contrasting_trends_in_snow_loads/article2_snowfall_versus_time_and_altitude/main_snowfall_article.py b/projects/contrasting_trends_in_snow_loads/article2_snowfall_versus_time_and_altitude/main_snowfall_article.py index d162a4e381dfde167a80c825a5ad560d08128590..484f59b66cbbca9e3918eccd18de5ac9b8a0d640 100644 --- a/projects/contrasting_trends_in_snow_loads/article2_snowfall_versus_time_and_altitude/main_snowfall_article.py +++ b/projects/contrasting_trends_in_snow_loads/article2_snowfall_versus_time_and_altitude/main_snowfall_article.py @@ -5,7 +5,7 @@ import matplotlib as mpl from extreme_data.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall1Day from projects.contrasting_trends_in_snow_loads.article2_snowfall_versus_time_and_altitude.snowfall_plot import \ - plot_snowfall_mean, plot_snowfall_time_derivative_mean + plot_snowfall_mean, plot_snowfall_change_mean from projects.contrasting_trends_in_snow_loads.article2_snowfall_versus_time_and_altitude.study_visualizer_for_mean_values import \ StudyVisualizerForMeanValues from projects.contrasting_trends_in_snow_loads.article2_snowfall_versus_time_and_altitude.validation_plot import validation_plot @@ -74,10 +74,10 @@ def intermediate_result(altitudes, massif_names=None, # Plots validation_plot(altitude_to_visualizer, order_derivative=0) - # validation_plot(altitude_to_visualizer, order_derivative=1) + validation_plot(altitude_to_visualizer, order_derivative=1) plot_snowfall_mean(altitude_to_visualizer) plot_selection_curves(altitude_to_visualizer, paper1=False) - # plot_snowfall_time_derivative_mean(altitude_to_visualizer) + plot_snowfall_change_mean(altitude_to_visualizer) def major_result(): diff --git a/projects/contrasting_trends_in_snow_loads/article2_snowfall_versus_time_and_altitude/snowfall_plot.py b/projects/contrasting_trends_in_snow_loads/article2_snowfall_versus_time_and_altitude/snowfall_plot.py index cc68f21a41aa825804bf4de35d22583222578379..8b9b78d931e31a4862bd2eaabf3b42b52598e232 100644 --- a/projects/contrasting_trends_in_snow_loads/article2_snowfall_versus_time_and_altitude/snowfall_plot.py +++ b/projects/contrasting_trends_in_snow_loads/article2_snowfall_versus_time_and_altitude/snowfall_plot.py @@ -20,7 +20,7 @@ def fit_linear_regression(x, y): return a, b, r2_score -def plot_snowfall_time_derivative_mean(altitude_to_visualizer: Dict[int, StudyVisualizerForMeanValues]): +def plot_snowfall_change_mean(altitude_to_visualizer: Dict[int, StudyVisualizerForMeanValues]): visualizer = list(altitude_to_visualizer.values())[0] study = visualizer.study # Plot the curve for the evolution of the mean @@ -72,7 +72,6 @@ def plot_mean(altitude_to_visualizer: Dict[int, StudyVisualizerForMeanValues], d visualizers = list(altitude_to_visualizer.values()) visualizer = visualizers[0] study = visualizer.study - year = study.year_max for massif_id, massif_name in enumerate(visualizer.study.all_massif_names()): altitudes_massif = [a for a, v in altitude_to_visualizer.items() @@ -81,13 +80,19 @@ def plot_mean(altitude_to_visualizer: Dict[int, StudyVisualizerForMeanValues], d trend_tests = [altitude_to_visualizer[a].massif_name_to_trend_test_that_minimized_aic[massif_name] for a in altitudes_massif] if derivative: - moment = 'time derivative of the mean' - values = [t.first_derivative_mean_value(year=year) for t in trend_tests] + moment = 'change in 10 years for significant models' + values = [t.change_in_mean_for_the_last_x_years(nb_years=10) for t in trend_tests + if t.is_significant] + altitudes_values = [a for a in altitudes_massif + if altitude_to_visualizer[a].massif_name_to_trend_test_that_minimized_aic[massif_name].is_significant] else: moment = 'mean' - values = [t.mean_value(year=year) for t in trend_tests] - massif_name_to_linear_regression_result[massif_name] = fit_linear_regression(altitudes_massif, values) - plot_values_against_altitudes(ax, altitudes_massif, massif_id, massif_name, moment, study, values, visualizer) + values = [t.unconstrained_estimator_gev_params_last_year.mean for t in trend_tests] + altitudes_values = altitudes_massif + # Plot + if len(altitudes_values) >= 2: + massif_name_to_linear_regression_result[massif_name] = fit_linear_regression(altitudes_values, values) + plot_values_against_altitudes(ax, altitudes_values, massif_id, massif_name, moment, study, values, visualizer) ax.legend(prop={'size': 7}, ncol=3) visualizer.show_or_save_to_file(dpi=500, add_classic_title=False) plt.close() diff --git a/projects/contrasting_trends_in_snow_loads/article2_snowfall_versus_time_and_altitude/validation_plot.py b/projects/contrasting_trends_in_snow_loads/article2_snowfall_versus_time_and_altitude/validation_plot.py index 354de6fe95cfe7ac799b3b18065aaa87a97d171f..971a7c926842d57fb54e5581a8ce8427c97e212a 100644 --- a/projects/contrasting_trends_in_snow_loads/article2_snowfall_versus_time_and_altitude/validation_plot.py +++ b/projects/contrasting_trends_in_snow_loads/article2_snowfall_versus_time_and_altitude/validation_plot.py @@ -69,12 +69,12 @@ def plot_relative_difference_map_order_one(visualizer: StudyVisualizerForMeanVal study = visualizer.study label = ' time derivative of mean annual maxima of {} ({})'.format(SCM_STUDY_CLASS_TO_ABBREVIATION[type(study)], study.variable_unit) - visualizer.plot_abstract_fast(massif_name_to_value=visualizer.massif_name_to_change_ratio_in_empirical_mean, - label='Empirical' + label, negative_and_positive_values=False, graduation=0.5) + # visualizer.plot_abstract_fast(massif_name_to_value=visualizer.massif_name_to_change_ratio_in_empirical_mean, + # label='Empirical' + label, negative_and_positive_values=False, graduation=0.5) visualizer.plot_abstract_fast(massif_name_to_value=visualizer.massif_name_to_change_ratio_in_model_mean, label='Model' + label, negative_and_positive_values=False, graduation=0.5) - visualizer.plot_abstract_fast( - massif_name_to_value=visualizer.massif_name_to_relative_difference_for_change_ratio_in_mean, - label='Relative difference of the model mean w.r.t. the empirical mean \n' - 'for the ' + label, graduation=5) + # visualizer.plot_abstract_fast( + # massif_name_to_value=visualizer.massif_name_to_relative_difference_for_change_ratio_in_mean, + # label='Relative difference of the model mean w.r.t. the empirical mean \n' + # 'for the ' + label, graduation=5) return list(visualizer.massif_name_to_relative_difference_for_change_ratio_in_mean.values())