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

Прогнозирование ответа динамической системы является прогнозом будущих выходных параметров системы с помощью мимо выходных измерений. Другими словами, учитывая наблюдения 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-1, t-2, 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-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 Эйе (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).

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

| |

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

Больше о