Skip to content

Commit

Permalink
[BUG] pass user passed parameters to ForecastX to underlying estima…
Browse files Browse the repository at this point in the history
…tors (#4391)

Fixes #4386 

Before this PR, `predict_interval` or `predict_quantiles` of `ForecastX` did not pass `coverage` or `alpha` parameters passed by user to the corresponding methods of `self.forecaster_y_`. This PR addresses this bug.

##### before

```pycon
>>> pipe.predict_interval(fh=fh, X=X_test.drop(columns=columns), coverage=0.95)
          Coverage              
               0.9              
             lower         upper
1960  69583.430473  70587.653223
1961  69569.814972  70576.864647
1962  72161.834476  73168.900067
>>> pipe.predict_quantiles(fh=fh, X=X_test.drop(columns=columns), alpha=[0.25, 0.75])
         Quantiles              
              0.05          0.95
1960  69583.430473  70587.653223
1961  69569.814972  70576.864647
1962  72161.834476  73168.900067
```

##### after

```pycon
>>> pipe.predict_interval(fh=fh, X=X_test.drop(columns=columns), coverage=0.95)
          Coverage              
              0.95              
             lower         upper
1960  69487.239242  70683.844453
1961  69473.352959  70673.326660
1962  72065.370939  73265.363604
>>> pipe.predict_quantiles(fh=fh, X=X_test.drop(columns=columns), alpha=[0.25, 0.75])
         Quantiles              
              0.25          0.75
1960  69879.645730  70291.437965
1961  69866.864086  70279.815532
1962  72458.888285  72871.846258
```

There are two other methods of `ForecastX` which does not use passed parameters, viz. `cov` in `_predict_var` and `marginal` in `_predict_proba`. However, these are not used even in `BaseForecaster`. I've made changes (similar to above two) so that these parameters are always passed, whether or not used by any estimator.

Tests coverage will be added by other PR, see discussion there:

* #4393
* #4394
  • Loading branch information
yarnabrina committed Mar 26, 2023
1 parent 5bf0ac3 commit fd70b59
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 4 deletions.
9 changes: 9 additions & 0 deletions .all-contributorsrc
Expand Up @@ -2136,6 +2136,15 @@
"code",
"maintenance"
]
},
{
"login": "yarnabrina",
"name": "Anirban Ray",
"avatar_url": "https://avatars.githubusercontent.com/u/39331844?v=4",
"profile": "https://github.com/yarnabrina/",
"contributions": [
"bug"
]
}
]
}
8 changes: 4 additions & 4 deletions sktime/forecasting/compose/_pipeline.py
Expand Up @@ -1416,7 +1416,7 @@ def _predict_interval(self, fh, X=None, coverage=0.90):
quantile forecasts at alpha = 0.5 - c/2, 0.5 + c/2 for c in coverage.
"""
X = self._get_forecaster_X_prediction(fh=fh, X=X)
y_pred = self.forecaster_y_.predict_interval(fh=fh, X=X)
y_pred = self.forecaster_y_.predict_interval(fh=fh, X=X, coverage=coverage)
return y_pred

def _predict_quantiles(self, fh, X, alpha):
Expand Down Expand Up @@ -1446,7 +1446,7 @@ def _predict_quantiles(self, fh, X, alpha):
at quantile probability in second col index, for the row index.
"""
X = self._get_forecaster_X_prediction(fh=fh, X=X)
y_pred = self.forecaster_y_.predict_quantiles(fh=fh, X=X)
y_pred = self.forecaster_y_.predict_quantiles(fh=fh, X=X, alpha=alpha)
return y_pred

def _predict_var(self, fh=None, X=None, cov=False):
Expand Down Expand Up @@ -1486,7 +1486,7 @@ def _predict_var(self, fh=None, X=None, cov=False):
Note: no covariance forecasts are returned between different variables.
"""
X = self._get_forecaster_X_prediction(fh=fh, X=X)
y_pred = self.forecaster_y_.predict_var(fh=fh, X=X)
y_pred = self.forecaster_y_.predict_var(fh=fh, X=X, cov=cov)
return y_pred

# todo: does not work properly for multivariate or hierarchical
Expand Down Expand Up @@ -1524,7 +1524,7 @@ def _predict_proba(self, fh, X, marginal=True, legacy_interface=None):
"""
X = self._get_forecaster_X_prediction(fh=fh, X=X)
y_pred = self.forecaster_y_.predict_proba(
fh=fh, X=X, legacy_interface=legacy_interface
fh=fh, X=X, marginal=marginal, legacy_interface=legacy_interface
)
return y_pred

Expand Down

0 comments on commit fd70b59

Please sign in to comment.