diff --git a/experiment/meteo_france_SCM_study/visualization/study_visualization/non_stationary_trends.py b/experiment/meteo_france_SCM_study/visualization/study_visualization/non_stationary_trends.py index 4300cf2f93aca7e97027d62f79263c69278a5d53..889fd80a79dda28c06ae5d76e16612969aff8fe6 100644 --- a/experiment/meteo_france_SCM_study/visualization/study_visualization/non_stationary_trends.py +++ b/experiment/meteo_france_SCM_study/visualization/study_visualization/non_stationary_trends.py @@ -81,16 +81,12 @@ class AbstractNonStationaryTrendTest(object): mu1_trends = [self.get_mu1(starting_point=year) for year in years] ax2 = ax.twinx() color_mu1 = 'c' - ax.plot(years, mu1_trends, color_mu1 + 'o-') + ax2.plot(years, mu1_trends, color_mu1 + 'o-') ax2.set_ylabel('mu1 parameter', color=color_mu1) ax.set_xlabel('starting year for the linear trend of mu1') align_yaxis_on_zero(ax, ax2) title = self.display_name - first = mu1_trends[0] - last = mu1_trends[-1] - title += '\n mu1: first {}\nlast {}'.format(first, last) - title += '; equals? {}'.format(first == last) ax.set_title(title) ax.legend() diff --git a/extreme_estimator/estimator/full_estimator/abstract_full_estimator.py b/extreme_estimator/estimator/full_estimator/abstract_full_estimator.py index c3933c2c471f4959fa6dcf2dda717c3a2ed84bcf..1c472b1a08c1466bb545b33a78d3adb2161e3a9f 100644 --- a/extreme_estimator/estimator/full_estimator/abstract_full_estimator.py +++ b/extreme_estimator/estimator/full_estimator/abstract_full_estimator.py @@ -56,12 +56,21 @@ class FullEstimatorInASingleStepWithSmoothMargin(AbstractFullEstimator): def margin_function_start_fit(self): return self.linear_margin_model.margin_function_start_fit + @property + def df_coordinates_spat(self): + return self.dataset.coordinates.df_spatial_coordinates(self.train_split) + + @property + def df_coordinates_temp(self): + df_coordinates_temp = self.dataset.coordinates.df_temporal_coordinates(self.train_split) + return self.linear_margin_model.add_starting_temporal_point(df_coordinates_temp) + def _fit(self): # Estimate both the margin and the max-stable structure self._result_from_fit = self.max_stable_model.fitmaxstab( data_gev=self.dataset.maxima_gev_for_spatial_extremes_package(self.train_split), - df_coordinates_spat=self.dataset.coordinates.df_spatial_coordinates(self.train_split), - df_coordinates_temp=self.dataset.coordinates.df_temporal_coordinates(self.train_split), + df_coordinates_spat=self.df_coordinates_spat, + df_coordinates_temp=self.df_coordinates_temp, fit_marge=True, fit_marge_form_dict=self.linear_margin_model.margin_function_start_fit.form_dict, margin_start_dict=self.linear_margin_model.margin_function_start_fit.coef_dict diff --git a/extreme_estimator/estimator/margin_estimator/abstract_margin_estimator.py b/extreme_estimator/estimator/margin_estimator/abstract_margin_estimator.py index 38f8e5c36f6f3a2ca39fc09a753aefaedd528aa3..3456cd456f175ad2c3df7b71a31ead3f793b1b4f 100644 --- a/extreme_estimator/estimator/margin_estimator/abstract_margin_estimator.py +++ b/extreme_estimator/estimator/margin_estimator/abstract_margin_estimator.py @@ -32,6 +32,7 @@ class LinearMarginEstimator(AbstractMarginEstimator): maxima_gev_specialized = self.dataset.maxima_gev_for_spatial_extremes_package(self.train_split) df_coordinates_spat = self.dataset.coordinates.df_spatial_coordinates(self.train_split) df_coordinates_temp = self.dataset.coordinates.df_temporal_coordinates(self.train_split) + df_coordinates_temp = self.margin_model.add_starting_temporal_point(df_coordinates_temp) self._result_from_fit = self.margin_model.fitmargin_from_maxima_gev(data=maxima_gev_specialized, df_coordinates_spat=df_coordinates_spat, df_coordinates_temp=df_coordinates_temp) diff --git a/extreme_estimator/extreme_models/margin_model/parametric_margin_model.py b/extreme_estimator/extreme_models/margin_model/parametric_margin_model.py index 81abad9cbbcd7b04ab7a9dfe84bf5ace7554a669..f589f6ee697b501da11c713fb982d2df56bde4d0 100644 --- a/extreme_estimator/extreme_models/margin_model/parametric_margin_model.py +++ b/extreme_estimator/extreme_models/margin_model/parametric_margin_model.py @@ -38,9 +38,6 @@ class ParametricMarginModel(AbstractMarginModel, ABC): df_coordinates_temp: pd.DataFrame) -> ResultFromFit: assert data.shape[1] == len(df_coordinates_spat) - # Modify df_coordinates_temp - df_coordinates_temp = self.add_starting_temporal_point(df_coordinates_temp) - # Margin formula for fitspatgev fit_params = get_margin_formula(self.margin_function_start_fit.form_dict) diff --git a/test/test_extreme_estimator/test_extreme_models/test_max_stable_temporal.py b/test/test_extreme_estimator/test_extreme_models/test_max_stable_temporal.py index 27ceac3ecec5aeff4b3f5faad213618e5d2a3d45..fa221e4b3d2d47d22a070ccbf50f53918ccdaecf 100644 --- a/test/test_extreme_estimator/test_extreme_models/test_max_stable_temporal.py +++ b/test/test_extreme_estimator/test_extreme_models/test_max_stable_temporal.py @@ -99,14 +99,6 @@ class TestMaxStableTemporal(unittest.TestCase): # Create two different estimators estimator1 = self.fit_non_stationary_estimator(starting_point=3) estimator2 = self.fit_non_stationary_estimator(starting_point=20) - - for starting_point in range(3, 20): - estimator = self.fit_non_stationary_estimator(starting_point=starting_point) - print(estimator.margin_function_fitted.starting_point) - print(estimator.margin_function_fitted.coef_dict) - print(estimator.margin_function_fitted.mu0) - print(estimator.margin_function_fitted.mu1_temporal_trend) - mu1_estimator1 = estimator1.margin_function_fitted.mu1_temporal_trend mu1_estimator2 = estimator2.margin_function_fitted.mu1_temporal_trend self.assertNotEqual(mu1_estimator1, mu1_estimator2)