diff --git a/experiment/meteo_france_SCM_study/visualization/studies_visualization/main_studies_visualizer.py b/experiment/meteo_france_SCM_study/visualization/studies_visualization/main_studies_visualizer.py index 86e9ec117b35428263b3d6728e23b7b361c1648d..19d45bc5db026bf820bfb630567722c7b5049be6 100644 --- a/experiment/meteo_france_SCM_study/visualization/studies_visualization/main_studies_visualizer.py +++ b/experiment/meteo_france_SCM_study/visualization/studies_visualization/main_studies_visualizer.py @@ -1,5 +1,6 @@ from experiment.trend_analysis.abstract_score import MannKendall, WeigthedScore, MeanScore, MedianScore -from experiment.trend_analysis.abstract_trend_test import MannKendallTrendTest +from experiment.trend_analysis.univariate_trend_test.abstract_gev_trend_test import GevLocationTrendTest +from experiment.trend_analysis.univariate_trend_test.abstract_trend_test import MannKendallTrendTest from experiment.meteo_france_SCM_study.safran.safran import ExtendedSafranTotalPrecip from experiment.meteo_france_SCM_study.visualization.studies_visualization.studies import Studies from experiment.meteo_france_SCM_study.visualization.studies_visualization.studies_visualizer import StudiesVisualizer, \ @@ -42,9 +43,9 @@ def altitude_trends_significant(): # altitudes that have 20 massifs at least altitudes = ALL_ALTITUDES[3:-6] # altitudes = ALL_ALTITUDES[3:5] - # altitudes = ALL_ALTITUDES[:2] + # altitudes = ALL_ALTITUDES[2:4] for study_class in SCM_STUDIES[:1]: - trend_test_classes = [MannKendallTrendTest][:] + trend_test_classes = [MannKendallTrendTest, GevLocationTrendTest][1:] visualizers = [StudyVisualizer(study, temporal_non_stationarity=True, verbose=False) for study in study_iterator_global(study_classes=[study_class], only_first_one=only_first_one, altitudes=altitudes)] diff --git a/experiment/meteo_france_SCM_study/visualization/studies_visualization/studies_visualizer.py b/experiment/meteo_france_SCM_study/visualization/studies_visualization/studies_visualizer.py index 27a54572948da80fca09afd7fe152cb4ad7c1c1d..8ca0156c8e34f92edc85185e92b4677ea15f5baa 100644 --- a/experiment/meteo_france_SCM_study/visualization/studies_visualization/studies_visualizer.py +++ b/experiment/meteo_france_SCM_study/visualization/studies_visualization/studies_visualizer.py @@ -10,7 +10,7 @@ import matplotlib.pyplot as plt from matplotlib.lines import Line2D from experiment.meteo_france_SCM_study.abstract_extended_study import AbstractExtendedStudy -from experiment.trend_analysis.abstract_trend_test import AbstractTrendTest +from experiment.trend_analysis.univariate_trend_test.abstract_trend_test import AbstractTrendTest from experiment.meteo_france_SCM_study.visualization.studies_visualization.studies import \ Studies from experiment.meteo_france_SCM_study.visualization.study_visualization.study_visualizer import StudyVisualizer diff --git a/experiment/meteo_france_SCM_study/visualization/study_visualization/study_visualizer.py b/experiment/meteo_france_SCM_study/visualization/study_visualization/study_visualizer.py index 402e28f03615a8d98df92bd85e08b15c0dda8aa3..4c2ef1809a4377392b3a71eb94033a0b03cf110a 100644 --- a/experiment/meteo_france_SCM_study/visualization/study_visualization/study_visualizer.py +++ b/experiment/meteo_france_SCM_study/visualization/study_visualization/study_visualizer.py @@ -10,7 +10,7 @@ import seaborn as sns from experiment.trend_analysis.abstract_score import MeanScore, AbstractTrendScore from experiment.meteo_france_SCM_study.abstract_study import AbstractStudy -from experiment.trend_analysis.abstract_trend_test import AbstractTrendTest +from experiment.trend_analysis.univariate_trend_test.abstract_trend_test import AbstractTrendTest from experiment.trend_analysis.non_stationary_trends import \ ConditionalIndedendenceLocationTrendTest, MaxStableLocationTrendTest, IndependenceLocationTrendTest from experiment.meteo_france_SCM_study.visualization.utils import create_adjusted_axes @@ -382,14 +382,14 @@ class StudyVisualizer(object): massif_name_to_trend_test_count = self.massif_name_to_trend_test_count(trend_test_class, starting_year_to_weight) df = pd.concat(list(massif_name_to_trend_test_count.values()), axis=1, sort=False) df.fillna(0.0, inplace=True) - df = df.mean(axis=1) + s = df.mean(axis=1) assert np.allclose(df.sum(), 100) # Add the significant trend into the count of normal trend - if AbstractTrendTest.SIGNIFICATIVE_POSITIVE_TREND in df.columns: - df[AbstractTrendTest.POSITIVE_TREND] += df[AbstractTrendTest.SIGNIFICATIVE_POSITIVE_TREND] - if AbstractTrendTest.SIGNIFICATIVE_NEGATIVE_TREND in df.columns: - df[AbstractTrendTest.NEGATIVE_TREND] += df[AbstractTrendTest.SIGNIFICATIVE_NEGATIVE_TREND] - return df + if AbstractTrendTest.SIGNIFICATIVE_POSITIVE_TREND in s.index: + s[AbstractTrendTest.POSITIVE_TREND] += s[AbstractTrendTest.SIGNIFICATIVE_POSITIVE_TREND] + if AbstractTrendTest.SIGNIFICATIVE_NEGATIVE_TREND in s.index: + s[AbstractTrendTest.NEGATIVE_TREND] += s[AbstractTrendTest.SIGNIFICATIVE_NEGATIVE_TREND] + return s @cached_property def massif_name_to_scores(self): diff --git a/experiment/trend_analysis/non_stationary_trends.py b/experiment/trend_analysis/non_stationary_trends.py index ae8de281e0ceea2a5068569886e6183e1a52373c..66913e07dd9fbc9b514cfd8e4569bab837438748 100644 --- a/experiment/trend_analysis/non_stationary_trends.py +++ b/experiment/trend_analysis/non_stationary_trends.py @@ -16,7 +16,7 @@ from extreme_estimator.extreme_models.margin_model.linear_margin_model import \ LinearStationaryMarginModel, LinearNonStationaryLocationMarginModel from extreme_estimator.extreme_models.margin_model.margin_function.linear_margin_function import LinearMarginFunction from extreme_estimator.extreme_models.margin_model.temporal_linear_margin_model import StationaryStationModel, \ - NonStationaryStationModel + NonStationaryLocationStationModel from extreme_estimator.extreme_models.utils import OptimizationConstants from spatio_temporal_dataset.dataset.abstract_dataset import AbstractDataset from utils import get_display_name_from_object_type @@ -183,7 +183,7 @@ class IndependenceLocationTrendTest(AbstractNonStationaryTrendTest): super().__init__(*args, **kwargs, estimator_class=LinearMarginEstimator, stationary_margin_model_class=StationaryStationModel, - non_stationary_margin_model_class=NonStationaryStationModel) + non_stationary_margin_model_class=NonStationaryLocationStationModel) self.station_name = station_name @property diff --git a/experiment/trend_analysis/univariate_trend_test/__init__.py b/experiment/trend_analysis/univariate_trend_test/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/experiment/trend_analysis/univariate_trend_test/abstract_gev_trend_test.py b/experiment/trend_analysis/univariate_trend_test/abstract_gev_trend_test.py new file mode 100644 index 0000000000000000000000000000000000000000..77248e32fba18652260fee0496faeb43398c271a --- /dev/null +++ b/experiment/trend_analysis/univariate_trend_test/abstract_gev_trend_test.py @@ -0,0 +1,58 @@ +import pandas as pd +from scipy.stats import chi2 +import numpy as np +from sklearn.preprocessing import normalize +from experiment.trend_analysis.univariate_trend_test.abstract_trend_test import AbstractTrendTest +from extreme_estimator.estimator.margin_estimator.abstract_margin_estimator import LinearMarginEstimator +from extreme_estimator.extreme_models.margin_model.temporal_linear_margin_model import StationaryStationModel, \ + NonStationaryLocationStationModel +from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates +from spatio_temporal_dataset.coordinates.temporal_coordinates.abstract_temporal_coordinates import \ + AbstractTemporalCoordinates +from spatio_temporal_dataset.coordinates.transformed_coordinates.transformation.abstract_transformation import \ + CenteredScaledNormalization +from spatio_temporal_dataset.coordinates.transformed_coordinates.transformation.uniform_normalization import \ + BetweenZeroAndOneNormalization +from spatio_temporal_dataset.dataset.abstract_dataset import AbstractDataset +from spatio_temporal_dataset.spatio_temporal_observations.abstract_spatio_temporal_observations import \ + AbstractSpatioTemporalObservations + + +class AbstractGevTrendTest(AbstractTrendTest): + + def __init__(self, years_after_change_point, maxima_after_change_point, non_stationary_model_class): + super().__init__(years_after_change_point, maxima_after_change_point) + df = pd.DataFrame({AbstractCoordinates.COORDINATE_T: years_after_change_point}) + df_maxima_gev = pd.DataFrame(maxima_after_change_point, index=df.index) + observations = AbstractSpatioTemporalObservations(df_maxima_gev=df_maxima_gev) + self.coordinates = AbstractTemporalCoordinates.from_df(df, transformation_class=BetweenZeroAndOneNormalization) + # self.coordinates = AbstractTemporalCoordinates.from_df(df, transformation_class=CenteredScaledNormalization) + self.dataset = AbstractDataset(observations=observations, coordinates=self.coordinates) + + # Fit stationary model + self.stationary_estimator = LinearMarginEstimator(self.dataset, StationaryStationModel(self.coordinates)) + self.stationary_estimator.fit() + + # Fit non stationary model + self.non_stationary_estimator = LinearMarginEstimator(self.dataset, + non_stationary_model_class(self.coordinates)) + self.non_stationary_estimator.fit() + + @property + def likelihood_ratio(self): + return 2 * (self.non_stationary_estimator.result_from_fit.deviance - + self.stationary_estimator.result_from_fit.deviance) + + @property + def is_significant(self) -> bool: + return self.likelihood_ratio > chi2.ppf(q=1 - self.SIGNIFICANCE_LEVEL, df=1) + + +class GevLocationTrendTest(AbstractGevTrendTest): + + def __init__(self, years_after_change_point, maxima_after_change_point): + super().__init__(years_after_change_point, maxima_after_change_point, NonStationaryLocationStationModel) + + @property + def test_sign(self) -> int: + return np.sign(self.non_stationary_estimator.margin_function_fitted.mu1_temporal_trend) diff --git a/experiment/trend_analysis/abstract_trend_test.py b/experiment/trend_analysis/univariate_trend_test/abstract_trend_test.py similarity index 97% rename from experiment/trend_analysis/abstract_trend_test.py rename to experiment/trend_analysis/univariate_trend_test/abstract_trend_test.py index 7a43a7da513220d6b4ad5a2281c83d03c370023e..a87598b3136d3f66bfc5fdf1bd9cef9b79d5cbd4 100644 --- a/experiment/trend_analysis/abstract_trend_test.py +++ b/experiment/trend_analysis/univariate_trend_test/abstract_trend_test.py @@ -99,7 +99,3 @@ class MannKendallTrendTest(AbstractTrendTest): class SpearmanRhoTrendTest(AbstractTrendTest): pass - - -class AbstractNonStationaryGevTrendTest(AbstractTrendTest): - pass diff --git a/extreme_estimator/extreme_models/margin_model/temporal_linear_margin_model.py b/extreme_estimator/extreme_models/margin_model/temporal_linear_margin_model.py index 425743336a33ab39dab220a5adcf7e2429fee32f..aee5481c372ce97f46d8f58b38e2294b9d9c5370 100644 --- a/extreme_estimator/extreme_models/margin_model/temporal_linear_margin_model.py +++ b/extreme_estimator/extreme_models/margin_model/temporal_linear_margin_model.py @@ -21,6 +21,7 @@ class TemporalLinearMarginModel(LinearMarginModel): # Modify df_coordinates_temp df_coordinates_temp = self.add_starting_temporal_point(df_coordinates_temp) # Gev Fit + assert data.shape[1] == len(df_coordinates_temp.values) res = safe_run_r_estimator(function=r('gev.fit'), use_start=self.use_start_value, xdat=ro.FloatVector(data[0]), y=df_coordinates_temp.values, mul=self.mul) return ResultFromIsmev(res, self.margin_function_start_fit.gev_param_name_to_dims) @@ -40,7 +41,7 @@ class StationaryStationModel(TemporalLinearMarginModel): return get_null() -class NonStationaryStationModel(TemporalLinearMarginModel): +class NonStationaryLocationStationModel(TemporalLinearMarginModel): def load_margin_functions(self, gev_param_name_to_dims=None): super().load_margin_functions({GevParams.LOC: [self.coordinates.idx_temporal_coordinates]}) diff --git a/extreme_estimator/extreme_models/result_from_fit.py b/extreme_estimator/extreme_models/result_from_fit.py index d20187c11455e88b92d875614d5c7fb6c94e0c66..afd325d27c3e238f24cb6aabc1cad7e22f1024dd 100644 --- a/extreme_estimator/extreme_models/result_from_fit.py +++ b/extreme_estimator/extreme_models/result_from_fit.py @@ -46,12 +46,13 @@ class ResultFromFit(object): class ResultFromIsmev(ResultFromFit): - def __init__(self, result_from_fit: robjects.ListVector, gev_param_name_to_dim) -> None: + def __init__(self, result_from_fit: robjects.ListVector, gev_param_name_to_dim=None) -> None: super().__init__(result_from_fit) self.gev_param_name_to_dim = gev_param_name_to_dim @property def margin_coef_dict(self): + assert self.gev_param_name_to_dim is not None # Build the Coeff dict from gev_param_name_to_dim coef_dict = {} i = 0 diff --git a/extreme_estimator/margin_fits/gev/ismev_gev_fit.py b/extreme_estimator/margin_fits/gev/ismev_gev_fit.py index 42eba04a42b5301c0303a91f34c740ea54ced72e..778fc1bbee768128604d95431171bb6f7d812d57 100644 --- a/extreme_estimator/margin_fits/gev/ismev_gev_fit.py +++ b/extreme_estimator/margin_fits/gev/ismev_gev_fit.py @@ -7,6 +7,7 @@ from extreme_estimator.margin_fits.margin_fits_utils import spatial_extreme_gevm class IsmevGevFit(GevFit): # todo: this could be modeled with a margin_function depending only on time + # todo: I should remove the call to this object, in order to centralize all the calls def __init__(self, x_gev: np.ndarray, y=None, mul=None): super().__init__(x_gev) diff --git a/extreme_estimator/margin_fits/margin_fits_utils.py b/extreme_estimator/margin_fits/margin_fits_utils.py index c22a9ca3a3b97a1372ecbe5b606f60bb237a0157..31de2d174bcea68bf6dac5dd5e3ad48821fe933e 100644 --- a/extreme_estimator/margin_fits/margin_fits_utils.py +++ b/extreme_estimator/margin_fits/margin_fits_utils.py @@ -1,7 +1,8 @@ import numpy as np import rpy2.robjects as ro -from extreme_estimator.extreme_models.utils import r, get_null +from extreme_estimator.extreme_models.result_from_fit import ResultFromIsmev +from extreme_estimator.extreme_models.utils import r, get_null, safe_run_r_estimator """ These two functions are “extremely light†functions to fit the GEV/GPD. These functions are mainlyuseful @@ -29,6 +30,13 @@ IsMev fit functions def ismev_gev_fit(x_gev, y, mul): + """ + For non-stationary fitting it is recommended that the covariates within the generalized linear models are + (at least approximately) centered and scaled (i.e.the columns of ydat should be approximately centered and scaled). + """ + # print('Mean x={}, variance x={}'.format(np.mean(x_gev), np.var(x_gev))) + # print('Mean y={}, variance y={}'.format(np.mean(y), np.var(y))) + xdat = ro.FloatVector(x_gev) gev_fit = r('gev.fit') y = y if y is not None else get_null() @@ -45,4 +53,4 @@ def ismev_gev_fit(x_gev, y, mul): # a = np.array([2, 2]) # v = ro.vectors.FloatVector((1, 2, 3, 4, 5)) # ro.globalenv['a'] = a -# print(r('class(a)')) \ No newline at end of file +# print(r('class(a)')) diff --git a/spatio_temporal_dataset/coordinates/transformed_coordinates/transformation/abstract_transformation.py b/spatio_temporal_dataset/coordinates/transformed_coordinates/transformation/abstract_transformation.py index e4092e0fc3c17d11cccdd34586bc2dbc4af4958c..aaa82a541d4ee86a9dbc8af924f4b55dfe5bb411 100644 --- a/spatio_temporal_dataset/coordinates/transformed_coordinates/transformation/abstract_transformation.py +++ b/spatio_temporal_dataset/coordinates/transformed_coordinates/transformation/abstract_transformation.py @@ -1,5 +1,6 @@ import pandas as pd import numpy as np +from sklearn.preprocessing import Normalizer class AbstractTransformation(object): @@ -29,3 +30,16 @@ class IdentityTransformation(AbstractTransformation): def transform_array(self, coordinate: np.ndarray): super().transform_array(coordinate) return coordinate + + +class CenteredScaledNormalization(AbstractTransformation): + + def __init__(self, df_coordinates): + super().__init__(df_coordinates) + assert self.nb_dimensions == 1 + self.transformer = Normalizer().fit(df_coordinates.transpose().values.reshape(-1, 1)) + + def transform_array(self, coordinate: np.ndarray): + return self.transformer.transform(np.array([coordinate]))[0] + + diff --git a/test/test_extreme_estimator/test_extreme_models/test_margin_temporal.py b/test/test_extreme_estimator/test_extreme_models/test_margin_temporal.py index 2388fcb35c781bf7cd1a1151f5fc2ee727604798..6ba798ee4bf4714fd6c3307e251a0cd334d22f72 100644 --- a/test/test_extreme_estimator/test_extreme_models/test_margin_temporal.py +++ b/test/test_extreme_estimator/test_extreme_models/test_margin_temporal.py @@ -1,25 +1,13 @@ -import random import unittest import numpy as np -import pandas as pd from extreme_estimator.estimator.margin_estimator.abstract_margin_estimator import LinearMarginEstimator from extreme_estimator.extreme_models.margin_model.linear_margin_model import LinearNonStationaryLocationMarginModel, \ LinearStationaryMarginModel -from extreme_estimator.extreme_models.margin_model.temporal_linear_margin_model import StationaryStationModel, \ - NonStationaryStationModel -from extreme_estimator.extreme_models.utils import r, set_seed_r, set_seed_for_test -from extreme_estimator.margin_fits.gev.gevmle_fit import GevMleFit -from extreme_estimator.margin_fits.gev.ismev_gev_fit import IsmevGevFit -from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates -from spatio_temporal_dataset.coordinates.temporal_coordinates.abstract_temporal_coordinates import \ - AbstractTemporalCoordinates -from spatio_temporal_dataset.dataset.abstract_dataset import AbstractDataset +from extreme_estimator.extreme_models.utils import set_seed_for_test from spatio_temporal_dataset.dataset.simulation_dataset import MarginDataset -from spatio_temporal_dataset.spatio_temporal_observations.abstract_spatio_temporal_observations import \ - AbstractSpatioTemporalObservations -from test.test_utils import load_test_spatiotemporal_coordinates, load_smooth_margin_models +from test.test_utils import load_test_spatiotemporal_coordinates class TestMarginTemporal(unittest.TestCase): diff --git a/test/test_extreme_estimator/test_extreme_models/test_margin_temporal_transformed.py b/test/test_extreme_estimator/test_extreme_models/test_margin_temporal_transformed.py index 8f4f688f7e804fa676d0957f0d91f7cc8b22a77b..bb6f266272efa083d44fe390c89718532ce40b8a 100644 --- a/test/test_extreme_estimator/test_extreme_models/test_margin_temporal_transformed.py +++ b/test/test_extreme_estimator/test_extreme_models/test_margin_temporal_transformed.py @@ -1,29 +1,17 @@ -import random import unittest import numpy as np -import pandas as pd from extreme_estimator.estimator.margin_estimator.abstract_margin_estimator import LinearMarginEstimator from extreme_estimator.extreme_models.margin_model.linear_margin_model import LinearNonStationaryLocationMarginModel, \ LinearStationaryMarginModel -from extreme_estimator.extreme_models.margin_model.temporal_linear_margin_model import StationaryStationModel, \ - NonStationaryStationModel -from extreme_estimator.extreme_models.utils import r, set_seed_r, set_seed_for_test -from extreme_estimator.margin_fits.gev.gevmle_fit import GevMleFit -from extreme_estimator.margin_fits.gev.ismev_gev_fit import IsmevGevFit -from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates +from extreme_estimator.extreme_models.utils import set_seed_for_test from spatio_temporal_dataset.coordinates.spatio_temporal_coordinates.abstract_spatio_temporal_coordinates import \ AbstractSpatioTemporalCoordinates -from spatio_temporal_dataset.coordinates.temporal_coordinates.abstract_temporal_coordinates import \ - AbstractTemporalCoordinates from spatio_temporal_dataset.coordinates.transformed_coordinates.transformation.uniform_normalization import \ BetweenZeroAndOneNormalization -from spatio_temporal_dataset.dataset.abstract_dataset import AbstractDataset from spatio_temporal_dataset.dataset.simulation_dataset import MarginDataset -from spatio_temporal_dataset.spatio_temporal_observations.abstract_spatio_temporal_observations import \ - AbstractSpatioTemporalObservations -from test.test_utils import load_test_spatiotemporal_coordinates, load_smooth_margin_models +from test.test_utils import load_test_spatiotemporal_coordinates class TestMarginTemporal(unittest.TestCase): 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 035c21c2d099f5bbb2f9b7059f5cc3697ced5863..6a359c9f3b478e9102013c8fd583c4ca55452039 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 @@ -1,27 +1,14 @@ -import random import unittest import numpy as np -import pandas as pd from extreme_estimator.estimator.full_estimator.abstract_full_estimator import \ FullEstimatorInASingleStepWithSmoothMargin -from extreme_estimator.estimator.margin_estimator.abstract_margin_estimator import LinearMarginEstimator from extreme_estimator.extreme_models.margin_model.linear_margin_model import LinearNonStationaryLocationMarginModel, \ LinearStationaryMarginModel -from extreme_estimator.extreme_models.margin_model.temporal_linear_margin_model import StationaryStationModel, \ - NonStationaryStationModel -from extreme_estimator.extreme_models.utils import r, set_seed_r, set_seed_for_test -from extreme_estimator.margin_fits.gev.gevmle_fit import GevMleFit -from extreme_estimator.margin_fits.gev.ismev_gev_fit import IsmevGevFit -from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates -from spatio_temporal_dataset.coordinates.temporal_coordinates.abstract_temporal_coordinates import \ - AbstractTemporalCoordinates -from spatio_temporal_dataset.dataset.abstract_dataset import AbstractDataset -from spatio_temporal_dataset.dataset.simulation_dataset import MarginDataset, FullSimulatedDataset -from spatio_temporal_dataset.spatio_temporal_observations.abstract_spatio_temporal_observations import \ - AbstractSpatioTemporalObservations -from test.test_utils import load_test_spatiotemporal_coordinates, load_smooth_margin_models, load_test_max_stable_models +from extreme_estimator.extreme_models.utils import set_seed_for_test +from spatio_temporal_dataset.dataset.simulation_dataset import FullSimulatedDataset +from test.test_utils import load_test_spatiotemporal_coordinates, load_test_max_stable_models class TestMaxStableTemporal(unittest.TestCase): diff --git a/test/test_extreme_estimator/test_margin_fits/test_gev/test_gev_temporal.py b/test/test_extreme_estimator/test_margin_fits/test_gev/test_gev_temporal.py index 249b5167c6a70b4838307f354998739495ae10e7..38636360b2a5d375a273a8211d66be3bc400bf4d 100644 --- a/test/test_extreme_estimator/test_margin_fits/test_gev/test_gev_temporal.py +++ b/test/test_extreme_estimator/test_margin_fits/test_gev/test_gev_temporal.py @@ -5,10 +5,8 @@ import pandas as pd from extreme_estimator.estimator.margin_estimator.abstract_margin_estimator import LinearMarginEstimator from extreme_estimator.extreme_models.margin_model.temporal_linear_margin_model import StationaryStationModel, \ - NonStationaryStationModel + NonStationaryLocationStationModel from extreme_estimator.extreme_models.utils import r, set_seed_r -from extreme_estimator.margin_fits.gev.gevmle_fit import GevMleFit -from extreme_estimator.margin_fits.gev.ismev_gev_fit import IsmevGevFit from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates from spatio_temporal_dataset.coordinates.temporal_coordinates.abstract_temporal_coordinates import \ AbstractTemporalCoordinates @@ -48,7 +46,7 @@ class TestGevTemporal(unittest.TestCase): def test_gev_temporal_margin_fit_nonstationary(self): # Create estimator - margin_model = NonStationaryStationModel(self.coordinates) + margin_model = NonStationaryLocationStationModel(self.coordinates) estimator = LinearMarginEstimator(self.dataset, margin_model) estimator.fit() self.assertNotEqual(estimator.margin_function_fitted.mu1_temporal_trend, 0.0) @@ -71,7 +69,7 @@ class TestGevTemporal(unittest.TestCase): self.assertNotEqual(mle_params_estimated_year5, mle_params_estimated_year3) def fit_non_stationary_estimator(self, starting_point): - margin_model = NonStationaryStationModel(self.coordinates, starting_point=starting_point + self.start_year) + margin_model = NonStationaryLocationStationModel(self.coordinates, starting_point=starting_point + self.start_year) estimator = LinearMarginEstimator(self.dataset, margin_model) estimator.fit() return estimator