Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pandas as pd
- import seaborn as sns
- import numpy as np
- import os
- from matplotlib import pyplot as plt
- from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
- from statsmodels.tsa.arima_model import ARIMA
- from sklearn.metrics import mean_squared_error
- from pandas.plotting import autocorrelation_plot
- import datetime
- import matplotlib.patches as mpatches
- from pmdarima.arima import auto_arima
- import statsmodels.api as sm
- from statsmodels.tsa.stattools import adfuller
- from numpy import log
- ig, axes = plt.subplots(2, 1, figsize=(10,5), dpi=100, sharex=True)
- bikes = pd.read_csv('D:\PracaDomowa3-master\data\\newbikes6years.csv')
- bikes['Trip Date'] = pd.to_datetime(bikes['Trip Date'])
- bikes.set_index('Trip Date', inplace=True)
- print(bikes)
- print(type(bikes))
- test = bikes.loc['2019-01-01':]
- data = bikes.loc[:'2018-12-31']
- # Usual Differencing
- axes[0].plot(data[:], label='Original Series')
- axes[0].plot(data[:].diff(1), label='Usual Differencing')
- axes[0].set_title('Usual Differencing')
- axes[0].legend(loc='upper left', fontsize=10)
- axes[1].plot(data[:], label='Original Series')
- axes[1].plot(data[:].diff(7), label='Seasonal Differencing', color='green')
- axes[1].set_title('Seasonal Differencing')
- plt.legend(loc='upper left', fontsize=10)
- plt.suptitle('Amount of trips per day', fontsize=16)
- plt.show()
- smodel = auto_arima(data,
- test='adf',
- m=7,
- seasonal=True,
- D=1, trace=True,
- error_action='ignore',
- suppress_warnings=True,
- stepwise=True)
- smodel.summary()
- print(smodel.summary())
- n_periods = 365
- fitted, confint = smodel.predict(n_periods=n_periods, return_conf_int=True)
- index_of_fc = pd.date_range(data.index[-1], periods = n_periods, freq='D')
- fitted_series = pd.Series(fitted, index=index_of_fc)
- lower_series = pd.Series(confint[:, 0], index=index_of_fc)
- upper_series = pd.Series(confint[:, 1], index=index_of_fc)
- rolling_test = test.rolling(window=30).mean()
- rolling_mean = data.rolling(window=30).mean()
- plt.plot(rolling_mean)
- plt.plot(rolling_test, color = 'g')
- plt.plot(fitted_series, color='darkgreen')
- plt.fill_between(lower_series.index,
- lower_series,
- upper_series,
- color='r', alpha=.15)
- plt.title("SARIMA - Final Forecast")
- plt.show()
- #SARIMAX(2,0,1)x(0,1,1,7)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement