Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
if an ``ARIMA`` is fit on exogenous features, it must be provided
exogenous features for making predictions.
**fit_kwargs : keyword args
Extra keyword arguments used for each stage's ``fit`` stage.
Similar to scikit-learn pipeline keyword args, the keys are
compound, comprised of the stage name and the argument name
separated by a "__". For instance, if fitting an ARIMA in stage
"arima", your kwargs may resemble::
{"arima__maxiter": 10}
"""
# Shallow copy
steps = self.steps_ = self._validate_steps()
yt = check_endog(y, dtype=DTYPE, copy=False)
Xt = exogenous
named_kwargs = self._get_kwargs(**fit_kwargs)
# store original shape for later in-sample preds
self.n_samples_ = yt.shape[0]
for step_idx, name, transformer in self._iter(with_final=False):
cloned_transformer = clone(transformer)
kwargs = named_kwargs[name]
yt, Xt = cloned_transformer.fit_transform(yt, Xt, **kwargs)
# Replace the transformer of the step with the fitted
# transformer.
steps[step_idx] = (name, cloned_transformer)
# Now fit the final estimator
def load_airpassengers(as_series=False, dtype=DTYPE):
"""Monthly airline passengers.
The classic Box & Jenkins airline data. Monthly totals of international
airline passengers, 1949 to 1960.
Parameters
----------
as_series : bool, optional (default=False)
Whether to return a Pandas series. If False, will return a 1d
numpy array.
dtype : type, optional (default=np.float64)
The type to return for the array. Default is np.float64, which is used
throughout the package as the default type.
Returns
def load_lynx(as_series=False, dtype=DTYPE):
"""Annual numbers of lynx trappings for 1821–1934 in Canada.
This time-series records the number of skins of predators (lynx) that were
collected over several years by the Hudson's Bay Company. The dataset was
taken from Brockwell & Davis (1991) and appears to be the series
considered by Campbell & Walker (1977).
Parameters
----------
as_series : bool, optional (default=False)
Whether to return a Pandas series. If True, the index will be set to
the observed years. If False, will return a 1d numpy array.
dtype : type, optional (default=np.float64)
The type to return for the array. Default is np.float64, which is used
throughout the package as the default type.
def load_heartrate(as_series=False, dtype=DTYPE):
"""Uniform heart-rate data.
A sample of heartrate data borrowed from an
`MIT database `_. The sample consists
of 150 evenly spaced (0.5 seconds) heartrate measurements.
Parameters
----------
as_series : bool, optional (default=False)
Whether to return a Pandas series. If False, will return a 1d
numpy array.
dtype : type, optional (default=np.float64)
The type to return for the array. Default is np.float64, which is used
throughout the package as the default type.
def load_wineind(as_series=False, dtype=DTYPE):
"""Australian total wine sales by wine makers in bottles <= 1 litre.
This time-series records wine sales by Australian wine makers between
Jan 1980 -- Aug 1994. This dataset is found in the R ``forecast`` package.
Parameters
----------
as_series : bool, optional (default=False)
Whether to return a Pandas series. If True, the index will be set to
the observed years/months. If False, will return a 1d numpy array.
dtype : type, optional (default=np.float64)
The type to return for the array. Default is np.float64, which is used
throughout the package as the default type.
Notes
def load_woolyrnq(as_series=False, dtype=DTYPE):
"""Quarterly production of woollen yarn in Australia.
This time-series records the quarterly production (in tonnes) of woollen
yarn in Australia between Mar 1965 and Sep 1994.
Parameters
----------
as_series : bool, optional (default=False)
Whether to return a Pandas series. If True, the index will be set to
the observed years/quarters. If False, will return a 1d numpy array.
dtype : type, optional (default=np.float64)
The type to return for the array. Default is np.float64, which is used
throughout the package as the default type.
Examples
def _diff_inv_vector(x, lag, differences, xi):
# R code: if (missing(xi)) xi < - rep(0., lag * differences)
# R code: if (length(xi) != lag * differences)
# R code: stop("'xi' does not have the right length")
if xi is None:
xi = np.zeros(lag * differences, dtype=DTYPE)
else:
xi = check_endog(xi, dtype=DTYPE, copy=False, force_all_finite=False)
if xi.shape[0] != lag * differences:
raise IndexError('"xi" does not have the right length')
if differences == 1:
return np.asarray(C_intgrt_vec(x=x, xi=xi, lag=lag))
else:
# R code: diffinv.vector(diffinv.vector(x, lag, differences - 1L,
# R code: diff(xi, lag=lag, differences=1L)),
# R code: lag, 1L, xi[1L:lag])
return diff_inv(
x=diff_inv(x=x, lag=lag, differences=differences - 1,
xi=diff(x=xi, lag=lag, differences=1)),
lag=lag,
differences=1,
def load_austres(as_series=False, dtype=DTYPE):
"""Quarterly residential data.
Numbers (in thousands) of Australian residents measured quarterly from
March 1971 to March 1994.
Parameters
----------
as_series : bool, optional (default=False)
Whether to return a Pandas series. If False, will return a 1d
numpy array.
dtype : type, optional (default=np.float64)
The type to return for the array. Default is np.float64, which is used
throughout the package as the default type.
Returns
def _diff_inv_matrix(x, lag, differences, xi):
n, m = x.shape
y = np.zeros((n + lag * differences, m), dtype=DTYPE)
if m >= 1: # todo: R checks this. do we need to?
# R: if(missing(xi)) xi <- matrix(0.0, lag*differences, m)
if xi is None:
xi = np.zeros((lag * differences, m), dtype=DTYPE)
else:
xi = check_array(
xi, dtype=DTYPE, copy=False, force_all_finite=False,
ensure_2d=True)
if xi.shape != (lag * differences, m):
raise IndexError('"xi" does not have the right shape')
# TODO: can we vectorize?
for i in range(m):
y[:, i] = _diff_inv_vector(x[:, i], lag, differences, xi[:, i])
return y
def _diff_inv_vector(x, lag, differences, xi):
# R code: if (missing(xi)) xi < - rep(0., lag * differences)
# R code: if (length(xi) != lag * differences)
# R code: stop("'xi' does not have the right length")
if xi is None:
xi = np.zeros(lag * differences, dtype=DTYPE)
else:
xi = check_endog(xi, dtype=DTYPE, copy=False, force_all_finite=False)
if xi.shape[0] != lag * differences:
raise IndexError('"xi" does not have the right length')
if differences == 1:
return np.asarray(C_intgrt_vec(x=x, xi=xi, lag=lag))
else:
# R code: diffinv.vector(diffinv.vector(x, lag, differences - 1L,
# R code: diff(xi, lag=lag, differences=1L)),
# R code: lag, 1L, xi[1L:lag])
return diff_inv(
x=diff_inv(x=x, lag=lag, differences=differences - 1,
xi=diff(x=xi, lag=lag, differences=1)),
lag=lag,
differences=1,
xi=xi[:lag] # R: xi[1L:lag]
)