# Vector Joint Model versus Univariate Component Models

Get hourly temperature readings for May 2014 in Champaign, Illinois.

 In[1]:= Xstart = {2014, 5, 1, 0, 0, 0}; end = {2014, 5, 31, 23, 59, 0};
 In[2]:= Xtemp = WeatherData[{"Champaign", "IL"}, "Temperature", {start, end}]; temp1 = TimeSeries[temp, MissingDataMethod -> "Interpolation"]; temp2 = TimeSeriesResample[temp1, "Hour"];

Use TimeSeriesAggregate to calculate daily minimum and maximum temperatures.

 In[3]:= Xmin = TimeSeriesAggregate[temp2, "Day", Min]; max = TimeSeriesAggregate[temp2, "Day", Max];

Combine them into a vector time series.

 In[4]:= XdataAll = TimeSeries[TimeSeriesThread[QuantityMagnitude, {min, max}], MetaInformation -> {"Units" -> {"DegreesCelsius", "DegreesCelsius"}, "Observation" -> {"Min Temperature", "Max Temperature"}}]
 Out[4]=
 Out[5]=

The first part of the data will be used to find a model, while the rest of the data will serve as a reference set for the forecast.

 In[6]:= Xdata = TimeSeriesWindow[ dataAll, {Automatic, {2014, 5, 26, 23, 59, 0}}];

The temperatures are cross-correlated.

 In[7]:= XListPlot[TimeSeriesMap[Part[#, 1, 2] &, CorrelationFunction[data, {20}]], Filling -> Axis]
 Out[7]=

Fit a vector model to the data.

 In[8]:= Xmodel[p_, q_] := ARIMAProcess[p, q]; eproc = EstimatedProcess[data, model[1, 0]]
 Out[8]=

Forecast the next 5 days.

 In[9]:= Xn = 5; forecast = TimeSeriesForecast[eproc, data, {n}, Method -> "Covariance"];
 Out[10]=

Find univariate models of the same type but longer orders for both temperatures separately.

 In[11]:= XminProc = EstimatedProcess[data["PathComponent", 1], model[3, 0]] minForecast = TimeSeriesForecast[minProc, data["PathComponent", 1], {n}, Method -> "Covariance"];
 Out[11]=
 In[12]:= XmaxProc = EstimatedProcess[data["PathComponent", 2], model[3, 0]] maxForecast = TimeSeriesForecast[maxProc, data["PathComponent", 2], {n}, Method -> "Covariance"];
 Out[12]=

Combine univariate forecasts for plotting.

 In[13]:= XuForecast = TimeSeries[ Transpose@{minForecast["Values"], maxForecast["Values"]}, {minForecast["Dates"]}]
 Out[13]=

Compare the forecasts.

 In[14]:= XplotData = TimeSeriesWindow[dataAll, {"May 20, 2014", Automatic}];
 Out[15]=

Plot the vector forecast and the 95% confidence bands.

 Out[17]=

Plot the univariate forecasts and the 95% confidence bands.

 Out[20]=

Compare both forecasts and the corresponding confidence bands.

 Out[21]=

## Mathematica

Questions? Comments? Contact a Wolfram expert »