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

Прогнозирование ответа динамической системы является прогнозом будущих выходных параметров системы с помощью мимо выходных измерений. Другими словами, учитывая наблюдения y (t) = {y(1), …, y(N)} выхода системы, прогнозирование является прогнозом выходных параметров y(N+1), …, y(N+H) до будущего периода времени H.

Когда вы выполняете прогнозирование в программном обеспечении System Identification Toolbox™, вы сначала идентифицируете модель, которая соответствует прошлым результатам измерений от системы. Модель может быть линейной моделью временных рядов, такой как AR, ARMA, и модели в пространстве состояний или нелинейная модель ARX. Если внешние входные параметры влияют на выходные параметры системы, можно выполнить прогнозирование с помощью моделей ввода - вывода, таких как ARX и ARMAX. После идентификации модели вы затем используете forecast команда, чтобы вычислить y(N+1), …, y(N+H). Команда вычисляет предсказанные значения:

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

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

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

Эта тема иллюстрирует эти шаги прогнозирования для линейных и нелинейных моделей. Прогнозирование ответа систем без внешних входных параметров (данные временных рядов) иллюстрируется, сопровождается путем прогнозирования для систем с внешним входом. Для получения информации о том, как выполнить прогнозирование в тулбоксе, смотрите Прогноз Выход Динамической системы.

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

Тулбокс позволяет вам предсказать временные ряды (выведите только), данные с помощью линейных моделей, таких как AR, ARMA и модели в пространстве состояний. Вот рисунок прогнозирования ответа авторегрессивной модели, сопровождаемой шагами прогнозирования для более сложных моделей, таких как скользящее среднее значение и модели в пространстве состояний.

Авторегрессивные модели

Предположим, что вы собрали данные временных рядов y (t) = {y(1), …, y(N)} стационарного вероятностного процесса. Принятие данных является авторегрессивным второго порядка (AR) процесс, можно описать динамику следующей моделью AR:

y(t)+a1y(t1)+a2y(t2)=e(t)

Где a1 и a2 являются подходящими коэффициентами, и e (t) является шумовым термином.

Можно идентифицировать модель с помощью ar команда. Программное обеспечение вычисляет подходящие коэффициенты и отклонение e (t) путем минимизации ошибок прогноза с 1 шагом между наблюдениями {y(1), …, y(N)} и ответ модели.

Предположение, что инновациями e (t) является нулевая средняя белая последовательность, можно вычислить предсказанный выходy^(t) использование формулы:

y^(t)=a1y(t1)a2y(t2)

Где y(t-1) и y(t-2) являются или результатами измерений, при наличии, или ранее ожидаемыми значениями. Например, предсказанные выходные параметры пять шагов в будущем:

y^(N+1)=a1y(N)a2y(N1)y^(N+2)=a1y^(N+1)a2y(N)y^(N+3)=a1y^(N+2)a2y^(N+1)y^(N+4)=a1y^(N+3)a2y^(N+2)y^(N+5)=a1y^(N+4)a2y^(N+3)

Обратите внимание на то, что расчет y^(N+2) использует ранее ожидаемое значение y^(N+1) потому что результаты измерений не доступны вне временного шага N. Таким образом прямой вклад результатов измерений уменьшается, как вы предсказываете далее в будущее.

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

Модели скользящего среднего значения

В моделях скользящего среднего значения (MA) выход зависит от текущих и прошлых инноваций (e (t), e (t-1), e (t-2), e (t-3)....). Таким образом прогнозирование ответа моделей MA требует знания начальных условий результатов измерений.

Предположим, что данные временных рядов y (t) от вашей системы могут быть подходящими к модели скользящего среднего значения второго порядка:

y(t)=e(t)+c1e(t1)+c2e(t2)

Предположим тот y(1) и y(2) единственные доступные наблюдения, и их значения равняются 5 и 10, соответственно. Можно оценить коэффициенты модели c1 и c2 с помощью armax команда. Примите, что предполагаемый c1 и значения c2 0.1 и 0.2, соответственно. Затем принимая как прежде, что e (t) является случайной переменной с нулевым средним значением, можно предсказать выходное значение во время t с помощью следующей формулы:

y^(t)=c1e(t1)+c2e(t2)

Где e(t-1) и e(t-2) различия между измеренным и предсказанным ответом во времена t-1 и t-2, соответственно. Если результаты измерений не существуют в течение этих времен, нулевое значение используется, потому что инновационный процесс e (t) принят, чтобы быть нулевым средним белым Гауссовым шумом.

Поэтому предсказанный выход во время t = 3:

y^(3)=0.1e(2)+0.2e(1)

Где, инновации e(1) и e(2) различие между наблюдаемыми и предсказанными значениями выхода во время t, равный 1 и 2, соответственно:

e(2)=y(2)-y^(2)=y(2)-[0.1e(1)+0.2 e(0)]e(1)=y(1)-y^(1)=y(1)-[0.1e(0)+0.2 e(-1)]

Поскольку данные были измерены со времени t, равный 1, значения e(0) и e(-1) неизвестны. Таким образом, чтобы вычислить предсказанные выходные параметры, значение этих начальных условий e(0) и e(-1) требуется. Можно или принять нулевые начальные условия или оценить их.

  • Нулевые начальные условия: Если вы задаете тот e(0) и e(-1) равны 0, ошибочные значения и предсказал, что выходные параметры:

    e(1)=5-(0.1*0+0.2*0)=5e(2)=10-(0.1*5+0.2*0)=9.5y^(3)=0.1*9.5+0.2*5=1.95

    Предсказанные значения во времена t = 4 и 5:

    y^(4)=0.1e(3)+0.2e(2)y^(5)=0.1e(4)+0.2e(3)

    Здесь e(3) и e(4) приняты, чтобы быть нулем, когда нет никаких измерений вне времени t = 2. Это предположение урожаи, y^(4)=0.2*e(2)=0.2*9.5=1.9, и y^(5)=0.

    Таким образом, для этой модели MA второго порядка, предсказанные выходные параметры, которые являются больше чем двумя временными шагами вне последней точки результатов измерений (t = 2) являются всем нулем. В общем случае, когда нулевые начальные условия приняты, предсказанные значения вне порядка чистой модели MA без авторегрессивных условий являются всем нулем.

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

    Для модели MA, описанной ранее, оценка начальных условий e(0) и e(-1) требует минимизации следующей функции стоимости наименьших квадратов:

    V=e(1)2+e(2)2= (y (1) - [0.1 e (0) + 0.2 e (-1)])2 + (y (2) - [0.1 e (1) + 0.2 e (0)])2

    Замена a = e(0) и b = e(-1), функция стоимости:

    V(a,b)=(5-[0.1a+0.2b])2+(10-[0.1(5-[0.1a+0.2b])+0.2a])2

    Минимизация V дает к e(0) = 50 и e(-1) = 0, который дает:

    e(1)=5-(0.1*50+0.2*0)=0e(2)=10-(0.1*0+0.2*50)=0y^(3)=0y^  (4) = 0

    Таким образом, для этой системы, если ошибки прогноза минимизированы по доступным двум выборкам, все будущие прогнозы равны нулю, который является средним значением процесса. Если бы было больше чем два доступные наблюдения, вы оценили бы e(-1) и e(0) с помощью наименьшие квадраты приближаются, чтобы минимизировать ошибки прогноза с 1 шагом по всем доступным данным.

    В этом примере показано, как воспроизвести эти предсказанные результаты с помощью 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
    
    

Для произвольных моделей структуры, таких как модели с авторегрессивным и скользящим средним значением называет, процедура прогнозирования может быть включена и поэтому лучше всего описана в форме пространства состояний.

Модели в пространстве состояний

Модель в пространстве состояний дискретного времени данных временных рядов имеет форму:

x(t+1)=Ax(t)+Ke(t)y(t)=Cx(t)+e(t)

Где, x (t) является вектором состояния, y (t) выходные параметры, e (t) является шумовым термином. A, C и K являются матрицами пространства состояний фиксированного коэффициента.

Можно представлять любую произвольную структуру линейная модель в форме пространства состояний. Например, можно показать, что модель ARMA, описанная ранее, выражается в форме пространства состояний с помощью A = [0 0;1 0], K = [0.5;0] и C = [0.2 0.4]. Можно оценить модель в пространстве состояний из наблюдаемых данных с помощью команд, таких как ssest и n4sid. Можно также преобразовать существующую полиномиальную модель, такую как AR, MA, ARMA, ARX и ARMAX в форму пространства состояний с помощью idss команда.

Преимущество формы пространства состояний состоит в том что любая модель авторегрессивного или скользящего среднего значения с несколькими условиями задержки (t-1t2 , t-3...) только имеет одну задержку (t-1) в переменных состояния, когда модель преобразована в форму пространства состояний. В результате необходимые начальные условия для прогнозирования переводят в одно значение для вектора начального состояния X(0). forecast команда преобразует всю линейную модель в форму пространства состояний и затем выполняет прогнозирование.

Предсказывать ответ модели в пространстве состояний:

  1. Сгенерируйте 1 шаг вперед модель предиктора для идентифицированной модели. Модель предиктора имеет форму:

    x^(t+1)=(A-K*C) x^(t)+Ky(t)y^(t)=C*x^(t)

    Где y (t) является измеренный выход и y^(t) ожидаемое значение. Измеренный выход доступен до временного шага N и используется в качестве входа в модели предиктора. Вектор начального состояния x^(0)=x0.

  2. Присвойте значение вектору начального состояния x0.

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

    Задайте нулевое начальное условие, если система была в состоянии отдыха, прежде чем наблюдения были собраны. Можно также задать нулевые начальные условия, если модель предиктора достаточно устойчива, потому что устойчивость подразумевает, что эффект начальных условий уменьшается быстро, когда наблюдения собраны. Модель предиктора устойчива если собственные значения A-K*C в модульном кругу.

  3. Вычислить x^(N+1), значение состояний в то время мгновенный t = N+1, момент времени после последней доступной выборки данных.

    Для этого симулируйте модель предиктора использование измеренных наблюдений как входные параметры:

    x^(1)=(A-K*C) x0 +Ky(0)x^(2)=(A-K*C)x^(1)+Ky(1)x^(N+1)=(A-K*C)x^(N)+Ky(N)

  4. Симулируйте ответ идентифицированной модели для H использование шагов x^(N+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);

Предскажите выход модели в пространстве состояний 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- 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 Эйе (t) = Бу (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, Хаммерстайна-Винера и нелинейных моделей серого ящика.

У Хаммерстайна-Винера и нелинейных моделей серого ящика есть тривиальный шумовой компонент, который является воздействием в модели, описан белым шумом. В результате предсказывая использование forecast команда совпадает с выполнением чистой симуляции.

Прогнозирование ответа нелинейных моделей ARX

Временные ряды нелинейная модель ARX имеют следующую структуру:

y(t)=f(y(t-1), y(t-2), ... , y(t-N))+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 команда оценки.

Предположим, что данные временных рядов от вашей системы могут быть подходящими к линейной в регрессоре модели второго порядка со следующими полиномиальными регрессорами:

R(t)=[y(t1),y(t2),y(t1)2,y(t2)2,y(t1)y(t2)]T

Затем f(R)=W'*R+c, где W=[w1 w2 w3 w4 w5] вектор взвешивания и c выходное смещение.

Нелинейная модель ARX имеет форму:

y(t)=w1y(t-1)+w2y(t-2)+w3y(t-1)2+w4y(t-2)2+w5y(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) как начальные условия и прогнозы выходные параметры как:

y^(101)=w1y(100)+w2y(99)+w3y(100)2+w4y(99)2+w5y(100)y(99)y^(102)=w1y^(101)+w2y(100)+w3y^(101)2+w4y(100)2+w5y^(101)y(100)y^(103)=w1y^(102)+w2y^(101)+w3y^(102)2+w4y^(101)2+w5y^(102)y^(101)y^(104)=w1y^(103)+w2y^(102)+w3y^(103)2+w4y^(102)2+w5y^(103)y^(102)

Если ваша система имеет внешние входные параметры, нелинейная модель ARX также включает регрессоры, которые зависят от входных переменных. Процесс прогнозирования похож на это для данных временных рядов. Вы сначала идентифицируете модель, sys, с помощью данных ввода - вывода, past_data. Когда вы предсказываете данные, программное обеспечение симулирует идентифицированные временные шаги модели H в будущее, использование последнего N измерило выходные выборки как начальные условия. Вы также задаете ожидаемые входные значения для отрезка времени прогнозирования, FutureInputs. Синтаксис для прогнозирования ответа нелинейных моделей с внешними входными параметрами совпадает с этим для линейных моделей, forecast(sys,past_data,H,FutureInputs).

Смотрите также

| |

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

Больше о

Для просмотра документации необходимо авторизоваться на сайте