From f39a29384e381373388c40a3b01b700674a6a935 Mon Sep 17 00:00:00 2001 From: Le Roux Erwan <erwan.le-roux@irstea.fr> Date: Tue, 7 Jan 2020 11:40:57 +0100 Subject: [PATCH] [Temporal fit] add fit method parameter to all init methods --- .../paper_past_snow_loads/paper_main_utils.py | 2 +- .../main_result_trends_and_return_levels.py | 14 +++++------ ...dy_visualizer_for_non_stationary_trends.py | 9 +++---- .../abstract_gev_trend_test.py | 6 ++--- ...bstract_comparison_non_stationary_model.py | 10 +++++--- .../gev_trend_test_one_parameter.py | 25 +++++++++++++------ .../gumbel_trend_test_one_parameter.py | 23 +++++++++++------ .../gev_trend_test_three_parameters.py | 7 ++++-- .../gev_trend_test_two_parameters.py | 15 ++++++----- .../gumbel_test_two_parameters.py | 7 ++++-- 10 files changed, 71 insertions(+), 47 deletions(-) diff --git a/experiment/paper_past_snow_loads/paper_main_utils.py b/experiment/paper_past_snow_loads/paper_main_utils.py index f41fb818..17de30ad 100644 --- a/experiment/paper_past_snow_loads/paper_main_utils.py +++ b/experiment/paper_past_snow_loads/paper_main_utils.py @@ -9,7 +9,7 @@ from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear def load_altitude_to_visualizer(altitudes, massif_names, non_stationary_uncertainty, study_class, uncertainty_methods, study_visualizer_class=StudyVisualizerForNonStationaryTrends, save_to_file=True): - fit_method = TemporalMarginFitMethod.extremes_fevd_gmle + fit_method = TemporalMarginFitMethod.extremes_fevd_mle altitude_to_visualizer = OrderedDict() for altitude in altitudes: altitude_to_visualizer[altitude] = study_visualizer_class( diff --git a/experiment/paper_past_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py b/experiment/paper_past_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py index 5987b7a6..ac139f9f 100644 --- a/experiment/paper_past_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py +++ b/experiment/paper_past_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py @@ -94,12 +94,12 @@ def major_result(): if __name__ == '__main__': - major_result() - # intermediate_result(altitudes=[900, 1200], massif_names=['Vercors'], - # uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes, - # ConfidenceIntervalMethodFromExtremes.ci_mle][1:], - # non_stationary_uncertainty=[False, True][1:], - # multiprocessing=True) + # major_result() + intermediate_result(altitudes=[900, 1200], massif_names=['Vercors'], + uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes, + ConfidenceIntervalMethodFromExtremes.ci_mle][1:], + non_stationary_uncertainty=[False, True][1:], + multiprocessing=True) # intermediate_result(altitudes=[900, 1200], massif_names=['Maurienne'], # uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes, # ConfidenceIntervalMethodFromExtremes.ci_mle][1:], @@ -125,4 +125,4 @@ if __name__ == '__main__': # non_stationary_uncertainty=[False, True]) # intermediate_result(altitudes=[300, 600, 900], massif_names=None, # uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.ci_mle], - # non_stationary_uncertainty=[False, True]) + # non_stationary_uncertainty=[False, True]) \ No newline at end of file diff --git a/experiment/paper_past_snow_loads/study_visualizer_for_non_stationary_trends.py b/experiment/paper_past_snow_loads/study_visualizer_for_non_stationary_trends.py index f6bae071..4db5de7c 100644 --- a/experiment/paper_past_snow_loads/study_visualizer_for_non_stationary_trends.py +++ b/experiment/paper_past_snow_loads/study_visualizer_for_non_stationary_trends.py @@ -119,13 +119,10 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer): for massif_name, (x, y) in self.massif_name_to_non_null_years_and_maxima.items(): quantile_level = self.massif_name_to_eurocode_quantile_level_in_practice[massif_name] non_stationary_trend_test = [ - t(years=x, maxima=y, starting_year=starting_year, quantile_level=quantile_level) + t(years=x, maxima=y, starting_year=starting_year, quantile_level=quantile_level, + fit_method=self.fit_method) for t in self.non_stationary_trend_test] # type: List[AbstractGevTrendTest] - # Set appropriate fit method for all objects (#todo: set this parameter directly in the init function) - if self.fit_method is not None: - for t in non_stationary_trend_test: - t.fit_method = self.fit_method - # Extract + # Extract the model with minimized AIC trend_test_that_minimized_aic = sorted(non_stationary_trend_test, key=lambda t: t.aic)[0] massif_name_to_trend_test_that_minimized_aic[massif_name] = trend_test_that_minimized_aic return massif_name_to_trend_test_that_minimized_aic diff --git a/experiment/trend_analysis/univariate_test/extreme_trend_test/abstract_gev_trend_test.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/abstract_gev_trend_test.py index 5411a6ed..b9047dc1 100644 --- a/experiment/trend_analysis/univariate_test/extreme_trend_test/abstract_gev_trend_test.py +++ b/experiment/trend_analysis/univariate_test/extreme_trend_test/abstract_gev_trend_test.py @@ -25,12 +25,12 @@ class AbstractGevTrendTest(AbstractUnivariateTest): def __init__(self, years, maxima, starting_year, unconstrained_model_class, constrained_model_class=StationaryTemporalModel, quantile_level=EUROCODE_QUANTILE, - ): + fit_method=TemporalMarginFitMethod.extremes_fevd_mle): super().__init__(years, maxima, starting_year) - self.quantile_level = quantile_level self.unconstrained_model_class = unconstrained_model_class self.constrained_model_class = constrained_model_class - self.fit_method = TemporalMarginFitMethod.extremes_fevd_mle + self.quantile_level = quantile_level + self.fit_method = fit_method # Load observations, coordinates and datasets self.coordinates, self.dataset = load_temporal_coordinates_and_dataset(maxima, years) # By default crashed boolean is False diff --git a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/abstract_comparison_non_stationary_model.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/abstract_comparison_non_stationary_model.py index ee92cf5e..8b38e5b4 100644 --- a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/abstract_comparison_non_stationary_model.py +++ b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/abstract_comparison_non_stationary_model.py @@ -3,6 +3,8 @@ from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_t from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gev_trend_test_one_parameter import \ GevTrendTestOneParameter from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest +from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \ + TemporalMarginFitMethod from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \ NonStationaryLocationTemporalModel, NonStationaryScaleTemporalModel import numpy as np @@ -19,13 +21,13 @@ class AbstractComparisonNonStationaryModelOneParameter(GevTrendTestOneParameter) class ComparisonAgainstMu(AbstractComparisonNonStationaryModelOneParameter, GevLocationAndScaleTrendTest): - def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE): + def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE, fit_method=TemporalMarginFitMethod.extremes_fevd_mle): super().__init__(years, maxima, starting_year, constrained_model_class=NonStationaryLocationTemporalModel, - quantile_level=quantile_level) + quantile_level=quantile_level, fit_method=fit_method) class ComparisonAgainstSigma(AbstractComparisonNonStationaryModelOneParameter, GevLocationAndScaleTrendTest): - def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE): + def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE, fit_method=TemporalMarginFitMethod.extremes_fevd_mle): super().__init__(years, maxima, starting_year, constrained_model_class=NonStationaryScaleTemporalModel, - quantile_level=quantile_level) + quantile_level=quantile_level, fit_method=fit_method) diff --git a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/gev_trend_test_one_parameter.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/gev_trend_test_one_parameter.py index b34c2bc7..6b80b333 100644 --- a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/gev_trend_test_one_parameter.py +++ b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/gev_trend_test_one_parameter.py @@ -1,5 +1,7 @@ from experiment.eurocode_data.utils import EUROCODE_QUANTILE from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import AbstractGevTrendTest +from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \ + TemporalMarginFitMethod from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \ NonStationaryLocationTemporalModel, NonStationaryScaleTemporalModel, NonStationaryShapeTemporalModel, \ StationaryTemporalModel @@ -18,11 +20,13 @@ class GevTrendTestOneParameterAgainstStationary(GevTrendTestOneParameter): def __init__(self, years, maxima, starting_year, unconstrained_model_class, gev_param_name, quantile_level=EUROCODE_QUANTILE, - constrained_model_class=StationaryTemporalModel): + constrained_model_class=StationaryTemporalModel, + fit_method=TemporalMarginFitMethod.extremes_fevd_mle): super().__init__(years, maxima, starting_year, unconstrained_model_class=unconstrained_model_class, quantile_level=quantile_level, - constrained_model_class=constrained_model_class) + constrained_model_class=constrained_model_class, + fit_method=fit_method) self.gev_param_name = gev_param_name @property @@ -32,12 +36,14 @@ class GevTrendTestOneParameterAgainstStationary(GevTrendTestOneParameter): class GevLocationTrendTest(GevTrendTestOneParameterAgainstStationary): - def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE, constrained_model_class=StationaryTemporalModel): + def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE, constrained_model_class=StationaryTemporalModel, + fit_method=TemporalMarginFitMethod.extremes_fevd_mle): super().__init__(years, maxima, starting_year, unconstrained_model_class=NonStationaryLocationTemporalModel, constrained_model_class=constrained_model_class, gev_param_name=GevParams.LOC, - quantile_level=quantile_level) + quantile_level=quantile_level, + fit_method=fit_method) def _slope_strength(self): return self.unconstrained_estimator_gev_params.time_derivative_of_return_level(p=self.quantile_level, @@ -55,12 +61,14 @@ class GevLocationTrendTest(GevTrendTestOneParameterAgainstStationary): class GevScaleTrendTest(GevTrendTestOneParameterAgainstStationary): - def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE, constrained_model_class=StationaryTemporalModel): + def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE, constrained_model_class=StationaryTemporalModel, + fit_method=TemporalMarginFitMethod.extremes_fevd_mle): super().__init__(years, maxima, starting_year, unconstrained_model_class=NonStationaryScaleTemporalModel, constrained_model_class=constrained_model_class, gev_param_name=GevParams.SCALE, - quantile_level=quantile_level) + quantile_level=quantile_level, + fit_method=fit_method) def _slope_strength(self): return self.unconstrained_estimator_gev_params.time_derivative_of_return_level( @@ -81,10 +89,11 @@ class GevScaleTrendTest(GevTrendTestOneParameterAgainstStationary): class GevShapeTrendTest(GevTrendTestOneParameterAgainstStationary): - def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE): + def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE, fit_method=TemporalMarginFitMethod.extremes_fevd_mle): super().__init__(years, maxima, starting_year, unconstrained_model_class=NonStationaryShapeTemporalModel, gev_param_name=GevParams.SHAPE, - quantile_level=quantile_level) + quantile_level=quantile_level, + fit_method=fit_method) diff --git a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/gumbel_trend_test_one_parameter.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/gumbel_trend_test_one_parameter.py index 0d0ff69a..d6e1ba53 100644 --- a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/gumbel_trend_test_one_parameter.py +++ b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/gumbel_trend_test_one_parameter.py @@ -3,6 +3,8 @@ from experiment.eurocode_data.utils import EUROCODE_QUANTILE from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gev_trend_test_one_parameter import \ GevTrendTestOneParameter, GevTrendTestOneParameterAgainstStationary from extreme_fit.distribution.gev.gev_params import GevParams +from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \ + TemporalMarginFitMethod from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel, \ GumbelTemporalModel, NonStationaryLocationGumbelModel, NonStationaryScaleGumbelModel from root_utils import classproperty @@ -10,11 +12,12 @@ from root_utils import classproperty class GumbelVersusGumbel(GevTrendTestOneParameter): - def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE): + def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE, fit_method=TemporalMarginFitMethod.extremes_fevd_mle): super().__init__(years, maxima, starting_year, unconstrained_model_class=GumbelTemporalModel, constrained_model_class=GumbelTemporalModel, - quantile_level=quantile_level) + quantile_level=quantile_level, + fit_method=fit_method) @property def is_significant(self) -> bool: @@ -38,11 +41,13 @@ class GumbelVersusGumbel(GevTrendTestOneParameter): class GevStationaryVersusGumbel(GevTrendTestOneParameter): - def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE): + def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE, + fit_method=TemporalMarginFitMethod.extremes_fevd_mle): super().__init__(years, maxima, starting_year, unconstrained_model_class=StationaryTemporalModel, constrained_model_class=GumbelTemporalModel, - quantile_level=quantile_level) + quantile_level=quantile_level, + fit_method=fit_method) @property def total_number_of_parameters_for_unconstrained_model(self) -> int: @@ -62,12 +67,12 @@ class GevStationaryVersusGumbel(GevTrendTestOneParameter): class GumbelLocationTrendTest(GevTrendTestOneParameterAgainstStationary): - def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE): + def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE, fit_method=TemporalMarginFitMethod.extremes_fevd_mle): super().__init__(years, maxima, starting_year, unconstrained_model_class=NonStationaryLocationGumbelModel, gev_param_name=GevParams.LOC, quantile_level=quantile_level, - constrained_model_class=GumbelTemporalModel) + constrained_model_class=GumbelTemporalModel, fit_method=fit_method) @property def total_number_of_parameters_for_unconstrained_model(self) -> int: @@ -88,12 +93,14 @@ class GumbelLocationTrendTest(GevTrendTestOneParameterAgainstStationary): class GumbelScaleTrendTest(GevTrendTestOneParameterAgainstStationary): - def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE): + def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE, + fit_method=TemporalMarginFitMethod.extremes_fevd_mle): super().__init__(years, maxima, starting_year, unconstrained_model_class=NonStationaryScaleGumbelModel, gev_param_name=GevParams.SCALE, quantile_level=quantile_level, - constrained_model_class=GumbelTemporalModel) + constrained_model_class=GumbelTemporalModel, + fit_method=fit_method) def _slope_strength(self): return self.unconstrained_estimator_gev_params.time_derivative_of_return_level( diff --git a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_three_parameters/gev_trend_test_three_parameters.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_three_parameters/gev_trend_test_three_parameters.py index cb951aad..9f9a7bbb 100644 --- a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_three_parameters/gev_trend_test_three_parameters.py +++ b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_three_parameters/gev_trend_test_three_parameters.py @@ -1,6 +1,8 @@ from experiment.eurocode_data.utils import EUROCODE_QUANTILE from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import \ GevLocationAndScaleTrendTest +from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \ + TemporalMarginFitMethod from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel from experiment.eurocode_data.utils import EUROCODE_QUANTILE from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import AbstractGevTrendTest @@ -20,11 +22,12 @@ class GevTrendTestThreeParameters(AbstractGevTrendTest): class GevLocationAndScaleTrendTestAgainstGumbel(GevTrendTestThreeParameters): - def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE): + def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE, fit_method=TemporalMarginFitMethod.extremes_fevd_mle): super().__init__(years, maxima, starting_year, unconstrained_model_class=NonStationaryLocationAndScaleTemporalModel, constrained_model_class=GumbelTemporalModel, - quantile_level=quantile_level) + quantile_level=quantile_level, + fit_method=fit_method) @property def mu1(self): diff --git a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/gev_trend_test_two_parameters.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/gev_trend_test_two_parameters.py index 7ef18928..56c93e8c 100644 --- a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/gev_trend_test_two_parameters.py +++ b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/gev_trend_test_two_parameters.py @@ -2,6 +2,8 @@ from experiment.eurocode_data.utils import EUROCODE_QUANTILE from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import AbstractGevTrendTest from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gev_trend_test_one_parameter import \ GevLocationTrendTest, GevScaleTrendTest +from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \ + TemporalMarginFitMethod from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \ NonStationaryLocationAndScaleTemporalModel, StationaryTemporalModel, NonStationaryLocationAndScaleGumbelModel, \ GumbelTemporalModel @@ -19,11 +21,12 @@ class GevTrendTestTwoParameters(AbstractGevTrendTest): class GevLocationAndScaleTrendTest(GevTrendTestTwoParameters): def __init__(self, years, maxima, starting_year, constrained_model_class=StationaryTemporalModel, - quantile_level=EUROCODE_QUANTILE): + quantile_level=EUROCODE_QUANTILE, fit_method=TemporalMarginFitMethod.extremes_fevd_mle): super().__init__(years, maxima, starting_year, unconstrained_model_class=NonStationaryLocationAndScaleTemporalModel, constrained_model_class=constrained_model_class, - quantile_level=quantile_level) + quantile_level=quantile_level, + fit_method=fit_method) @property def mu1(self): @@ -51,8 +54,8 @@ class GevLocationAndScaleTrendTest(GevTrendTestTwoParameters): class GevLocationAgainstGumbel(GevTrendTestTwoParameters, GevLocationTrendTest): - def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE): - super().__init__(years, maxima, starting_year, quantile_level, GumbelTemporalModel) + def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE, fit_method=TemporalMarginFitMethod.extremes_fevd_mle): + super().__init__(years, maxima, starting_year, quantile_level, GumbelTemporalModel, fit_method=fit_method) @classproperty def label(self): @@ -69,8 +72,8 @@ class GevLocationAgainstGumbel(GevTrendTestTwoParameters, GevLocationTrendTest): class GevScaleAgainstGumbel(GevTrendTestTwoParameters, GevScaleTrendTest): - def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE): - super().__init__(years, maxima, starting_year, quantile_level, GumbelTemporalModel) + def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE, fit_method=TemporalMarginFitMethod.extremes_fevd_mle): + super().__init__(years, maxima, starting_year, quantile_level, GumbelTemporalModel, fit_method=fit_method) @classproperty def label(self): diff --git a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/gumbel_test_two_parameters.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/gumbel_test_two_parameters.py index 8eced3b2..d21fdb7f 100644 --- a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/gumbel_test_two_parameters.py +++ b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/gumbel_test_two_parameters.py @@ -2,6 +2,8 @@ from experiment.eurocode_data.utils import EUROCODE_QUANTILE from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import \ GevTrendTestTwoParameters from extreme_fit.distribution.gev.gev_params import GevParams +from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \ + TemporalMarginFitMethod from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \ NonStationaryLocationAndScaleGumbelModel, GumbelTemporalModel from root_utils import classproperty @@ -9,11 +11,12 @@ from root_utils import classproperty class GumbelLocationAndScaleTrendTest(GevTrendTestTwoParameters): - def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE): + def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE, fit_method=TemporalMarginFitMethod.extremes_fevd_mle): super().__init__(years, maxima, starting_year, unconstrained_model_class=NonStationaryLocationAndScaleGumbelModel, constrained_model_class=GumbelTemporalModel, - quantile_level=quantile_level) + quantile_level=quantile_level, + fit_method=fit_method) @property def total_number_of_parameters_for_unconstrained_model(self) -> int: -- GitLab