В этом примере показано, как симулировать временные ряды и использовать параметрические и непараметрические методы, чтобы оценить и сравнить модели timeseries.
Сгенерируйте данные timeseries путем создания и симуляции авторегрессивного (AR) модель ts_orig
полинома из формы , где случайный Гауссов шум. Этот шум представляет неизмеренный вход модели. Поскольку модель является временными рядами, нет никаких измеренных входных параметров.
Перед вычислением , инициализируйте seed генератора случайных чисел так, чтобы шумовые значения были повторяемы.
ts_orig = idpoly([1 -1.75 0.9]); rng('default') e = idinput(300,'rgs');
Симулируйте наблюдаемый выход y_obs
из этой модели и преобразуют y_obs
к iddata
объект y
с шагом расчета по умолчанию одной секунды. Постройте выход модели вместе с входным шумом.
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
Функции etfe
и spa
обеспечьте два непараметрических метода для выполнения спектрального анализа. Сравните предполагаемые спектры мощности от etfe
и spa
к исходной модели.
ts_etfe = etfe(y); ts_spa = spa(y); spectrum(ts_etfe,ts_spa,ts_orig); legend('ts_{etfe}','ts_{spa}','ts_{orig}')
Теперь оцените параметрическую модель с помощью структуры AR. Оцените модель AR второго порядка и сравните ее спектр с исходной моделью и spa
оценка.
ts_ar = ar(y,2); spectrum(ts_spa,ts_ar,ts_orig); legend('ts_{spa}', 'ts_{ar}', 'ts_{orig}')
Спектр модели AR соответствует исходному спектру модели более тесно, чем непараметрические модели.
Вычислите функцию ковариации для исходной модели и модели AR путем свертки к каждому выходу модели с собой.
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));
Также оцените ковариацию Ry
непосредственно от наблюдаемых выходных параметров y
использование xcorr
.
Ry = xcorr(y.y,24,'biased');
Постройте и сравните исходные и предполагаемые ковариации.
plot(-24:24'*ones(1,3),[Ry_orig,Ry_ar,Ry]); legend('Ry_{orig}', 'Ry_{ar}', 'Ry')
Ковариация предполагаемой модели AR, Ry_ar
, ближе к исходной ковариации Ry_orig
.
Сравните точность предсказания с тремя шагами или подходящий процент, для исходной модели и модели AR, с помощью функционального compare
. Здесь, compare
вычисляет предсказанный ответ ts_orig
и ts_ar
модели с исходными выходными данными модели y
, принятие неизмеренного входа нуль. Четвертый аргумент, 3
, количество шагов, чтобы предсказать.
compare(y,ts_orig,ts_ar,3);
Проценты в легенде являются подходящими процентами, которые представляют качество подгонки. Точность предсказания далека от 100% даже для исходной модели, потому что неизмеренная модель ввела не составляется в процессе предсказания. Подходящее значение для предполагаемой модели AR близко к исходной модели, указывая, что модель AR является хорошей оценкой.