Advertisement
Guest User

Untitled

a guest
Jan 10th, 2020
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.41 KB | None | 0 0
  1. import pandas as pd
  2. import seaborn as sns
  3. import numpy as np
  4. import os
  5. from matplotlib import pyplot as plt
  6. from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
  7. from statsmodels.tsa.arima_model import ARIMA
  8. from sklearn.metrics import mean_squared_error
  9. from pandas.plotting import autocorrelation_plot
  10. import datetime
  11. import matplotlib.patches as mpatches
  12. from pmdarima.arima import auto_arima
  13. import statsmodels.api as sm
  14. from statsmodels.tsa.stattools import adfuller
  15. from numpy import log
  16.  
  17. ig, axes = plt.subplots(2, 1, figsize=(10,5), dpi=100, sharex=True)
  18.  
  19. bikes = pd.read_csv('D:\PracaDomowa3-master\data\\newbikes6years.csv')
  20. bikes['Trip Date'] = pd.to_datetime(bikes['Trip Date'])
  21. bikes.set_index('Trip Date', inplace=True)
  22. print(bikes)
  23. print(type(bikes))
  24.  
  25. test = bikes.loc['2019-01-01':]
  26. data = bikes.loc[:'2018-12-31']
  27.  
  28.  
  29. # Usual Differencing
  30. axes[0].plot(data[:], label='Original Series')
  31. axes[0].plot(data[:].diff(1), label='Usual Differencing')
  32. axes[0].set_title('Usual Differencing')
  33. axes[0].legend(loc='upper left', fontsize=10)
  34.  
  35. axes[1].plot(data[:], label='Original Series')
  36. axes[1].plot(data[:].diff(7), label='Seasonal Differencing', color='green')
  37. axes[1].set_title('Seasonal Differencing')
  38. plt.legend(loc='upper left', fontsize=10)
  39. plt.suptitle('Amount of trips per day', fontsize=16)
  40. plt.show()
  41.  
  42.  
  43. smodel = auto_arima(data,
  44.                     test='adf',
  45.                     m=7,
  46.                     seasonal=True,
  47.                     D=1, trace=True,
  48.                     error_action='ignore',
  49.                     suppress_warnings=True,
  50.                     stepwise=True)
  51.  
  52. smodel.summary()
  53. print(smodel.summary())
  54.  
  55.  
  56. n_periods = 365
  57. fitted, confint = smodel.predict(n_periods=n_periods, return_conf_int=True)
  58. index_of_fc = pd.date_range(data.index[-1], periods = n_periods, freq='D')
  59.  
  60. fitted_series = pd.Series(fitted, index=index_of_fc)
  61. lower_series = pd.Series(confint[:, 0], index=index_of_fc)
  62. upper_series = pd.Series(confint[:, 1], index=index_of_fc)
  63.  
  64. rolling_test = test.rolling(window=30).mean()
  65. rolling_mean = data.rolling(window=30).mean()
  66. plt.plot(rolling_mean)
  67. plt.plot(rolling_test, color = 'g')
  68. plt.plot(fitted_series, color='darkgreen')
  69. plt.fill_between(lower_series.index,
  70.                  lower_series,
  71.                  upper_series,
  72.                  color='r', alpha=.15)
  73.  
  74. plt.title("SARIMA - Final Forecast")
  75. plt.show()
  76.  
  77. #SARIMAX(2,0,1)x(0,1,1,7)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement