示例#1
0
 def test_nan_forecasts_consistency(self):
     rs = np.random.RandomState(123)
     # make some forecasts entirely missing
     self.forecasts[rs.rand(*self.obs.shape) > 0.5] = np.nan
     assert_allclose(crps_ensemble(self.obs, self.forecasts), _crps_ensemble_vectorized(self.obs, self.forecasts))
     # forecasts shaped like obs
     forecasts = self.forecasts[:, 0]
     assert_allclose(crps_ensemble(self.obs, forecasts), _crps_ensemble_vectorized(self.obs, forecasts))
示例#2
0
 def test_nan_forecasts_consistency(self):
     rs = np.random.RandomState(123)
     # make some forecasts entirely missing
     self.forecasts[rs.rand(*self.obs.shape) > 0.5] = np.nan
     assert_allclose(crps_ensemble(self.obs, self.forecasts),
                     _crps_ensemble_vectorized(self.obs, self.forecasts))
     # forecasts shaped like obs
     forecasts = self.forecasts[:, 0]
     assert_allclose(crps_ensemble(self.obs, forecasts),
                     _crps_ensemble_vectorized(self.obs, forecasts))
示例#3
0
 def test_crps_toy_examples(self):
     examples = [
         (0, 0, 0.0),
         (0, 1, 1.0),
         (-1, 0, 1.0),
         (0, [-1], 1.0),
         (0, [0], 0.0),
         (0, [1], 1.0),
         (0, [0, 0], 0.0),
         (0, [0, 1], 0.25),
         (0, [1, 0], 0.25),
         (0, [1, 1], 1.0),
         (2, [0, 1], 1.25),
         (0, [-1, 1], 0.5),
         (0, [0, 0, 1], 1.0 / 9),
         (1, [0, 0, 1], 4.0 / 9),
         (0, [-1, 0, 0, 1], 1.0 / 8),
     ]
     for x, ensemble, expected in examples:
         self.assertAlmostEqual(crps_ensemble(x, ensemble), expected)
         self.assertAlmostEqual(_crps_ensemble_vectorized(x, ensemble), expected)
示例#4
0
 def test_crps_toy_examples(self):
     examples = [
         (0, 0, 0.0),
         (0, 1, 1.0),
         (-1, 0, 1.0),
         (0, [-1], 1.0),
         (0, [0], 0.0),
         (0, [1], 1.0),
         (0, [0, 0], 0.0),
         (0, [0, 1], 0.25),
         (0, [1, 0], 0.25),
         (0, [1, 1], 1.0),
         (2, [0, 1], 1.25),
         (0, [-1, 1], 0.5),
         (0, [0, 0, 1], 1.0 / 9),
         (1, [0, 0, 1], 4.0 / 9),
         (0, [-1, 0, 0, 1], 1.0 / 8),
     ]
     for x, ensemble, expected in examples:
         self.assertAlmostEqual(crps_ensemble(x, ensemble), expected)
         self.assertAlmostEqual(_crps_ensemble_vectorized(x, ensemble),
                                expected)
示例#5
0
 def test_nan_observations_consistency(self):
     rs = np.random.RandomState(123)
     self.obs[rs.rand(*self.obs.shape) > 0.5] = np.nan
     assert_allclose(
         crps_ensemble(self.obs, self.forecasts),
         _crps_ensemble_vectorized(self.obs, self.forecasts))
示例#6
0
 def test_high_dimensional_consistency(self):
     obs = np.random.randn(10, 20)
     forecasts = np.random.randn(10, 20, 5)
     assert_allclose(crps_ensemble(obs, forecasts),
                     _crps_ensemble_vectorized(obs, forecasts))
示例#7
0
 def test_nan_observations_consistency(self):
     rs = np.random.RandomState(123)
     self.obs[rs.rand(*self.obs.shape) > 0.5] = np.nan
     assert_allclose(crps_ensemble(self.obs, self.forecasts),
                     _crps_ensemble_vectorized(self.obs, self.forecasts))
示例#8
0
 def test_high_dimensional_consistency(self):
     obs = np.random.randn(10, 20)
     forecasts = np.random.randn(10, 20, 5)
     assert_allclose(crps_ensemble(obs, forecasts),
                     _crps_ensemble_vectorized(obs, forecasts))