Skip to content

Commit

Permalink
Fixes #140 (hopefully)
Browse files Browse the repository at this point in the history
  • Loading branch information
tgsmith61591 committed Jul 12, 2019
1 parent 3b0fd01 commit aa249bd
Showing 1 changed file with 17 additions and 24 deletions.
41 changes: 17 additions & 24 deletions pmdarima/arima/arima.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@

from statsmodels.tsa.arima_model import ARIMA as _ARIMA
from statsmodels.tsa.base.tsa_model import TimeSeriesModelResults
from statsmodels.tsa.tsatools import unintegrate, unintegrate_levels
from statsmodels import api as sm

from scipy.stats import gaussian_kde, norm
Expand Down Expand Up @@ -89,13 +88,6 @@ def _seasonal_prediction_with_confidence(arima_res, start, end, exog, alpha,
return f, conf_int


def _unintegrate_differenced_preds(preds, results_wrapper, d):
"""If predictions were generated on un-integrate, fix it"""
endog = results_wrapper.model.data.endog[-d:]
preds = unintegrate(preds, unintegrate_levels(endog, d))[d:]
return preds


def _uses_legacy_pickling(arima):
# If the package version is < 1.1.0 it uses legacy pickling behavior, but
# a later version of the package may actually try to load a legacy model..
Expand Down Expand Up @@ -501,7 +493,7 @@ def _check_exog(self, exogenous):

def predict_in_sample(self, exogenous=None, start=None,
end=None, dynamic=False, return_conf_int=False,
alpha=0.05):
alpha=0.05, typ='linear'):
"""Generate in-sample predictions from the fit ARIMA model.
Predicts the original training (in-sample) time series values. This can
Expand Down Expand Up @@ -555,17 +547,17 @@ def predict_in_sample(self, exogenous=None, start=None,
d = self.order[1]
results_wrapper = self.arima_res_

# The only func that has 'typ' is for ARIMAs, not ARMAs or SARIMAX
kwargs = {}
if d > 0:
kwargs['typ'] = typ

# If not returning the confidence intervals, we have it really easy
if not return_conf_int:
preds = results_wrapper.predict(exog=exogenous, start=start,
end=end, dynamic=dynamic)

# Might need to un-integrate for ARIMA
if not self._is_seasonal() and d > 0:
preds = _unintegrate_differenced_preds(
preds=preds,
results_wrapper=results_wrapper,
d=d)
preds = results_wrapper.predict(
exog=exogenous, start=start,
end=end, dynamic=dynamic,
**kwargs)

return preds

Expand All @@ -587,15 +579,16 @@ def predict_in_sample(self, exogenous=None, start=None,
else:
preds = results_wrapper.predict(
exog=exogenous, start=start,
end=end, dynamic=dynamic)
end=end, dynamic=dynamic, **kwargs)

# We only have to un-integrate if there was any differencing
# TODO: prob don't need to since this occurs in the predict code
# (i.e., ARIMA vs. ARMA)
if d > 0:
preds = _unintegrate_differenced_preds(
preds=preds,
results_wrapper=results_wrapper,
d=d)
# if d > 0:
# preds = _unintegrate_differenced_preds(
# preds=preds,
# results_wrapper=results_wrapper,
# d=d)

# get prediction errors
pred_err = results_wrapper._forecast_error(len(preds))
Expand Down

0 comments on commit aa249bd

Please sign in to comment.