Identify Time Series Models at the Command Line
This example shows how to simulate a time series and use parametric and nonparametric methods to estimate and compare time series models.
Generate Model and Simulate Model Output
Generate time series data by creating and simulating an autoregressive (AR) polynomial model ts_orig of the form , where is random Gaussian noise. This noise represents an unmeasured input to the model. Since the model is a time series, there are no measured inputs.
Before calculating , initialize the random number generator seed so that the noise values are repeatable.
ts_orig = idpoly([1 -1.75 0.9]); rng('default') e = idinput(300,'rgs');
Simulate the observed output y_obs of this model and convert y_obs to an iddata object y with the default sample time of one second. Plot the model output together with the input noise.
y_obs = sim(ts_orig,e); y = iddata(y_obs); plot(e) hold on plot(y_obs) title('Input Noise and Original Model Output') legend('RGS Noise','Model Output') hold off

Estimate Model and Compare Spectra
The functions etfe and spa provide two nonparametric techniques for performing spectral analysis. Compare the estimated power spectra from etfe and spa to the original model.
ts_etfe = etfe(y); ts_spa = spa(y); spectrum(ts_etfe,ts_spa,ts_orig); legend('ts_{etfe}','ts_{spa}','ts_{orig}')

Now estimate a parametric model using the AR structure. Estimate a second-order AR model and compare its spectrum with the original model and the spa estimate.
ts_ar = ar(y,2); spectrum(ts_spa,ts_ar,ts_orig); legend('ts_{spa}', 'ts_{ar}', 'ts_{orig}')

The AR model spectrum fits the original model spectrum more closely than the nonparametric models.
Estimate and Compare Covariance
Calculate the covariance function for the original model and the AR model by convolving each model output with itself.
ir_orig = sim(ts_orig,[1;zeros(24,1)]); Ry_orig = conv(ir_orig,ir_orig(25:-1:1)); ir_ar = sim(ts_ar,[1;zeros(24,1)]); Ry_ar = conv(ir_ar,ir_ar(25:-1:1));
Also estimate the covariance Ry directly from the observed outputs y using xcorr.
Ry = xcorr(y.y,24,'biased');Plot and compare the original and estimated covariances.
plot((-24:24)',[Ry_orig,Ry_ar,Ry]); legend('Ry_{orig}', 'Ry_{ar}', 'Ry')

The covariance of the estimated AR model, Ry_ar, is closer to the original covariance Ry_orig.
Predict and Compare Model Outputs
Compare the three-step prediction accuracy, or fit percentage, for the original model and the AR model, using the function compare. Here, compare computes the predicted response of the ts_orig and ts_ar models with the original model output data y, assuming unmeasured input is zero. The fourth argument, 3, is the number of steps to predict.
compare(y,ts_orig,ts_ar,3);

Warning: Error creating or updating Line Error in value of one or more of the following properties: XDataYData Array is wrong shape or size
The percentages in the legend are the fit percentages, which represent goodness of fit. The prediction accuracy is far from 100% even for the original model because the unmeasured model input is not accounted for in the prediction process. The fit value for the estimated AR model is close to the original model, indicating that the AR model is a good estimate.