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

[Temporal fit] add fit method parameter to all init methods

parent eea1ad8d
No related merge requests found
Showing with 71 additions and 47 deletions
+71 -47
...@@ -9,7 +9,7 @@ from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear ...@@ -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, def load_altitude_to_visualizer(altitudes, massif_names, non_stationary_uncertainty, study_class, uncertainty_methods,
study_visualizer_class=StudyVisualizerForNonStationaryTrends, study_visualizer_class=StudyVisualizerForNonStationaryTrends,
save_to_file=True): save_to_file=True):
fit_method = TemporalMarginFitMethod.extremes_fevd_gmle fit_method = TemporalMarginFitMethod.extremes_fevd_mle
altitude_to_visualizer = OrderedDict() altitude_to_visualizer = OrderedDict()
for altitude in altitudes: for altitude in altitudes:
altitude_to_visualizer[altitude] = study_visualizer_class( altitude_to_visualizer[altitude] = study_visualizer_class(
......
...@@ -94,12 +94,12 @@ def major_result(): ...@@ -94,12 +94,12 @@ def major_result():
if __name__ == '__main__': if __name__ == '__main__':
major_result() # major_result()
# intermediate_result(altitudes=[900, 1200], massif_names=['Vercors'], intermediate_result(altitudes=[900, 1200], massif_names=['Vercors'],
# uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes, uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes,
# ConfidenceIntervalMethodFromExtremes.ci_mle][1:], ConfidenceIntervalMethodFromExtremes.ci_mle][1:],
# non_stationary_uncertainty=[False, True][1:], non_stationary_uncertainty=[False, True][1:],
# multiprocessing=True) multiprocessing=True)
# intermediate_result(altitudes=[900, 1200], massif_names=['Maurienne'], # intermediate_result(altitudes=[900, 1200], massif_names=['Maurienne'],
# uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes, # uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes,
# ConfidenceIntervalMethodFromExtremes.ci_mle][1:], # ConfidenceIntervalMethodFromExtremes.ci_mle][1:],
...@@ -125,4 +125,4 @@ if __name__ == '__main__': ...@@ -125,4 +125,4 @@ if __name__ == '__main__':
# non_stationary_uncertainty=[False, True]) # non_stationary_uncertainty=[False, True])
# intermediate_result(altitudes=[300, 600, 900], massif_names=None, # intermediate_result(altitudes=[300, 600, 900], massif_names=None,
# uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.ci_mle], # uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.ci_mle],
# non_stationary_uncertainty=[False, True]) # non_stationary_uncertainty=[False, True])
\ No newline at end of file
...@@ -119,13 +119,10 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer): ...@@ -119,13 +119,10 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer):
for massif_name, (x, y) in self.massif_name_to_non_null_years_and_maxima.items(): 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] quantile_level = self.massif_name_to_eurocode_quantile_level_in_practice[massif_name]
non_stationary_trend_test = [ 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] 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) # Extract the model with minimized AIC
if self.fit_method is not None:
for t in non_stationary_trend_test:
t.fit_method = self.fit_method
# Extract
trend_test_that_minimized_aic = sorted(non_stationary_trend_test, key=lambda t: t.aic)[0] 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 massif_name_to_trend_test_that_minimized_aic[massif_name] = trend_test_that_minimized_aic
return massif_name_to_trend_test_that_minimized_aic return massif_name_to_trend_test_that_minimized_aic
......
...@@ -25,12 +25,12 @@ class AbstractGevTrendTest(AbstractUnivariateTest): ...@@ -25,12 +25,12 @@ class AbstractGevTrendTest(AbstractUnivariateTest):
def __init__(self, years, maxima, starting_year, unconstrained_model_class, def __init__(self, years, maxima, starting_year, unconstrained_model_class,
constrained_model_class=StationaryTemporalModel, constrained_model_class=StationaryTemporalModel,
quantile_level=EUROCODE_QUANTILE, quantile_level=EUROCODE_QUANTILE,
): fit_method=TemporalMarginFitMethod.extremes_fevd_mle):
super().__init__(years, maxima, starting_year) super().__init__(years, maxima, starting_year)
self.quantile_level = quantile_level
self.unconstrained_model_class = unconstrained_model_class self.unconstrained_model_class = unconstrained_model_class
self.constrained_model_class = constrained_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 # Load observations, coordinates and datasets
self.coordinates, self.dataset = load_temporal_coordinates_and_dataset(maxima, years) self.coordinates, self.dataset = load_temporal_coordinates_and_dataset(maxima, years)
# By default crashed boolean is False # By default crashed boolean is False
......
...@@ -3,6 +3,8 @@ from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_t ...@@ -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 \ from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gev_trend_test_one_parameter import \
GevTrendTestOneParameter GevTrendTestOneParameter
from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest 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 \ from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \
NonStationaryLocationTemporalModel, NonStationaryScaleTemporalModel NonStationaryLocationTemporalModel, NonStationaryScaleTemporalModel
import numpy as np import numpy as np
...@@ -19,13 +21,13 @@ class AbstractComparisonNonStationaryModelOneParameter(GevTrendTestOneParameter) ...@@ -19,13 +21,13 @@ class AbstractComparisonNonStationaryModelOneParameter(GevTrendTestOneParameter)
class ComparisonAgainstMu(AbstractComparisonNonStationaryModelOneParameter, GevLocationAndScaleTrendTest): 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, 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): 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, super().__init__(years, maxima, starting_year, constrained_model_class=NonStationaryScaleTemporalModel,
quantile_level=quantile_level) quantile_level=quantile_level, fit_method=fit_method)
from experiment.eurocode_data.utils import EUROCODE_QUANTILE 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.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 \ from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \
NonStationaryLocationTemporalModel, NonStationaryScaleTemporalModel, NonStationaryShapeTemporalModel, \ NonStationaryLocationTemporalModel, NonStationaryScaleTemporalModel, NonStationaryShapeTemporalModel, \
StationaryTemporalModel StationaryTemporalModel
...@@ -18,11 +20,13 @@ class GevTrendTestOneParameterAgainstStationary(GevTrendTestOneParameter): ...@@ -18,11 +20,13 @@ class GevTrendTestOneParameterAgainstStationary(GevTrendTestOneParameter):
def __init__(self, years, maxima, starting_year, unconstrained_model_class, gev_param_name, def __init__(self, years, maxima, starting_year, unconstrained_model_class, gev_param_name,
quantile_level=EUROCODE_QUANTILE, quantile_level=EUROCODE_QUANTILE,
constrained_model_class=StationaryTemporalModel): constrained_model_class=StationaryTemporalModel,
fit_method=TemporalMarginFitMethod.extremes_fevd_mle):
super().__init__(years, maxima, starting_year, super().__init__(years, maxima, starting_year,
unconstrained_model_class=unconstrained_model_class, unconstrained_model_class=unconstrained_model_class,
quantile_level=quantile_level, 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 self.gev_param_name = gev_param_name
@property @property
...@@ -32,12 +36,14 @@ class GevTrendTestOneParameterAgainstStationary(GevTrendTestOneParameter): ...@@ -32,12 +36,14 @@ class GevTrendTestOneParameterAgainstStationary(GevTrendTestOneParameter):
class GevLocationTrendTest(GevTrendTestOneParameterAgainstStationary): 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, super().__init__(years, maxima, starting_year,
unconstrained_model_class=NonStationaryLocationTemporalModel, unconstrained_model_class=NonStationaryLocationTemporalModel,
constrained_model_class=constrained_model_class, constrained_model_class=constrained_model_class,
gev_param_name=GevParams.LOC, gev_param_name=GevParams.LOC,
quantile_level=quantile_level) quantile_level=quantile_level,
fit_method=fit_method)
def _slope_strength(self): def _slope_strength(self):
return self.unconstrained_estimator_gev_params.time_derivative_of_return_level(p=self.quantile_level, return self.unconstrained_estimator_gev_params.time_derivative_of_return_level(p=self.quantile_level,
...@@ -55,12 +61,14 @@ class GevLocationTrendTest(GevTrendTestOneParameterAgainstStationary): ...@@ -55,12 +61,14 @@ class GevLocationTrendTest(GevTrendTestOneParameterAgainstStationary):
class GevScaleTrendTest(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, super().__init__(years, maxima, starting_year,
unconstrained_model_class=NonStationaryScaleTemporalModel, unconstrained_model_class=NonStationaryScaleTemporalModel,
constrained_model_class=constrained_model_class, constrained_model_class=constrained_model_class,
gev_param_name=GevParams.SCALE, gev_param_name=GevParams.SCALE,
quantile_level=quantile_level) quantile_level=quantile_level,
fit_method=fit_method)
def _slope_strength(self): def _slope_strength(self):
return self.unconstrained_estimator_gev_params.time_derivative_of_return_level( return self.unconstrained_estimator_gev_params.time_derivative_of_return_level(
...@@ -81,10 +89,11 @@ class GevScaleTrendTest(GevTrendTestOneParameterAgainstStationary): ...@@ -81,10 +89,11 @@ class GevScaleTrendTest(GevTrendTestOneParameterAgainstStationary):
class GevShapeTrendTest(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, super().__init__(years, maxima, starting_year,
unconstrained_model_class=NonStationaryShapeTemporalModel, unconstrained_model_class=NonStationaryShapeTemporalModel,
gev_param_name=GevParams.SHAPE, gev_param_name=GevParams.SHAPE,
quantile_level=quantile_level) quantile_level=quantile_level,
fit_method=fit_method)
...@@ -3,6 +3,8 @@ from experiment.eurocode_data.utils import EUROCODE_QUANTILE ...@@ -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 \ from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gev_trend_test_one_parameter import \
GevTrendTestOneParameter, GevTrendTestOneParameterAgainstStationary GevTrendTestOneParameter, GevTrendTestOneParameterAgainstStationary
from extreme_fit.distribution.gev.gev_params import GevParams 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, \ from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel, \
GumbelTemporalModel, NonStationaryLocationGumbelModel, NonStationaryScaleGumbelModel GumbelTemporalModel, NonStationaryLocationGumbelModel, NonStationaryScaleGumbelModel
from root_utils import classproperty from root_utils import classproperty
...@@ -10,11 +12,12 @@ from root_utils import classproperty ...@@ -10,11 +12,12 @@ from root_utils import classproperty
class GumbelVersusGumbel(GevTrendTestOneParameter): 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, super().__init__(years, maxima, starting_year,
unconstrained_model_class=GumbelTemporalModel, unconstrained_model_class=GumbelTemporalModel,
constrained_model_class=GumbelTemporalModel, constrained_model_class=GumbelTemporalModel,
quantile_level=quantile_level) quantile_level=quantile_level,
fit_method=fit_method)
@property @property
def is_significant(self) -> bool: def is_significant(self) -> bool:
...@@ -38,11 +41,13 @@ class GumbelVersusGumbel(GevTrendTestOneParameter): ...@@ -38,11 +41,13 @@ class GumbelVersusGumbel(GevTrendTestOneParameter):
class GevStationaryVersusGumbel(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, super().__init__(years, maxima, starting_year,
unconstrained_model_class=StationaryTemporalModel, unconstrained_model_class=StationaryTemporalModel,
constrained_model_class=GumbelTemporalModel, constrained_model_class=GumbelTemporalModel,
quantile_level=quantile_level) quantile_level=quantile_level,
fit_method=fit_method)
@property @property
def total_number_of_parameters_for_unconstrained_model(self) -> int: def total_number_of_parameters_for_unconstrained_model(self) -> int:
...@@ -62,12 +67,12 @@ class GevStationaryVersusGumbel(GevTrendTestOneParameter): ...@@ -62,12 +67,12 @@ class GevStationaryVersusGumbel(GevTrendTestOneParameter):
class GumbelLocationTrendTest(GevTrendTestOneParameterAgainstStationary): 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, super().__init__(years, maxima, starting_year,
unconstrained_model_class=NonStationaryLocationGumbelModel, unconstrained_model_class=NonStationaryLocationGumbelModel,
gev_param_name=GevParams.LOC, gev_param_name=GevParams.LOC,
quantile_level=quantile_level, quantile_level=quantile_level,
constrained_model_class=GumbelTemporalModel) constrained_model_class=GumbelTemporalModel, fit_method=fit_method)
@property @property
def total_number_of_parameters_for_unconstrained_model(self) -> int: def total_number_of_parameters_for_unconstrained_model(self) -> int:
...@@ -88,12 +93,14 @@ class GumbelLocationTrendTest(GevTrendTestOneParameterAgainstStationary): ...@@ -88,12 +93,14 @@ class GumbelLocationTrendTest(GevTrendTestOneParameterAgainstStationary):
class GumbelScaleTrendTest(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, super().__init__(years, maxima, starting_year,
unconstrained_model_class=NonStationaryScaleGumbelModel, unconstrained_model_class=NonStationaryScaleGumbelModel,
gev_param_name=GevParams.SCALE, gev_param_name=GevParams.SCALE,
quantile_level=quantile_level, quantile_level=quantile_level,
constrained_model_class=GumbelTemporalModel) constrained_model_class=GumbelTemporalModel,
fit_method=fit_method)
def _slope_strength(self): def _slope_strength(self):
return self.unconstrained_estimator_gev_params.time_derivative_of_return_level( return self.unconstrained_estimator_gev_params.time_derivative_of_return_level(
......
from experiment.eurocode_data.utils import EUROCODE_QUANTILE 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 \ from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import \
GevLocationAndScaleTrendTest 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 extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel
from experiment.eurocode_data.utils import EUROCODE_QUANTILE 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.abstract_gev_trend_test import AbstractGevTrendTest
...@@ -20,11 +22,12 @@ class GevTrendTestThreeParameters(AbstractGevTrendTest): ...@@ -20,11 +22,12 @@ class GevTrendTestThreeParameters(AbstractGevTrendTest):
class GevLocationAndScaleTrendTestAgainstGumbel(GevTrendTestThreeParameters): 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, super().__init__(years, maxima, starting_year,
unconstrained_model_class=NonStationaryLocationAndScaleTemporalModel, unconstrained_model_class=NonStationaryLocationAndScaleTemporalModel,
constrained_model_class=GumbelTemporalModel, constrained_model_class=GumbelTemporalModel,
quantile_level=quantile_level) quantile_level=quantile_level,
fit_method=fit_method)
@property @property
def mu1(self): def mu1(self):
......
...@@ -2,6 +2,8 @@ from experiment.eurocode_data.utils import EUROCODE_QUANTILE ...@@ -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.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 \ from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gev_trend_test_one_parameter import \
GevLocationTrendTest, GevScaleTrendTest 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 \ from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \
NonStationaryLocationAndScaleTemporalModel, StationaryTemporalModel, NonStationaryLocationAndScaleGumbelModel, \ NonStationaryLocationAndScaleTemporalModel, StationaryTemporalModel, NonStationaryLocationAndScaleGumbelModel, \
GumbelTemporalModel GumbelTemporalModel
...@@ -19,11 +21,12 @@ class GevTrendTestTwoParameters(AbstractGevTrendTest): ...@@ -19,11 +21,12 @@ class GevTrendTestTwoParameters(AbstractGevTrendTest):
class GevLocationAndScaleTrendTest(GevTrendTestTwoParameters): class GevLocationAndScaleTrendTest(GevTrendTestTwoParameters):
def __init__(self, years, maxima, starting_year, constrained_model_class=StationaryTemporalModel, 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, super().__init__(years, maxima, starting_year,
unconstrained_model_class=NonStationaryLocationAndScaleTemporalModel, unconstrained_model_class=NonStationaryLocationAndScaleTemporalModel,
constrained_model_class=constrained_model_class, constrained_model_class=constrained_model_class,
quantile_level=quantile_level) quantile_level=quantile_level,
fit_method=fit_method)
@property @property
def mu1(self): def mu1(self):
...@@ -51,8 +54,8 @@ class GevLocationAndScaleTrendTest(GevTrendTestTwoParameters): ...@@ -51,8 +54,8 @@ class GevLocationAndScaleTrendTest(GevTrendTestTwoParameters):
class GevLocationAgainstGumbel(GevTrendTestTwoParameters, GevLocationTrendTest): class GevLocationAgainstGumbel(GevTrendTestTwoParameters, GevLocationTrendTest):
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, quantile_level, GumbelTemporalModel) super().__init__(years, maxima, starting_year, quantile_level, GumbelTemporalModel, fit_method=fit_method)
@classproperty @classproperty
def label(self): def label(self):
...@@ -69,8 +72,8 @@ class GevLocationAgainstGumbel(GevTrendTestTwoParameters, GevLocationTrendTest): ...@@ -69,8 +72,8 @@ class GevLocationAgainstGumbel(GevTrendTestTwoParameters, GevLocationTrendTest):
class GevScaleAgainstGumbel(GevTrendTestTwoParameters, GevScaleTrendTest): class GevScaleAgainstGumbel(GevTrendTestTwoParameters, GevScaleTrendTest):
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, quantile_level, GumbelTemporalModel) super().__init__(years, maxima, starting_year, quantile_level, GumbelTemporalModel, fit_method=fit_method)
@classproperty @classproperty
def label(self): def label(self):
......
...@@ -2,6 +2,8 @@ from experiment.eurocode_data.utils import EUROCODE_QUANTILE ...@@ -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 \ from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import \
GevTrendTestTwoParameters GevTrendTestTwoParameters
from extreme_fit.distribution.gev.gev_params import GevParams 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 \ from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \
NonStationaryLocationAndScaleGumbelModel, GumbelTemporalModel NonStationaryLocationAndScaleGumbelModel, GumbelTemporalModel
from root_utils import classproperty from root_utils import classproperty
...@@ -9,11 +11,12 @@ from root_utils import classproperty ...@@ -9,11 +11,12 @@ from root_utils import classproperty
class GumbelLocationAndScaleTrendTest(GevTrendTestTwoParameters): 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, super().__init__(years, maxima, starting_year,
unconstrained_model_class=NonStationaryLocationAndScaleGumbelModel, unconstrained_model_class=NonStationaryLocationAndScaleGumbelModel,
constrained_model_class=GumbelTemporalModel, constrained_model_class=GumbelTemporalModel,
quantile_level=quantile_level) quantile_level=quantile_level,
fit_method=fit_method)
@property @property
def total_number_of_parameters_for_unconstrained_model(self) -> int: def total_number_of_parameters_for_unconstrained_model(self) -> int:
......
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