From 390c0b19d83ae60e9e1f348be83982fe96d66e09 Mon Sep 17 00:00:00 2001 From: Le Roux Erwan <erwan.le-roux@irstea.fr> Date: Tue, 28 May 2019 17:24:07 +0200 Subject: [PATCH] [METEO FRANCE DATA][STATIONS] add some comparison on the max stable parameter too. --- .../stations_data/comparison_analysis.py | 25 ++++++++++++------- .../extreme_models/result_from_fit.py | 8 ++++++ 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/experiment/meteo_france_data/stations_data/comparison_analysis.py b/experiment/meteo_france_data/stations_data/comparison_analysis.py index 2277d51b..c852a828 100644 --- a/experiment/meteo_france_data/stations_data/comparison_analysis.py +++ b/experiment/meteo_france_data/stations_data/comparison_analysis.py @@ -10,6 +10,7 @@ from extreme_estimator.estimator.full_estimator.abstract_full_estimator import \ from extreme_estimator.extreme_models.margin_model.linear_margin_model import LinearAllParametersAllDimsMarginModel, \ LinearLocationAllDimsMarginModel, LinearShapeAllDimsMarginModel from extreme_estimator.extreme_models.max_stable_model.abstract_max_stable_model import CovarianceFunction +from extreme_estimator.extreme_models.max_stable_model.max_stable_models import ExtremalT, BrownResnick from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates from spatio_temporal_dataset.coordinates.spatial_coordinates.abstract_spatial_coordinates import \ AbstractSpatialCoordinates @@ -203,24 +204,30 @@ class ComparisonAnalysis(object): ##################### COMPARE THE TWO DATASETS BY FITTING THE SAME MODEL ############################ - def spatial_comparison(self, margin_model_class): - max_stable_models = load_test_max_stable_models(default_covariance_function=CovarianceFunction.powexp) - for max_stable_model in [max_stable_models[1], max_stable_models[-2]]: + def spatial_comparison(self, margin_model_class, default_covariance_function=CovarianceFunction.powexp): + # max_stable_models = load_test_max_stable_models(default_covariance_function=CovarianceFunction.powexp) + # max_stable_models = [max_stable_models[1], max_stable_models[-2]] + max_stable_models = load_test_max_stable_models(default_covariance_function=default_covariance_function) + max_stable_models = [m for m in max_stable_models if isinstance(m, (BrownResnick, ExtremalT))] + for max_stable_model in max_stable_models: print('\n\n', get_display_name_from_object_type(type(max_stable_model))) + if hasattr(max_stable_model, 'covariance_function'): + print(max_stable_model.covariance_function) for dataset in [self.station_dataset, self.study_dataset_lambert]: margin_model = margin_model_class(coordinates=dataset.coordinates) estimator = FullEstimatorInASingleStepWithSmoothMargin(dataset=dataset, margin_model=margin_model, max_stable_model=max_stable_model) estimator.fit() - print(estimator.margin_function_fitted.coef_dict) + print(estimator.result_from_fit.margin_coef_dict) + print(estimator.result_from_fit.other_coef_dict) # print(estimato) def choice_of_altitude_and_nb_border_data_to_remove_to_get_data_without_nan(): for margin in [50, 100, 150, 200, 250, 300][2:3]: - for altitude in [900, 1200, 1800][-1:]: - for nb in range(1, 15): + for altitude in [900, 1200, 1800][:1]: + for nb in range(1, 4): s = ComparisonAnalysis(altitude=altitude, nb_border_data_to_remove=nb, margin=margin) print(margin, altitude, nb, 'nb massifs', len(s.intersection_massif_names), 'nb stations', len(s.stations_observations), 'nb observations', s.stations_observations.nb_obs, @@ -235,7 +242,7 @@ def run_comparison_for_optimal_parameters_for_altitude_900(): exclude_some_massifs_from_the_intersection=nb == 2, transformation_class=transformation_class, normalize_observations=True) - print('nb:', nb, comparison.intersection_massif_names) + print('\n-----------\nnb:', nb, comparison.intersection_massif_names) # margin_model_classes = [LinearShapeAllDimsMarginModel, LinearLocationAllDimsMarginModel, # LinearAllParametersAllDimsMarginModel] for margin_model_class in [LinearAllParametersAllDimsMarginModel]: @@ -279,5 +286,5 @@ Then I should find a way to remove the same years in the study """ if __name__ == '__main__': - # run_comparison_for_optimal_parameters_for_altitude_900() - choice_of_altitude_and_nb_border_data_to_remove_to_get_data_without_nan() + run_comparison_for_optimal_parameters_for_altitude_900() + # choice_of_altitude_and_nb_border_data_to_remove_to_get_data_without_nan() diff --git a/extreme_estimator/extreme_models/result_from_fit.py b/extreme_estimator/extreme_models/result_from_fit.py index afd325d2..257017ce 100644 --- a/extreme_estimator/extreme_models/result_from_fit.py +++ b/extreme_estimator/extreme_models/result_from_fit.py @@ -31,6 +31,10 @@ class ResultFromFit(object): def margin_coef_dict(self): raise NotImplementedError + @property + def other_coef_dict(self): + raise NotImplementedError + @property def nllh(self): raise NotImplementedError @@ -116,3 +120,7 @@ class ResultFromSpatialExtreme(ResultFromFit): @property def margin_coef_dict(self): return {k: v for k, v in self.all_parameters.items() if LinearCoef.COEFF_STR in k} + + @property + def other_coef_dict(self): + return {k: v for k, v in self.all_parameters.items() if LinearCoef.COEFF_STR not in k} -- GitLab