Чтобы предсказать выход динамической системы, вы сначала идентифицируете модель, которая подходит для прошлых измеренных данных из системы, а затем прогнозируете будущие выходы идентифицированной модели. Предположим, что у вас есть Y N измерений выхода системы (Y = {y1, y2,... yN}). Для прогнозирования выходов в будущем:
Идентифицируйте модель системы, используя команды оценки временных рядов, такие как ar
, arx
, armax
, и ssest
.
Программа оценивает модели путем минимизации квадратной суммы ошибок предсказания на один шаг вперед. Можно идентифицировать линейные модели, такие как AR, ARMA и модели пространства состояний. Можно также оценить нелинейные модели ARX и нелинейные модели серого ящика.
Проверьте идентифицированную модель используя predict
команда.
predict
команда предсказывает выход идентифицированной модели за временной промежуток измеренных данных (Yp = yp1, yp2,... ypN). Использовать predict
чтобы определить, Yp ли предсказанные результаты совпадать с наблюдаемыми выходами, Y для желаемого горизонта предсказания. Если предсказания хороши в течение временного интервала доступных данных, используйте модель для прогнозирования.
Задайте опции прогнозирования, такие как то, как программное обеспечение вычисляет начальные условия измеренных данных. Чтобы задать опции, используйте forecastOptions
набор опций.
Вычислите выход идентифицированной модели до будущего временного горизонта, H (yN+1, yN+2,..., yN+H) используя forecast
команда. В отличие от predict
команда, forecast
команда выполняет предсказание в будущее, в области значений, выходящей за пределы последнего момента измеренных данных.
Программа вычисляет прогнозируемые значения следующим образом:
Генерация модели предиктора с использованием идентифицированной модели.
Вычисление конечного состояния предиктора с использованием измеренных (доступных) данных.
Симуляция идентифицированной модели с использованием конечного состояния в качестве начальных условий.
Для получения дополнительной информации смотрите Введение в прогнозирование Динамической системы ответа.
Можно также спрогнозировать выходы для систем, где измеримые экзогенные входы u (t) влияют на выходные наблюдения. В этом случае вы сначала идентифицируете модель вход-выход с помощью измеренных y (t) и u (t), а затем используете forecast
команда.
В этом примере показано, как предсказать данные временных рядов из системы с помощью модели 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')
График показывает, что 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')