May-16-2019, 02:22 PM
(This post was last modified: May-16-2019, 02:22 PM by jjameson. Edited 1 time in total.)

I am having trouble replicating 95% confidence bands for a time-series polynomial regression model.

I have found the code below, however the resulting confidence bands do not become greater the further out the prediction is into the future - which is what I require. Am I missing something? I appreciate that an ARIMA model would be preferable for time-series forecasts, however I am stuck with replicating a polynomial regression for this task.

Thanks in advance,

I have found the code below, however the resulting confidence bands do not become greater the further out the prediction is into the future - which is what I require. Am I missing something? I appreciate that an ARIMA model would be preferable for time-series forecasts, however I am stuck with replicating a polynomial regression for this task.

Thanks in advance,

## instantiate regression model. model = LinearRegression() ## train model on polynomial x data and y data. model.fit(x, y) y_poly_pred = model.predict(x) ## reshape predictions predictions = predictions.values.reshape((n_value,1)) ## RMSE & R2 rmse = np.sqrt(mean_squared_error(y, y_poly_pred_test)) r2 = r2_score(y, y_poly_pred) ## calculate t_value t = stats.t.ppf(1-tail_value,n_value) ## predict y values of original data using the fit model. p_y = y_poly_pred_test # calculate the y-error (residuals) y_err = y - y_poly_pred # calculate confidence intervals for new test x-series mean_x = np.mean(x) n = len(x) s_err = np.sum(np.power(y_err,2)) # sum of the squares of the residuals confs = t * np.sqrt((s_err/(n-2))*(1.0/n + (np.power((predictions-mean_x),2)/ ((np.sum(np.power(x,2)))-n*(np.power(mean_x,2)))))) # get lower and upper confidence limits based on predicted y and confidence intervals lower = y_poly_pred - abs(confs) upper = y_poly_pred + abs(confs)