Прогнозный выход динамической системы

Чтобы предсказать выход динамической системы, вы сначала идентифицируете модель, которая подходит для прошлых измеренных данных из системы, а затем прогнозируете будущие выходы идентифицированной модели. Предположим, что у вас есть Y N измерений выхода системы (Y = {y1, y2,... yN}). Для прогнозирования выходов в будущем:

  1. Идентифицируйте модель системы, используя команды оценки временных рядов, такие как ar, arx, armax, и ssest.

    Программа оценивает модели путем минимизации квадратной суммы ошибок предсказания на один шаг вперед. Можно идентифицировать линейные модели, такие как AR, ARMA и модели пространства состояний. Можно также оценить нелинейные модели ARX и нелинейные модели серого ящика.

  2. Проверьте идентифицированную модель используя predict команда.

    predict команда предсказывает выход идентифицированной модели за временной промежуток измеренных данных (Yp = yp1, yp2,... ypN). Использовать predict чтобы определить, Yp ли предсказанные результаты совпадать с наблюдаемыми выходами, Y для желаемого горизонта предсказания. Если предсказания хороши в течение временного интервала доступных данных, используйте модель для прогнозирования.

  3. Задайте опции прогнозирования, такие как то, как программное обеспечение вычисляет начальные условия измеренных данных. Чтобы задать опции, используйте forecastOptions набор опций.

  4. Вычислите выход идентифицированной модели до будущего временного горизонта, H (yN+1, yN+2,..., yN+H) используя forecast команда. В отличие от predict команда, forecast команда выполняет предсказание в будущее, в области значений, выходящей за пределы последнего момента измеренных данных.

    Программа вычисляет прогнозируемые значения следующим образом:

    • Генерация модели предиктора с использованием идентифицированной модели.

    • Вычисление конечного состояния предиктора с использованием измеренных (доступных) данных.

    • Симуляция идентифицированной модели с использованием конечного состояния в качестве начальных условий.

    Для получения дополнительной информации смотрите Введение в прогнозирование Динамической системы ответа.

Можно также спрогнозировать выходы для систем, где измеримые экзогенные входы u (t) влияют на выходные наблюдения. В этом случае вы сначала идентифицируете модель вход-выход с помощью измеренных y (t) и u (t), а затем используете forecast команда.

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

В этом примере показано, как предсказать данные временных рядов из системы с помощью модели ARMA. Загрузите данные временных рядов, которые должны быть спрогнозированы.

load iddata9 z9
past_data = z9.OutputData(1:50);

Подбор модели ARMA порядка <reservedrangesplaceholder0> к измеренным данным.

sys = armax(past_data,[4 3]);

Выполните предсказание на 10 шагов вперед, чтобы подтвердить модель в течение временного интервала измеренных данных.

yp = predict(sys,past_data,10);

Постройте график предсказанной характеристики и измеренных данных.

t = z9.SamplingInstants;
t1 = t(1:50);
plot(t1,past_data,'k',t1,yp,'*b')
legend('Past Data','Predicted Data')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Past Data, Predicted Data.

График показывает, что sys является хорошей моделью предсказания, которая может использоваться для прогнозирования.

Задайте нулевые начальные условия для измеренных данных.

opt = forecastOptions('InitialCOndition','z');

Модель прогноза выводит 100 шагов за пределы данных оценки.

H = 100;
yf = forecast(sys,past_data,H,opt);

Постройте график прошлых и прогнозных данных.

t2 = t(51:150)';
plot(t1,past_data,'k',t2,yf,'--r')
legend('Past Data','Forecasted Data')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Past Data, Forecasted Data.

Похожие темы