Skip to content

Commit 2ab62bd

Browse files
cnhwldennisbader
andauthored
Fix/Quantile_Label_Name (#2887)
* increase the decimal places to 3 * Update Changelog * Update likelihood models * Update test files * update changelog --------- Co-authored-by: Dennis Bader <[email protected]>
1 parent 549d9db commit 2ab62bd

File tree

10 files changed

+69
-67
lines changed

10 files changed

+69
-67
lines changed

CHANGELOG.md

Lines changed: 17 additions & 17 deletions
Large diffs are not rendered by default.

darts/tests/models/forecasting/test_ensemble_models.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -331,9 +331,9 @@ def test_predict_likelihood_parameters_univariate_naive_ensemble(self):
331331
assert pred_ens.time_index == pred_mix_ens.time_index
332332
assert all(pred_ens.components == pred_mix_ens.components)
333333
assert (
334-
pred_ens["sine_q0.05"].values()
335-
< pred_ens["sine_q0.50"].values()
336-
< pred_ens["sine_q0.95"].values()
334+
pred_ens["sine_q0.050"].values()
335+
< pred_ens["sine_q0.500"].values()
336+
< pred_ens["sine_q0.950"].values()
337337
)
338338

339339
@pytest.mark.skipif(not TORCH_AVAILABLE, reason="requires torch")
@@ -372,24 +372,24 @@ def test_predict_likelihood_parameters_multivariate_naive_ensemble(self):
372372
assert all(
373373
pred_ens.components
374374
== [
375-
"sine_q0.05",
376-
"sine_q0.50",
377-
"sine_q0.95",
378-
"linear_q0.05",
379-
"linear_q0.50",
380-
"linear_q0.95",
375+
"sine_q0.050",
376+
"sine_q0.500",
377+
"sine_q0.950",
378+
"linear_q0.050",
379+
"linear_q0.500",
380+
"linear_q0.950",
381381
]
382382
)
383383
assert all(pred_ens.components == pred_mix_ens.components)
384384
assert (
385-
pred_ens["sine_q0.05"].values()
386-
< pred_ens["sine_q0.50"].values()
387-
< pred_ens["sine_q0.95"].values()
385+
pred_ens["sine_q0.050"].values()
386+
< pred_ens["sine_q0.500"].values()
387+
< pred_ens["sine_q0.950"].values()
388388
)
389389
assert (
390-
pred_ens["linear_q0.05"].values()
391-
< pred_ens["linear_q0.50"].values()
392-
< pred_ens["linear_q0.95"].values()
390+
pred_ens["linear_q0.050"].values()
391+
< pred_ens["linear_q0.500"].values()
392+
< pred_ens["linear_q0.950"].values()
393393
)
394394

395395
@pytest.mark.skipif(not TORCH_AVAILABLE, reason="requires torch")

darts/tests/models/forecasting/test_probabilistic_models.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -829,12 +829,12 @@ def test_predict_likelihood_parameters_univariate_torch_models(
829829
QuantileRegression([0.05, 0.5, 0.95]),
830830
[-1.67, 0, 1.67],
831831
[
832-
"dummy_0_q0.05",
833-
"dummy_0_q0.50",
834-
"dummy_0_q0.95",
835-
"dummy_1_q0.05",
836-
"dummy_1_q0.50",
837-
"dummy_1_q0.95",
832+
"dummy_0_q0.050",
833+
"dummy_0_q0.500",
834+
"dummy_0_q0.950",
835+
"dummy_1_q0.050",
836+
"dummy_1_q0.500",
837+
"dummy_1_q0.950",
838838
],
839839
),
840840
],

darts/tests/models/forecasting/test_regression_ensemble_model.py

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -862,10 +862,10 @@ def test_predict_likelihood_parameters_univariate_regression_ensemble(self):
862862
ensemble.fit(self.sine_series)
863863
pred_ens = ensemble.predict(n=4, predict_likelihood_parameters=True)
864864

865-
assert all(pred_ens.components == ["sine_q0.05", "sine_q0.50", "sine_q0.95"])
865+
assert all(pred_ens.components == ["sine_q0.050", "sine_q0.500", "sine_q0.950"])
866866
assert all(
867-
pred_ens["sine_q0.05"].values() < pred_ens["sine_q0.50"].values()
868-
) and all(pred_ens["sine_q0.50"].values() < pred_ens["sine_q0.95"].values())
867+
pred_ens["sine_q0.050"].values() < pred_ens["sine_q0.500"].values()
868+
) and all(pred_ens["sine_q0.500"].values() < pred_ens["sine_q0.950"].values())
869869

870870
def test_predict_likelihood_parameters_multivariate_regression_ensemble(self):
871871
quantiles = [0.05, 0.5, 0.95]
@@ -894,20 +894,22 @@ def test_predict_likelihood_parameters_multivariate_regression_ensemble(self):
894894
assert all(
895895
pred_ens.components
896896
== [
897-
"sine_q0.05",
898-
"sine_q0.50",
899-
"sine_q0.95",
900-
"linear_q0.05",
901-
"linear_q0.50",
902-
"linear_q0.95",
897+
"sine_q0.050",
898+
"sine_q0.500",
899+
"sine_q0.950",
900+
"linear_q0.050",
901+
"linear_q0.500",
902+
"linear_q0.950",
903903
]
904904
)
905905
assert all(
906-
pred_ens["sine_q0.05"].values() < pred_ens["sine_q0.50"].values()
907-
) and all(pred_ens["sine_q0.50"].values() < pred_ens["sine_q0.95"].values())
906+
pred_ens["sine_q0.050"].values() < pred_ens["sine_q0.500"].values()
907+
) and all(pred_ens["sine_q0.500"].values() < pred_ens["sine_q0.950"].values())
908908
assert all(
909-
pred_ens["linear_q0.05"].values() < pred_ens["linear_q0.50"].values()
910-
) and all(pred_ens["linear_q0.50"].values() < pred_ens["linear_q0.95"].values())
909+
pred_ens["linear_q0.050"].values() < pred_ens["linear_q0.500"].values()
910+
) and all(
911+
pred_ens["linear_q0.500"].values() < pred_ens["linear_q0.950"].values()
912+
)
911913

912914
def test_wrong_model_creation_params(self):
913915
"""Since `multi_models=False` requires to shift the regression model lags in the past (outside of the

darts/tests/models/forecasting/test_sf_models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ def test_probabilistic_support(self, config):
203203
assert pred_params.n_samples == 1
204204
# one component for each quantile
205205
name = series.components[0]
206-
q_names = [name + f"_{q_name}" for q_name in ["q0.10", "q0.50", "q0.90"]]
206+
q_names = [name + f"_{q_name}" for q_name in ["q0.100", "q0.500", "q0.900"]]
207207
assert list(pred_params.components) == q_names
208208

209209
# center quantile is the mean

darts/tests/models/forecasting/test_sklearn_models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1682,7 +1682,7 @@ def test_get_estimator_quantile(self, config):
16821682
pred_sub_model = sub_model.predict(dummy_feats)[0]
16831683
assert (
16841684
pred_sub_model
1685-
== pred[f"{ts.components[j]}_q{q:.2f}"].values()[i][0]
1685+
== pred[f"{ts.components[j]}_q{q:.3f}"].values()[i][0]
16861686
)
16871687

16881688
def test_get_estimator_exceptions(self, caplog):

darts/tests/utils/historical_forecasts/test_historical_forecasts.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2593,7 +2593,7 @@ def test_predict_likelihood_parameters(self, model_type):
25932593

25942594
n = 3
25952595
target_name = self.ts_pass_train.components[0]
2596-
qs_expected = ["q0.05", "q0.40", "q0.50", "q0.60", "q0.95"]
2596+
qs_expected = ["q0.050", "q0.400", "q0.500", "q0.600", "q0.950"]
25972597
qs_expected = pd.Index([target_name + "_" + q for q in qs_expected])
25982598
# check that it works with retrain
25992599
model = self.create_model(1, model_type=model_type)

darts/tests/utils/test_utils.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -612,10 +612,10 @@ def test_likelihood_component_names(self):
612612
@pytest.mark.parametrize(
613613
"config",
614614
[
615-
(0.25, "a_q0.25"),
616-
(0.2501, "a_q0.25"),
617-
([0.25], ["a_q0.25"]),
618-
([0.25, 0.75], ["a_q0.25", "a_q0.75"]),
615+
(0.25, "a_q0.250"),
616+
(0.2501, "a_q0.250"),
617+
([0.25], ["a_q0.250"]),
618+
([0.25, 0.75], ["a_q0.250", "a_q0.750"]),
619619
],
620620
)
621621
def test_quantile_names(self, config):
@@ -626,10 +626,10 @@ def test_quantile_names(self, config):
626626
@pytest.mark.parametrize(
627627
"config",
628628
[
629-
((0.25, 0.5), "a_q0.25_q0.50"),
630-
((0.2501, 0.4999), "a_q0.25_q0.50"),
631-
([(0.25, 0.5)], ["a_q0.25_q0.50"]),
632-
([(0.25, 0.50), (0.6, 0.75)], ["a_q0.25_q0.50", "a_q0.60_q0.75"]),
629+
((0.25, 0.5), "a_q0.250_q0.500"),
630+
((0.2501, 0.4999), "a_q0.250_q0.500"),
631+
([(0.25, 0.5)], ["a_q0.250_q0.500"]),
632+
([(0.25, 0.50), (0.6, 0.75)], ["a_q0.250_q0.500", "a_q0.600_q0.750"]),
633633
],
634634
)
635635
def test_quantile_interval_names(self, config):

darts/timeseries.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4783,7 +4783,7 @@ def quantile(self, q: Union[float, Sequence[float]] = 0.5, **kwargs) -> Self:
47834783
)
47844784

47854785
# component names
4786-
cnames = [f"{comp}_q{q_i:.2f}" for comp in self.components for q_i in q]
4786+
cnames = [f"{comp}_q{q_i:.3f}" for comp in self.components for q_i in q]
47874787

47884788
# get quantiles of shape (n quantiles, n times, n components)
47894789
new_data = np.quantile(self._values, q=q, axis=2, **kwargs)

darts/utils/likelihood_models/base.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,9 +157,9 @@ def quantile_names(q: Union[float, list[float]], component: Optional[str] = None
157157
# predicted quantile text format
158158
comp = f"{component}_" if component is not None else ""
159159
if isinstance(q, float):
160-
return f"{comp}q{q:.2f}"
160+
return f"{comp}q{q:.3f}"
161161
else:
162-
return [f"{comp}q{q_i:.2f}" for q_i in q]
162+
return [f"{comp}q{q_i:.3f}" for q_i in q]
163163

164164

165165
def quantile_interval_names(
@@ -178,6 +178,6 @@ def quantile_interval_names(
178178
# predicted quantile text format
179179
comp = f"{component}_" if component is not None else ""
180180
if isinstance(q_interval, tuple):
181-
return f"{comp}q{q_interval[0]:.2f}_q{q_interval[1]:.2f}"
181+
return f"{comp}q{q_interval[0]:.3f}_q{q_interval[1]:.3f}"
182182
else:
183-
return [f"{comp}q{q_lo:.2f}_q{q_hi:.2f}" for q_lo, q_hi in q_interval]
183+
return [f"{comp}q{q_lo:.3f}_q{q_hi:.3f}" for q_lo, q_hi in q_interval]

0 commit comments

Comments
 (0)