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

[contrasting] plot derivative only for significative models

parent d948b4ae
No related merge requests found
Showing with 28 additions and 16 deletions
+28 -16
......@@ -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
......@@ -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():
......
......@@ -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()
......
......@@ -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())
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