exponenta event banner

Определение моделей временных рядов в командной строке

В этом примере показано, как моделировать временной ряд и использовать параметрические и непараметрические методы для оценки и сравнения моделей временных рядов.

Создание модели и моделирование выходных данных модели

Создание данных временных рядов путем создания и моделирования авторегрессионной (AR) полиномиальной модели ts_orig вида yk = a1 yk-1 + a2 yk-2 + ek, где ek - случайный гауссов шум. Этот шум представляет неизмеренный вход в модель. Поскольку модель является временным рядом, измеренные входные данные отсутствуют.

Перед вычислением ek инициализируйте начальное число генератора случайных чисел так, чтобы значения шума были воспроизводимыми.

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

Figure contains an axes. The axes with title Input Noise and Original Model Output contains 2 objects of type line. These objects represent RGS Noise, Model Output.

Оценка модели и сравнение спектров

Функции 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}')

Figure contains an axes. The axes with title From: e@y1 To: y1 contains 3 objects of type line. These objects represent 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}')

Figure contains an axes. The axes with title From: e@y1 To: y1 contains 3 objects of type line. These objects represent 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')

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Ry_{orig}, Ry_{ar}, Ry.

Ковариация оценочной модели AR, Ry_ar, ближе к исходной ковариации Ry_orig.

Прогнозирование и сравнение выходных данных модели

Сравните точность трехэтапного прогнозирования или процент соответствия для исходной модели и модели AR с помощью функции compare. Здесь, compare вычисляет прогнозируемый отклик ts_orig и ts_ar модели с исходными выходными данными модели y, предполагая, что неизмеренный входной ek равен нулю. Четвертый аргумент, 3, - количество шагов для прогнозирования.

compare(y,ts_orig,ts_ar,3);

Figure contains an axes. The axes contains 3 objects of type line. These objects represent y (y1), ts\_orig: 49.55%, ts\_ar: 49.54%.

Проценты в легенде - это проценты соответствия, которые представляют доброту соответствия. Точность прогнозирования составляет далеко не 100% даже для исходной модели, поскольку в процессе прогнозирования не учитывается неизмеренный входной сигнал ek модели. Значение соответствия для расчетной модели AR близко к исходной модели, что указывает на то, что модель AR является хорошей оценкой.

См. также

| | |

Связанные примеры

Подробнее