Time series predictions do not seem as straight forward as other platforms. To solve this I:
- Saved the time series script from the platform but then split it into separate Time Series() and Seasonal Arima() functions.
- Saved predictions into a new table
- Copied the script back to the original table
- Made graph
Names default to here( 1 );
//Open sample data
dt = Open( "$Sample_data/time series/co2.jmp" );
//Add rows to the original table
dt << Add rows( 12 );
//Calculate date for future rows
dt << New Column( "Year&Month Future",
Numeric,
"Continuous",
Formula(
If( Is Missing( :Name( "Year&Month" ) ),
Lag( :Name( "Year&Month Future" ), 1 ) + 1 / 24,
:Name( "Year&Month" )
)
)
);
//Open time series
ts = dt << Time Series( Y( :CO2 ) );
//Add Arima
ar = ts << Seasonal Arima( 1, 1, 0, 0, 1, 1, 12 );
//Make a new table with predications
dtArima = ar << Save Prediction Formula;
//Graph with predictions in a separate data table
dtArima << Graph Builder(
Size( 493, 303 ),
Show Control Panel( 0 ),
Variables(
X( :Row ),
Y( :Actual CO2 ),
Y( :Predicted CO2, Position( 1 ) ) ),
Elements(
Points( X, Y( 1 ),
Legend( 19 ) ),
Line( X, Y( 2 ),
Legend( 20 ) ) )
);
//Or add predictions to original table:
//Copy the prediction formula and replace the column name, then save it to the original
//data table
Eval( Parse(
"dt << " ||
Substitute(
Char((Column(dtArima, "CO2 Prediction Formula" ) << Get Script ) ),
":Actual ",
":"
)
) );
/*
//Close temporary windows
ts << Close Window
dtArima << Close Window;
*/
//Graph with predictions in the original table
dt << Graph Builder(
Size( 493, 303 ),
Show Control Panel( 0 ),
Variables(
X( :Name("Year&Month Future") ),
Y( :CO2 ),
Y( :CO2 Prediction Formula, Position( 1 ) ) ),
Elements(
Points( X, Y( 1 ),
Legend( 19 ) ),
Line( X, Y( 2 ),
Legend( 20 ) ) )
);