Skip to content

Commit

Permalink
Evaluate Continuous Ranked Probability Score as a Forecasting Perform…
Browse files Browse the repository at this point in the history
…ance Measure #74

Added two tests
  • Loading branch information
antoinecarme committed Dec 26, 2020
1 parent 6b652e9 commit 5386e02
Show file tree
Hide file tree
Showing 2 changed files with 109 additions and 0 deletions.
52 changes: 52 additions & 0 deletions tests/probabilistic_forecasting/test_air_passengers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import pandas as pd
import numpy as np

import pyaf.ForecastEngine as autof
import pyaf.Bench.TS_datasets as tsds

b1 = tsds.load_airline_passengers()
df = b1.mPastData

df.head()


lEngine = autof.cForecastEngine()
lEngine

H = b1.mHorizon;
# lEngine.mOptions.enable_slow_mode();
lEngine.mOptions.mDebugPerformance = True;
lEngine.mOptions.mModelSelection_Criterion = "CRPS"
lEngine.mOptions.mParallelMode = True;
lEngine.train(df , b1.mTimeVar , b1.mSignalVar, H);
lEngine.getModelInfo();

print(lEngine.mSignalDecomposition.mTrPerfDetails.columns);
lColumns = ['Split', 'Transformation', 'Model', 'Category', 'Complexity',
'FitCRPS', 'ForecastCRPS', 'TestCRPS']
print(lEngine.mSignalDecomposition.mTrPerfDetails[lColumns].head(10));

lEngine.mSignalDecomposition.mBestModel.mTimeInfo.mResolution

lEngine.standardPlots(name = "outputs/my_airline_passengers")

dfapp_in = df.copy();
dfapp_in.tail()

#H = 12
dfapp_out = lEngine.forecast(dfapp_in, H);
dfapp_out.tail(2 * H)
print("Forecast Columns " , dfapp_out.columns);
lForecastColumnName = b1.mSignalVar + '_Forecast'
Forecast_DF = dfapp_out[[b1.mTimeVar , b1.mSignalVar, lForecastColumnName , lForecastColumnName + '_Lower_Bound', lForecastColumnName + '_Upper_Bound' ]]
print(Forecast_DF.info())
print("Forecasts\n" , Forecast_DF.tail(2*H));

print("\n\n<ModelInfo>")
print(lEngine.to_json());
print("</ModelInfo>\n\n")
print("\n\n<Forecast>")
print(Forecast_DF.tail(2*H).to_json(date_format='iso'))
print("</Forecast>\n\n")

# lEngine.standardPlots(name = "outputs/airline_passengers")
57 changes: 57 additions & 0 deletions tests/probabilistic_forecasting/test_ozone.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
from __future__ import absolute_import

import pandas as pd
import numpy as np


import pyaf.ForecastEngine as autof
import pyaf.Bench.TS_datasets as tsds


b1 = tsds.load_ozone()
df = b1.mPastData

#df.tail(10)
#df[:-10].tail()
#df[:-10:-1]
#df.describe()


lEngine = autof.cForecastEngine()
lEngine

H = b1.mHorizon;
# lEngine.mOptions.enable_slow_mode();
lEngine.mOptions.mDebugPerformance = True;
lEngine.mOptions.mModelSelection_Criterion = "CRPS"
lEngine.train(df , b1.mTimeVar , b1.mSignalVar, H);
lEngine.getModelInfo();

print(lEngine.mSignalDecomposition.mTrPerfDetails.columns);
lColumns = ['Split', 'Transformation', 'Model', 'Category', 'Complexity',
'FitCRPS', 'ForecastCRPS', 'TestCRPS']
print(lEngine.mSignalDecomposition.mTrPerfDetails[lColumns].head(10));

lEngine.mSignalDecomposition.mBestModel.mTimeInfo.mResolution

lEngine.standardPlots("outputs/my_ozone");

dfapp_in = df.copy();
dfapp_in.tail()

#H = 12
dfapp_out = lEngine.forecast(dfapp_in, H);
#dfapp_out.to_csv("outputs/ozone_apply_out.csv")
dfapp_out.tail(2 * H)
print("Forecast Columns " , dfapp_out.columns);
Forecast_DF = dfapp_out[[b1.mTimeVar , b1.mSignalVar, b1.mSignalVar + '_Forecast']]
print(Forecast_DF.info())
print("Forecasts\n" , Forecast_DF.tail(H));

print("\n\n<ModelInfo>")
print(lEngine.to_json());
print("</ModelInfo>\n\n")
print("\n\n<Forecast>")
print(Forecast_DF.tail(2*H).to_json(date_format='iso'))
print("</Forecast>\n\n")

0 comments on commit 5386e02

Please sign in to comment.