def test_mad(self): """Test gesd on almost flat data.""" number_outliers, suspicious_indexes, test_statistics, critical_values, all_z_scores = gesd( self.series, mad=True) assert 0 == number_outliers assert [] == suspicious_indexes assert [] == test_statistics assert [] == critical_values assert [] == all_z_scores
def test_flat(self): """Test gesd on flat data.""" number_outliers, suspicious_indexes, test_statistics, critical_values, all_z_scores = gesd( [1] * 20) assert 0 == number_outliers assert [] == suspicious_indexes assert [] == test_statistics assert [] == critical_values assert [] == all_z_scores
def test_standard(self): """Test gesd on almost flat data.""" number_outliers, suspicious_indexes, _, _, _ = gesd(self.series) assert 1 == number_outliers assert [203] == suspicious_indexes
def test_mad(self): """ Test MAD z score. """ number_outliers, suspicious_indexes, test_statistics, critical_values, all_z_scores = gesd( self.ROSNER, mad=True) assert 4 == number_outliers assert np.array_equal(suspicious_indexes[:number_outliers], self.CANONICAL_INDEXES[:number_outliers])
def test_significance_level_gt_one(self): """Test invalid significance_level.""" with pytest.raises(ValueError, match=r"invalid significance_level"): gesd([1] * 20, significance_level=1)
def test_insufficient_data(self): """Test insufficient data.""" with pytest.raises(ValueError, match=r"max_outliers.* <= length"): gesd([1]) with pytest.raises(ValueError, match=r"max_outliers.* <= length"): gesd([1] * 10)
def test_canonical(self): """Test gesd implementation.""" number_outliers, suspicious_indexes, test_statistics, critical_values, all_z_scores = gesd( self.ROSNER) assert 3 == number_outliers assert np.array_equal(suspicious_indexes, self.CANONICAL_INDEXES) assert all( np.isclose(self.CANONICAL_STATS, np.fabs(test_statistics), rtol=0.001)) assert all( np.isclose(self.CANONICAL_CRITICAL, critical_values, rtol=0.001))
def test_max_outliers(self): """Test insufficient data.""" with pytest.raises(ValueError, match=r"max_outliers.* must be >= 1"): gesd([1], 0) with pytest.raises(ValueError, match=r"max_outliers.* must be >= 1"): gesd([1], -1)
def test_triple_max_10(self): """Test gesd on flat data.""" number_outliers, suspicious_indexes, test_statistics, critical_values, all_z_scores = gesd( TRIPLE, mad=True) assert 3 == number_outliers assert [7, 20, 30] == suspicious_indexes[:3]
def test_single_max_10(self): """Test gesd on flat data.""" number_outliers, suspicious_indexes, test_statistics, critical_values, all_z_scores = gesd( SINGLE, mad=True) assert 10 == number_outliers assert 7 == suspicious_indexes[0]
def test_double_max_10(self): """Test gesd on flat data.""" number_outliers, suspicious_indexes, test_statistics, critical_values, all_z_scores = gesd( DOUBLE, max_outliers=2, mad=True) assert 2 == number_outliers assert [7, 20] == suspicious_indexes
def test_double_max_10(self): """Test gesd on flat data.""" number_outliers, suspicious_indexes, test_statistics, critical_values, all_z_scores = gesd( DOUBLE) assert 2 == number_outliers assert 7 == suspicious_indexes[0] assert 20 == suspicious_indexes[1]
def test_no_data(self): """Test no data.""" with pytest.raises(ValueError, match=r"No Data"): gesd(None) with pytest.raises(ValueError, match=r"No Data"): gesd([])
def test_single(self): """Test gesd on flat data.""" number_outliers, suspicious_indexes, test_statistics, critical_values, all_z_scores = gesd( SINGLE, max_outliers=1) assert 1 == number_outliers assert [7] == suspicious_indexes
def test_mad(self, mad_series): """Test gesd on real data with Median Absolute Deviation.""" number_outliers, suspicious_indexes, _, _, _ = gesd(mad_series, mad=True) assert 2 == number_outliers assert [90, 4, 27, 37, 64, 78, 74, 88, 47, 60] == suspicious_indexes
def test_standard(self, real_series): """Test gesd on real data with standard.""" number_outliers, suspicious_indexes, _, _, _ = gesd(real_series) assert 2 == number_outliers assert [90, 4, 27, 88, 37, 64, 126, 78, 74, 47] == suspicious_indexes