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

[TREND ANALYSIS] add test for the gev params

parent 98105279
No related merge requests found
Showing with 19 additions and 2 deletions
+19 -2
...@@ -70,14 +70,18 @@ class GevParams(ExtremeParams): ...@@ -70,14 +70,18 @@ class GevParams(ExtremeParams):
@property @property
def mean(self): def mean(self):
if self.shape >= 1: if self.has_undefined_parameters:
return np.nan
elif self.shape >= 1:
return np.inf return np.inf
else: else:
return self.location + self.scale * (self.g(k=1) - 1) / self.shape return self.location + self.scale * (self.g(k=1) - 1) / self.shape
@property @property
def variance(self): def variance(self):
if self.shape >= 0.5: if self.has_undefined_parameters:
return np.nan
elif self.shape >= 0.5:
return np.inf return np.inf
else: else:
return ((self.scale / self.shape) ** 2) * (self.g(k=2) - self.g(k=1) ** 2) return ((self.scale / self.shape) ** 2) * (self.g(k=2) - self.g(k=1) ** 2)
......
...@@ -20,6 +20,19 @@ class TestGevParams(unittest.TestCase): ...@@ -20,6 +20,19 @@ class TestGevParams(unittest.TestCase):
q = gev_params.quantile(p) q = gev_params.quantile(p)
self.assertTrue(np.isnan(q)) self.assertTrue(np.isnan(q))
def test_has_undefined_parameter(self):
gev_params = GevParams(loc=1.0, shape=1.0, scale=-1.0)
self.assertTrue(gev_params.has_undefined_parameters)
for k, v in gev_params.indicator_name_to_value.items():
self.assertTrue(np.isnan(v), msg="{} is not equal to np.nan".format(k))
def test_limit_cases(self):
gev_params = GevParams(loc=1.0, shape=1.0, scale=1.0)
self.assertEqual(gev_params.mean, np.inf)
gev_params = GevParams(loc=1.0, shape=0.5, scale=1.0)
self.assertEqual(gev_params.variance, np.inf)
self.assertEqual(gev_params.std, np.inf)
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()
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