Прогнозирование реакции динамической системы - это прогнозирование будущих выходов системы с использованием прошлых выходных измерений. Другими словами, учитывая наблюдения y (t) = {y (1),..., y (N)} выхода системы, прогнозирование является предсказанием выходов y (N + 1),..., y (N + H) до будущего временного горизонта H.
При выполнении прогнозирования в программном обеспечении System Identification Toolbox™ сначала определяется модель, которая соответствует данным прошлых измерений из системы. Модель может быть линейной моделью временных рядов, такой как модели AR, ARMA и state-space, или нелинейной моделью ARX. Если внешние входные данные влияют на выходные данные системы, можно выполнить прогнозирование с использованием моделей ввода-вывода, таких как ARX и ARMAX. После идентификации модели используется forecast для вычисления y (N + 1),..., y (N + H). Команда вычисляет прогнозируемые значения следующим образом:
Создание модели предиктора с использованием идентифицированной модели.
Вычисление конечного состояния предиктора с использованием прошлых измеренных данных.
Моделирование идентифицированной модели до требуемого горизонта прогнозирования H с использованием конечного состояния в качестве начальных условий.
Этот раздел иллюстрирует эти шаги прогнозирования для линейных и нелинейных моделей. Показано прогнозирование реакции систем без внешних входных данных (данных временных рядов) с последующим прогнозированием для систем с внешними входными данными. Сведения о выполнении прогнозирования на панели инструментов см. в разделе Прогнозный вывод динамической системы.
Панель инструментов позволяет прогнозировать данные временных рядов (только выходные данные) с использованием линейных моделей, таких как модели AR, ARMA и модели пространства состояний. Вот иллюстрация прогнозирования реакции авторегрессионной модели, за которой следуют шаги прогнозирования для более сложных моделей, таких как модели скользящего среднего и состояния пространства.
Предположим, что вы собрали данные временных рядов y (t) = {y (1),..., y (N)} стационарного случайного процесса. Предполагая, что данные являются процессом авторегрессии второго порядка (AR), можно описать динамику с помощью следующей модели AR:
t − 2) = e (t)
Где а1 и а2 - коэффициенты соответствия, а е (t) - член шума.
Определить модель можно с помощью ar команда. Программное обеспечение вычисляет коэффициенты аппроксимации и дисперсию e (t) путем минимизации 1-ступенчатых ошибок прогнозирования между наблюдениями {y (1),..., y (N)} и откликом модели.
Предполагая, что нововведения e (t) являются нулевой средней белой последовательностью, можно вычислить прогнозируемый (t) по формуле:
− a2y (t − 2)
Где y (t-1) и y (t-2) являются либо измеренными данными, если они имеются, либо предварительно предсказанными значениями. Например, прогнозируемые результаты в будущем будут представлять собой пять этапов:
4) = − a1y
Заметим, что при вычислении + 2) используется ранее предсказанное (N + 1), поскольку измеренные данные недоступны после временного шага N. Таким образом, прямой вклад измеренных данных уменьшается по мере дальнейшего прогнозирования в будущем.
Формула прогнозирования является более сложной для процессов временных рядов, содержащих элементы скользящего среднего.
В моделях скользящего среднего (MA) выход зависит от текущих и прошлых инноваций (e (t), e (t-1), e (t-2), e (t-3)....). Таким образом, прогнозирование реакции моделей МА требует знания начальных условий измеряемых данных.
Предположим, что данные временных рядов y (t) из системы могут соответствовать модели скользящего среднего второго порядка:
+ c2e (t − 2)
Предположим, что y(1) и y(2) являются единственными доступными наблюдениями, и их значения равны 5 и 10 соответственно. Можно оценить коэффициенты модели c1 и c2, используя armax команда. Предположим, что оцененные значения c1 и c2 равны 0,1 и 0,2 соответственно. Тогда предполагая, что как и раньше, e (t) является случайной величиной с нулевым средним значением, можно предсказать выходное значение в момент времени t по следующей формуле:
c2e (t − 2)
Где e(t-1) и e(t-2) представляют собой различия между измеренным и прогнозируемым откликом в моменты времени t-1 и t-2соответственно. Если измеренные данные не существуют для этих времен, используется нулевое значение, потому что процесс инноваций e (t) считается нулевым средним белым гауссовым шумом.
Поэтому прогнозируемый выход в момент времени t = 3 равен:
0,2e (1)
Где, инновации e(1) и e(2) - разность между наблюдаемым и прогнозируемым значениями выхода в момент времени t, равный 1 и 2, соответственно:
= y (1) - [0,1e (0) + 0,2 e (-1)]
Поскольку данные измерялись от времени t, равного 1, значения e(0) и e(-1) неизвестны. Таким образом, для вычисления прогнозируемых выходов значение этих начальных условий e(0) и e(-1) требуется. Можно либо предположить нулевые начальные условия, либо оценить их.
Нулевые начальные условия: Если указать, что e(0) и e(-1) равны 0, значения ошибок и прогнозируемые выходы:
5y ^ (3) = 0,1 * 9,5 + 0,2 * 5 = 1,95
Прогнозируемые значения в моменты времени t = 4 и 5:
0,1e (4) + 0,2e (3)
Здесь e(3) и e(4) принимают за ноль, так как нет измерений за пределами времени t = 2. Это предположение дает 0,2 * , и y ^ (5) = 0.
Таким образом, для этой модели МА второго порядка все прогнозируемые выходные сигналы, которые более чем на два временных шага превышают последнюю измеренную точку данных (t = 2), равны нулю. В общем случае, когда предполагаются нулевые начальные условия, прогнозируемые значения за пределами порядка чистой модели МА без авторегрессионных членов равны нулю.
Предполагаемые начальные условия: Можно оценить начальные условия, минимизируя квадратную сумму 1-ступенчатых ошибок прогнозирования всех измеренных данных.
Для модели MA, описанной ранее, оценка начальных условий e(0) и e(-1) требует минимизации следующей функции затрат на наименьшие квадраты:
) + 0,2 e (0)]) 2
Замена a = e(0) и b = e(-1), функция затрат:
1a + 0 .2b]) + 0 .2a]) 2
Минимизация выхода V e(0) = 50 и e(-1) = 0, что дает:
50) = 0y ^ (3) = 0y ^ (4) = 0
Таким образом, для этой системы, если ошибки прогнозирования минимизируются по имеющимся двум выборкам, все будущие прогнозы равны нулю, что является средним значением процесса. Если бы было более двух доступных наблюдений, вы бы оценили e(-1) и e(0) использование метода наименьших квадратов для минимизации одношаговых ошибок прогнозирования по всем доступным данным.
В этом примере показано, как воспроизвести эти прогнозируемые результаты с помощью forecast команда.
Загрузите измеренные данные.
PastData = [5;10];
Создайте модель MA с полиномиальными коэффициентами A и C, равными 1 и [1 0,1 0,2] соответственно.
model = idpoly(1,[],[1 0.1 0.2]);
Укажите нулевые начальные условия и спрогнозируйте вывод на пять шагов в будущем.
opt = forecastOptions('InitialCondition','z'); yf_zeroIC = forecast(model,PastData,5,opt)
yf_zeroIC = 5×1
1.9500
1.9000
0
0
0
Укажите, что программное обеспечение оценивает начальные условия, и спрогнозируйте выходные данные.
opt = forecastOptions('InitialCondition','e'); yf_estimatedIC = forecast(model,PastData,5,opt)
yf_estimatedIC = 5×1
10-15 ×
-0.3553
-0.3553
0
0
0
Для произвольных структурных моделей, таких как модели с авторегрессионными и скользящими средними слагаемыми, процедура прогнозирования может быть задействована и поэтому лучше всего описана в форме state-space.
Дискретная пространственно-временная модель данных временных рядов имеет вид:
= Cx (t) + e (t)
Где x (t) - вектор состояния, y (t) - выходные сигналы, e (t) - член шума. A, C и K - матрицы с фиксированным коэффициентом состояния-пространства.
В форме state-space можно представить любую линейную модель произвольной структуры. Например, можно показать, что модель ARMA, описанная ранее, выражается в форме state-space с использованием A = [0 0;1 0], K = [0.5;0] и C = [0.2 0.4]. Модель состояния-пространства можно оценить по наблюдаемым данным с помощью таких команд, как ssest и n4sid. Можно также преобразовать существующую полиномиальную модель, такую как AR, MA, ARMA, ARX и ARMAX, в форму «состояние-пространство», используя idss команда.
Преимущество формы state-space заключается в том, что любая авторегрессионная или скользящая средняя модель с несколькими терминами временного запаздывания (t-1,t-2,t-3,...) имеет только один временной лаг (t-1) в переменных состояния при преобразовании модели в форму state-space. В результате необходимые начальные условия для прогнозирования преобразуются в единое значение для вектора начального состояния. X(0). forecast преобразует всю линейную модель в форму state-space и затем выполняет прогнозирование.
Для прогнозирования реакции модели «состояние-пространство»:
Создайте модель предиктора на 1 шаг вперед для идентифицированной модели. Модель предиктора имеет вид:
y ^ (t) = C * x ^ (t)
Где y (t) - измеренный выходной сигнал, а ^ (t) - прогнозируемое значение. Измеренный выходной сигнал доступен до временного шага N и используется в качестве входного сигнала в модели предиктора. Вектор начального состояния 0) = x0.
Присвойте значение вектору начального состояния x0.
Начальные состояния либо задаются как ноль, либо оцениваются путем минимизации ошибки прогнозирования в течение измеренного временного интервала данных.
Укажите нулевое начальное условие, если система находилась в состоянии покоя до сбора данных наблюдений. Можно также указать нулевые начальные условия, если модель предиктора достаточно стабильна, поскольку стабильность подразумевает, что эффект начальных условий быстро уменьшается по мере сбора данных наблюдений. Модель предиктора стабильна, если собственные значения A-K*C находятся внутри единичной окружности.
Вычислите + 1), значение состояний в момент времениt = N+1, момент времени, следующий за последней доступной выборкой данных.
Для этого смоделируйте модель предиктора, используя измеренные наблюдения в качестве входных данных:
(N + 1) = (A-K * C) x ^ (N) + Ky (N)
Моделирование ответа идентифицированной модели для H шаги с использованием + 1) в качестве начальных условий, гдеH - горизонт прогнозирования. Этот ответ является прогнозируемым ответом модели.
forecast КомандаВ этом примере показано, как вручную воспроизводить результаты прогнозирования, полученные с помощью forecast команда. Вы сначала используете forecast для прогнозирования данных временных рядов в будущем. Затем можно сравнить прогнозируемые результаты с ручной реализацией алгоритма прогнозирования.
Загрузить данные временных рядов.
load iddata9 z9
z9 является iddata объект, хранящий данные временных рядов (без входных данных).
Укажите данные для оценки модели.
observed_data = z9(1:128); Ts = observed_data.Ts; t = observed_data.SamplingInstants; y = observed_data.y;
Ts - время выборки измеренных данных, t является вектором времени, и y - вектор измеряемых данных.
Оценка дискретно-временной модели пространства 4-го порядка.
sys = ssest(observed_data,4,'Ts',Ts);Прогнозирование выхода модели state-space на 100 шагов в будущее с помощью forecast команда.
H = 100; yh1 = forecast(sys,observed_data,H);
yh1 - прогнозируемый результат, полученный с помощью forecast команда. Теперь воспроизводите выходные данные, вручную реализуя алгоритм, используемый forecast команда.
Извлеките оценочные матрицы состояния-пространства для создания модели предиктора.
A = sys.A; K = sys.K; C = sys.C;
Создайте предиктор на 1 шаг вперед, где A матрицы Predictor модель является A-K*C и B матрица - K.
Predictor = idss((A-K*C),K,C,0,'Ts',Ts);Оценка начальных состояний, которые минимизируют разницу между наблюдаемыми выходными данными y и 1-ступенчатый прогнозируемый ответ идентифицированной модели sys.
x0 = findstates(sys,observed_data,1);
Распространение вектора состояния до конца наблюдаемых данных. Для этого смоделируйте предиктор с помощью y в качестве входных данных и x0 в качестве начальных состояний.
Input = iddata([],y,Ts);
opt = simOptions('InitialCondition',x0);
[~,~,x] = sim(Predictor,Input,opt);
xfinal = x(end,:)';xfinal - значение вектора состояния в момент времени t(end), последний момент времени, когда наблюдаемые данные доступны. Прогнозирование 100 временных шагов в будущее начинается со следующего временного шага, t1 = t(end)+Ts.
Для реализации алгоритма прогнозирования значение вектора состояния в момент времени t1 требуется. Вычислите вектор состояния, применив уравнение обновления состояния Predictor модель в xfinal.
x0_for_forecasting = Predictor.A*xfinal + Predictor.B*y(end);
Моделирование идентифицированной модели для H шаги с использованием x0_for_forecasting в качестве исходных условий.
opt = simOptions('InitialCondition',x0_for_forecasting);Поскольку sys является моделью временных рядов, укажите входные данные для моделирования как H-by-0 сигнал, где H - требуемое количество выходных выборок моделирования.
Input = iddata([],zeros(H,0),Ts,'Tstart',t(end)+Ts);
yh2 = sim(sys,Input,opt);Сравните результаты forecast команда yh1 с вычисленными вручную результатами yh2.
plot(yh1,yh2,'r.')
На графике видно, что результаты совпадают.
Когда существуют экзогенные стимулы, влияющие на систему, система не может считаться стационарной. Однако, если эти стимулы измеримы, то вы можете рассматривать их как входные данные для системы и учитывать их влияние при прогнозировании выхода системы. Поток операций для прогнозирования данных с внешними входами аналогичен потоку операций для прогнозирования данных временных рядов. Сначала необходимо определить модель в соответствии с измеренными данными ввода-вывода. Затем необходимо указать ожидаемые входные значения для периода времени прогнозирования и спрогнозировать выходные данные идентифицированной модели с помощью forecast команда. Если ожидаемые входные значения не указаны, предполагается, что они равны нулю.
В этом примере показано, как прогнозировать модель ARMAX с внешними входами на панели инструментов:
Загрузить данные ввода-вывода.
load iddata1 z1
z1 является iddata объект с данными ввода-вывода в 300 точках времени.
Использовать первую половину данных в качестве прошлых данных для идентификации модели.
past_data = z1(1:150);
Определите модель ARMAX Ay (t) = Bu (t-1) + Ce (t) порядка [2 2 2 1].
na = 2; % A polynomial order nb = 2; % B polynomial order nc = 2; % C polynomial order nk = 1; % input delay sys = armax(past_data,[na nb nc nk]);
Прогнозирование ответа на 100 временных шагов в будущем, после последней выборки наблюдаемых данных past_data. Укажите ожидаемые входные данные в 100 будущих временных точках.
H = 100; FutureInputs = z1.u(151:250); forecast(sys,past_data,H,FutureInputs) legend('Past Outputs','Future Outputs')

Панель инструментов также позволяет прогнозировать данные с помощью нелинейных моделей ARX, Hammerstein-Wiener и нелинейных серых блоков.
Модели Хаммерштейна-Винера и нелинейные серые модели имеют тривиальную шумовую составляющую, то есть возмущение в модели описывается белым шумом. В результате прогнозирование с использованием forecast такая же команда, как и при выполнении чистого моделирования.
Нелинейная модель ARX временных рядов имеет следующую структуру:
+ e (t)
Где f - нелинейная функция с входами R (t), модель регрессирует. Регрессорами могут быть запаздывающие по времени переменные y (t-1), y (t-2),..., y (t-N) и их нелинейные выражения, такие как y (t-1) 2, y (t-1) y (t-2), abs (y (t-1)). При оценке нелинейной модели ARX на основе измеренных данных задаются регрессоры модели. Можно также указать структуру f, используя различные структуры, такие как вейвлет-сети и разделы дерева. Дополнительные сведения см. на справочной страницеnlarx команда оценки.
Предположим, что данные временных рядов из системы могут соответствовать модели линейного регресса второго порядка со следующими полиномиальными регрессорами:
2) 2, y (t − 1) y (t − 2)] T
Тогда f(R)=W'*R+c, где W=[w1 w2 w3 w4 w5] является вектором взвешивания, и c - смещение выходного сигнала.
Нелинейная модель ARX имеет вид:
(t-1) y (t-2) + c + e (t)
При оценке модели с помощью nlarx , программа оценивает параметры модели W и c.
При использовании forecast программа вычисляет прогнозируемые выходные данные модели путем моделирования временных шагов модели H в будущее, используя последние N измеренных выходных выборок в качестве начальных условий. Где N - наибольшее отставание в регрессорах, а H - указанный горизонт прогноза.
Для модели линейного регресса предположим, что измерено 100 выборок выходного сигнала y, и требуется прогнозировать четыре шага в будущее (H = 4). Наибольшее отставание в регрессорах модели составляет N = 2. Поэтому программа берет последние две выборки данных. y(99) и y(100) в качестве исходных условий и прогнозирует результаты как:
)
Если система имеет экзогенные входные данные, нелинейная модель ARX также включает в себя регрессоры, зависящие от входных переменных. Процесс прогнозирования аналогичен процессу прогнозирования для данных временных рядов. Сначала необходимо определить модель. sys, используя данные ввода-вывода, past_data. При прогнозировании данных программа моделирует идентифицированную модель H временных шагов в будущее, используя последние N измеренных выходных выборок в качестве начальных условий. Также указываются ожидаемые входные значения для периода прогнозирования. FutureInputs. Синтаксис для прогнозирования отклика нелинейных моделей с экзогенными входами тот же, что и для линейных моделей. forecast(sys,past_data,H,FutureInputs).