Example #1
0
def generate_dataset_ARIMA(pun, first_day, meteo, varn):
    vector_date = np.array(pun[pun.columns[0]])
    vector_ore = np.array(pun[pun.columns[1]])
    target = np.array(pun[varn])
    global_dates = temp.dates(pd.Series(vector_date))
    vac_glob = temp.add_holidays(global_dates) 

    all_days = temp.generate_days(vector_ore, first_day)

    MD = replicate_meteo_variables(meteo, global_dates)

    aad = np.array([temp.convert_day_to_angle(v) for v in all_days]) 
    aore = np.sin(vector_ore*np.pi/24) 
    
    all_dict = {'holiday' : vac_glob, 'day' : aad, 'ora' : aore}
    all_dict.update(MD)
    
    FDF = pd.DataFrame(all_dict)
    
    return FDF, target
Example #2
0
arma_y = statsmodels.tsa.arima_model.ARIMA(endog=ardata["PUN"],
                                           order=[4, 1, 2]).fit(trend='c',
                                                                method='mle',
                                                                maxiter=100)

arma_y.resid

RMSE = np.sqrt(np.mean(arma_y.resid**2))
arma_y.forecast(steps=24)

### provo modello PUN, ORA, GIORNO, HOLIDAY

vac = temp.add_holidays(dates)  ## <-
ad = temp.associate_days(data[data.columns[1]], 'ven')
yd = temp.generate_days(data[data.columns[1]], 'ven')
anglesd = np.array([temp.convert_day_to_angle(v) for v in yd])  ## <-
ora = np.sin(np.array(data[data.columns[1]]) * np.pi / 24)  ## <-

arg = {'holiday': vac, 'day': anglesd, 'ora': ora}
arg = pd.DataFrame(arg)

arfit = statsmodels.tsa.arima_model.ARIMA(endog=ardata["PUN"],
                                          order=[4, 1, 2],
                                          exog=arg.as_matrix()).fit(
                                              trend='c',
                                              method='mle',
                                              maxiter=100)
rmse_fit = Functions_for_TSP.RMSE(arfit.resid)  ## 7.7520042757584031

trainset = list(range(8016))
Example #3
0
#### when ARMA-like models are used, DO NOT use the DataFrame coming from create_dataset:
#### ARMA-like methods require only the time series (the lags are computed internally)
#### the DataFrame from create_dataset has to be used only in NN-like methods

arma_y = statsmodels.tsa.arima_model.ARIMA(endog=ardata["PUN"], order=[4,1,2]).fit(trend = 'c', method = 'mle', maxiter = 100)

arma_y.resid

RMSE = np.sqrt(np.mean(arma_y.resid**2))
arma_y.forecast(steps=24)

### provo modello PUN, ORA, GIORNO, HOLIDAY

vac = temp.add_holidays(dates) ## <-
ad = temp.associate_days(data[data.columns[1]], 'ven')
yd = temp.generate_days(data[data.columns[1]], 'ven')
anglesd = np.array([temp.convert_day_to_angle(v) for v in yd]) ## <- 
ora = np.sin(np.array(data[data.columns[1]])*np.pi/24) ## <-

arg = {'holiday' : vac, 'day' : anglesd, 'ora' : ora}
arg = pd.DataFrame(arg)

arfit = statsmodels.tsa.arima_model.ARIMA(endog=ardata["PUN"], order=[4,1,2],exog = arg.as_matrix()).fit(trend = 'c', method = 'mle', maxiter = 100)
rmse_fit = Functions_for_TSP.RMSE(arfit.resid) ## 7.7520042757584031

trainset = list(range(8016))
testset = list(range(8016,8760)) 

artfit = statsmodels.tsa.arima_model.ARIMA(endog=ardata["PUN"].ix[trainset], order=[4,1,2],exog = arg.ix[trainset].as_matrix()).fit(trend = 'c', method = 'mle', maxiter = 100)

art_forecast = artfit.forecast(steps = 744, exog = arg.ix[testset].as_matrix())