

def _arma_predict_out_of_sample(params, steps, errors, p, q, k_trend, k_exog, endog, exog=None, start=0, method='mle'):
    (trendparam, exparams, arparams, maparams) = _unpack_params(params, (p, q), k_trend, k_exog, reverse=True)
    (endog, resid, mu) = _get_predict_out_of_sample(endog, p, q, k_trend, k_exog, start, errors, trendparam, exparams, arparams, maparams, steps, method, exog)
    forecast = np.zeros(steps)
    if (steps == 1):
        if q:
            return ((mu[0] + np.dot(arparams, endog[:p])) + np.dot(maparams, resid[:q]))
        else:
            return (mu[0] + np.dot(arparams, endog[:p]))
    if q:
        i = 0
    else:
        i = (- 1)
    for i in range(min(q, (steps - 1))):
        fcast = ((mu[i] + np.dot(arparams, endog[i:(i + p)])) + np.dot(maparams[:(q - i)], resid[i:(i + q)]))
        forecast[i] = fcast
        endog[(i + p)] = fcast
    for i in range((i + 1), (steps - 1)):
        fcast = (mu[i] + np.dot(arparams, endog[i:(i + p)]))
        forecast[i] = fcast
        endog[(i + p)] = fcast
    forecast[(steps - 1)] = (mu[(steps - 1)] + np.dot(arparams, endog[(steps - 1):]))
    return forecast

dataset/ETHPy150Open statsmodels/statsmodels/statsmodels/tsa/arima_model.py _arma_predict_out_of_sample/original