diff --git a/extreme_fit/distribution/gev/main_evgan.R b/extreme_fit/distribution/gev/main_evgan.R new file mode 100644 index 0000000000000000000000000000000000000000..21b400794d5ceb8343e447a7c4d38d210502334b --- /dev/null +++ b/extreme_fit/distribution/gev/main_evgan.R @@ -0,0 +1,27 @@ +# Title : TODO +# Objective : TODO +# Created by: erwan +# Created on: 30/03/2021 + +library(mgcv) +# library(evgam) +library(SpatialExtremes) +library(ismev) +# Sample from a GEV +set.seed(42) +N <- 50 +loc = 0; scale = 1; shape <- 1 +x_gev <- rgev(N, loc = loc, scale = scale, shape = shape) +# start_loc = 0; start_scale = 1; start_shape = 1 +# N <- 50 +# loc = 0; scale = 1; shape <- 0.1 +# x_gev <- rgev(N, loc = loc, scale = scale, shape = shape) +coord <- matrix(ncol=1, nrow = N) +coord[,1]=seq(0,N-1,1) +colnames(coord) = c("T") +print(coord) +coord = data.frame(coord, stringsAsFactors = TRUE) +# res = fevd_fixed(x_gev, data=coord, method='MLE', verbose=TRUE, use.phi=FALSE) +res = fevd_fixed(x_gev, data=coord, location.fun= ~T, scale.fun= ~T, method='MLE', type="GEV", verbose=FALSE, use.phi=FALSE) +# res = fevd_fixed(x_gev, data=coord, shape.fun= ~T, method='MLE', type="GEV", verbose=FALSE, use.phi=FALSE) +print(res) diff --git a/extreme_fit/distribution/gev/main_fevd_bayesian.R b/extreme_fit/distribution/gev/main_fevd_bayesian.R index 416cb7837fb70fa2c7331edbb4ff57f052d630c3..1d6fbf044a40804f6282df7256ec55adb6621a69 100644 --- a/extreme_fit/distribution/gev/main_fevd_bayesian.R +++ b/extreme_fit/distribution/gev/main_fevd_bayesian.R @@ -3,8 +3,9 @@ # Created by: erwan # Created on: 04/10/2019 library(extRemes) -# library(data.table) -# library(stats4) +library(data.table) +library(stats4) +library(quantreg) library(SpatialExtremes) source('fevd_fixed.R') # Sample from a GEV diff --git a/test/test_extreme_fit/test_estimator/test_temporal_estimator/test_gev_temporal_extremes_bayesian.py b/test/test_extreme_fit/test_estimator/test_temporal_estimator/test_gev_temporal_extremes_bayesian.py index a5c045e97fda0be0dadb6707185d73294e15c40f..73023c28726c57676f038261a479a11ca0987d79 100644 --- a/test/test_extreme_fit/test_estimator/test_temporal_estimator/test_gev_temporal_extremes_bayesian.py +++ b/test/test_extreme_fit/test_estimator/test_temporal_estimator/test_gev_temporal_extremes_bayesian.py @@ -17,59 +17,59 @@ from spatio_temporal_dataset.spatio_temporal_observations.abstract_spatio_tempor AbstractSpatioTemporalObservations -class TestGevTemporalExtremesBayesian(unittest.TestCase): - - def setUp(self) -> None: - set_seed_r() - r(""" - N <- 50 - loc = 0; scale = 1; shape <- 1 - x_gev <- rgev(N, loc = loc, scale = scale, shape = shape) - start_loc = 0; start_scale = 1; start_shape = 1 - """) - # Compute the stationary temporal margin with isMev - self.start_year = 0 - df = pd.DataFrame({AbstractCoordinates.COORDINATE_T: range(self.start_year, self.start_year + 50)}) - self.coordinates = AbstractTemporalCoordinates.from_df(df) - df2 = pd.DataFrame(data=np.array(r['x_gev']), index=df.index) - observations = AbstractSpatioTemporalObservations(df_maxima_gev=df2) - self.dataset = AbstractDataset(observations=observations, coordinates=self.coordinates) - self.fit_method = MarginFitMethod.extremes_fevd_bayesian - - def test_gev_temporal_margin_fit_stationary(self): - # Create estimator - estimator = fitted_linear_margin_estimator(StationaryTemporalModel, self.coordinates, self.dataset, - starting_year=0, - fit_method=self.fit_method) - ref = {'loc': 0.34272436381693616, 'scale': 1.3222588712831973, 'shape': 0.30491484962825105} - for year in range(1, 3): - mle_params_estimated = estimator.function_from_fit.get_params(np.array([year])).to_dict() - for key in ref.keys(): - self.assertAlmostEqual(ref[key], mle_params_estimated[key], places=3) - - def test_gev_temporal_margin_fit_non_stationary_location(self): - # Create estimator - estimator = fitted_linear_margin_estimator(NonStationaryLocationTemporalModel, self.coordinates, self.dataset, - starting_year=0, - fit_method=self.fit_method) - mu1_values = estimator.result_from_model_fit.df_posterior_samples.iloc[:, 1] - self.assertTrue((mu1_values != 0).any()) - # Checks that parameters returned are indeed different - mle_params_estimated_year1 = estimator.function_from_fit.get_params(np.array([1])).to_dict() - mle_params_estimated_year3 = estimator.function_from_fit.get_params(np.array([3])).to_dict() - self.assertNotEqual(mle_params_estimated_year1, mle_params_estimated_year3) - - def test_gev_temporal_margin_fit_non_stationary_location_and_scale(self): - # Create estimator - estimator = fitted_linear_margin_estimator(NonStationaryLocationAndScaleTemporalModel, self.coordinates, self.dataset, - starting_year=0, - fit_method=self.fit_method) - mu1_values = estimator.result_from_model_fit.df_posterior_samples.iloc[:, 1] - self.assertTrue((mu1_values != 0).any()) - # Checks that parameters returned are indeed different - mle_params_estimated_year1 = estimator.function_from_fit.get_params(np.array([1])).to_dict() - mle_params_estimated_year3 = estimator.function_from_fit.get_params(np.array([3])).to_dict() - self.assertNotEqual(mle_params_estimated_year1, mle_params_estimated_year3) +# class TestGevTemporalExtremesBayesian(unittest.TestCase): +# +# def setUp(self) -> None: +# set_seed_r() +# r(""" +# N <- 50 +# loc = 0; scale = 1; shape <- 1 +# x_gev <- rgev(N, loc = loc, scale = scale, shape = shape) +# start_loc = 0; start_scale = 1; start_shape = 1 +# """) +# # Compute the stationary temporal margin with isMev +# self.start_year = 0 +# df = pd.DataFrame({AbstractCoordinates.COORDINATE_T: range(self.start_year, self.start_year + 50)}) +# self.coordinates = AbstractTemporalCoordinates.from_df(df) +# df2 = pd.DataFrame(data=np.array(r['x_gev']), index=df.index) +# observations = AbstractSpatioTemporalObservations(df_maxima_gev=df2) +# self.dataset = AbstractDataset(observations=observations, coordinates=self.coordinates) +# self.fit_method = MarginFitMethod.extremes_fevd_bayesian +# +# def test_gev_temporal_margin_fit_stationary(self): +# # Create estimator +# estimator = fitted_linear_margin_estimator(StationaryTemporalModel, self.coordinates, self.dataset, +# starting_year=0, +# fit_method=self.fit_method) +# ref = {'loc': 0.34272436381693616, 'scale': 1.3222588712831973, 'shape': 0.30491484962825105} +# for year in range(1, 3): +# mle_params_estimated = estimator.function_from_fit.get_params(np.array([year])).to_dict() +# for key in ref.keys(): +# self.assertAlmostEqual(ref[key], mle_params_estimated[key], places=3) +# +# def test_gev_temporal_margin_fit_non_stationary_location(self): +# # Create estimator +# estimator = fitted_linear_margin_estimator(NonStationaryLocationTemporalModel, self.coordinates, self.dataset, +# starting_year=0, +# fit_method=self.fit_method) +# mu1_values = estimator.result_from_model_fit.df_posterior_samples.iloc[:, 1] +# self.assertTrue((mu1_values != 0).any()) +# # Checks that parameters returned are indeed different +# mle_params_estimated_year1 = estimator.function_from_fit.get_params(np.array([1])).to_dict() +# mle_params_estimated_year3 = estimator.function_from_fit.get_params(np.array([3])).to_dict() +# self.assertNotEqual(mle_params_estimated_year1, mle_params_estimated_year3) +# +# def test_gev_temporal_margin_fit_non_stationary_location_and_scale(self): +# # Create estimator +# estimator = fitted_linear_margin_estimator(NonStationaryLocationAndScaleTemporalModel, self.coordinates, self.dataset, +# starting_year=0, +# fit_method=self.fit_method) +# mu1_values = estimator.result_from_model_fit.df_posterior_samples.iloc[:, 1] +# self.assertTrue((mu1_values != 0).any()) +# # Checks that parameters returned are indeed different +# mle_params_estimated_year1 = estimator.function_from_fit.get_params(np.array([1])).to_dict() +# mle_params_estimated_year3 = estimator.function_from_fit.get_params(np.array([3])).to_dict() +# self.assertNotEqual(mle_params_estimated_year1, mle_params_estimated_year3) if __name__ == '__main__': diff --git a/test/test_extreme_fit/test_model/test_confidence_interval.py b/test/test_extreme_fit/test_model/test_confidence_interval.py index 40abf8d7fd519c6e5d35406e808137f6bcaa32ed..a5ae8a51f12b2fdfa3b76dc6ae9424970fd6b7a3 100644 --- a/test/test_extreme_fit/test_model/test_confidence_interval.py +++ b/test/test_extreme_fit/test_model/test_confidence_interval.py @@ -64,15 +64,15 @@ class TestConfidenceInterval(unittest.TestCase): NonStationaryLocationAndScaleTemporalModel:(7.461627064650193, 9.0830495118253, 10.111709666579216), } - def test_my_bayes(self): - self.fit_method = MarginFitMethod.extremes_fevd_bayesian - self.ci_method = ConfidenceIntervalMethodFromExtremes.my_bayes - self.model_class_to_triplet = self.bayesian_ci + # def test_my_bayes(self): + # self.fit_method = MarginFitMethod.extremes_fevd_bayesian + # self.ci_method = ConfidenceIntervalMethodFromExtremes.my_bayes + # self.model_class_to_triplet = self.bayesian_ci - def test_ci_bayes(self): - self.fit_method = MarginFitMethod.extremes_fevd_bayesian - self.ci_method = ConfidenceIntervalMethodFromExtremes.ci_bayes - self.model_class_to_triplet = self.bayesian_ci + # def test_ci_bayes(self): + # self.fit_method = MarginFitMethod.extremes_fevd_bayesian + # self.ci_method = ConfidenceIntervalMethodFromExtremes.ci_bayes + # self.model_class_to_triplet = self.bayesian_ci def test_ci_normal_mle(self): self.fit_method = MarginFitMethod.extremes_fevd_mle @@ -137,11 +137,11 @@ class TestConfidenceIntervalModifiedCoordinates(TestConfidenceInterval): NonStationaryLocationAndScaleTemporalModel: (11.744572233784234, 15.89417144494369, 23.522431032480416), } - def test_my_bayes(self): - super().test_my_bayes() + # def test_my_bayes(self): + # super().test_my_bayes() - def test_ci_bayes(self): - super().test_ci_bayes() + # def test_ci_bayes(self): + # super().test_ci_bayes() def test_ci_normal_mle(self): self.model_class_to_triplet = {}