forecast

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

Описание

пример

yf = forecast(sys,PastData,K) прогнозирует выход идентифицированной модели временных рядов sys, K шаги в будущее с использованием прошлых измеренных данных, PastData.

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

пример

yf = forecast(sys,PastData,K,FutureInputs) использует будущие значения входов, FutureInputs, чтобы предсказать реакцию идентифицированной модели с входными каналами.

пример

yf = forecast(___,opts) использует набор опций, opts, для определения дополнительных опций прогноза. Использование opts с любыми предыдущими комбинациями входных аргументов.

пример

[yf,x0,sysf] = forecast(___) также возвращает оцененные значения для начальных состояний, x0, и модель прогнозирования, sysf, и может включать любую из предыдущих комбинаций входных аргументов.

пример

[yf,x0,sysf,yf_sd,x,x_sd] = forecast(___) также возвращает предполагаемое стандартное отклонение выхода, yf_sd, траектория состояний, x, и стандартное отклонение траектории, x_sd. Используйте с любыми предыдущими комбинациями входных аргументов.

пример

forecast(sys,PastData,K,___) строит графики прогнозируемого выхода. Используйте с любыми предыдущими комбинациями входных аргументов.

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

пример

forecast(sys,Linespec,PastData,K,___) использует Linespec для определения типа линии, символа маркера и цвета.

forecast(sys1,...,sysN,PastData,K,___) строит графики прогнозируемых выходов для нескольких идентифицированных моделей. forecast автоматически выбирает цвета и стили линии.

forecast(sys1,Linespec1,...,sysN,LinespecN,PastData,K,___) использует тип линии, символ маркера и цвет, заданный для каждой системы.

Примеры

свернуть все

Прогнозируйте значения синусоидального сигнала с помощью модели AR.

Сгенерируйте и постройте графики данных.

data = iddata(sin(0.1*[1:100])',[]);
plot(data)

Figure contains an axes. The axes with title y1 contains an object of type line. This object represents data.

Подбор AR- модели к синусоиде.

sys = ar(data,2);

Прогнозируйте значения в будущем для заданного временного горизонта.

K = 100;
p = forecast(sys,data,K);

K задает временной горизонт прогнозирования как 100 выборок. p - прогнозируемая реакция модели.

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

plot(data,'b',p,'r'), legend('measured','forecasted')

Figure contains an axes. The axes with title y1 contains 2 objects of type line. These objects represent measured, forecasted.

Кроме того, постройте график прогнозируемого выхода с помощью синтаксиса forecast(sys,data,K).

Получите прошлые данные и идентифицируйте модель временных рядов.

load iddata9 z9
past_data = z9.OutputData(1:50);
model = ar(z9,4);

z9 является iddata объект, который содержит только измеренный выход.

model является idpoly модель временных рядов.

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

opt = forecastOptions('InitialCondition','e');

Постройте график прогнозируемого отклика системы для заданного временного горизонта.

K = 100;
forecast(model,past_data,K,opt);    
legend('Measured','Forecasted')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Measured (y1), Forecasted.

Получите прошлые данные и идентифицируйте модель временных рядов.

load iddata9 z9
past_data = z9.OutputData(1:50);
model = ar(z9,4);

z9 является iddata объект, который содержит только измеренный выход.

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

K = 100;
forecast(model,'r--',past_data,K);

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Past data (y1), model.

График по умолчанию также отображает прошлые данные. Чтобы изменить параметры отображения, щелкните правой кнопкой мыши график, чтобы получить доступ к контекстному меню. Для примера, чтобы просмотреть предполагаемое стандартное отклонение прогнозируемого выхода, выберите ConfidenceRegion в контекстном меню. Чтобы задать количество стандартных отклонений для построения графика, дважды щелкните график и откройте диалоговое окно «Property Editor». В диалоговом окне, на вкладке Опции (Options), задайте количество стандартных отклонений в доверительной области для идентифицированных моделей. Значение по умолчанию 1 стандартное отклонение.

Получите прошлые данные, будущие входы и идентифицированную линейную модель.

load iddata1 z1
z1 = iddata(cumsum(z1.y),cumsum(z1.u),z1.Ts,'InterSample','foh');
past_data = z1(1:100);
future_inputs = z1.u(101:end);
sys = polyest(z1,[2 2 2 0 0 1],'IntegrateNoise',true);

z1 является iddata объект, который содержит интегрированные данные. sys является idpoly модель. past_data содержит первые 100 точек данных z1.

future_inputs содержит последние 200 точек данных z1.

Прогнозируйте отклик системы в будущее для заданного временного горизонта и будущих входов.

K = 200;
[yf,x0,sysf,yf_sd,x,x_sd] = forecast(sys,past_data,K,future_inputs);

yf - это прогнозируемая реакция модели, и yf_sd - стандартное отклонение выхода. x0 - оценочное значение для начальных состояний, и sysf - модель пространства состояний прогнозирования. Также возвращаются траектория состояний, x, и стандартное отклонение траектории, x_sd.

Постройте график прогнозируемой реакции.

UpperBound = iddata(yf.OutputData+3*yf_sd,[],yf.Ts,'Tstart',yf.Tstart);
LowerBound = iddata(yf.OutputData-3*yf_sd,[],yf.Ts,'Tstart',yf.Tstart);
plot(past_data(:,:,[]),yf(:,:,[]),UpperBound,'k--',LowerBound,'k--')
legend({'Measured','Forecasted','3 sd uncertainty'},'Location','best')

Figure contains an axes. The axes with title y1 contains 4 objects of type line. These objects represent Measured, Forecasted, 3 sd uncertainty, LowerBound.

Постройте график траектории состояния.

t = z1.SamplingInstants(101:end);
subplot(3,1,1)
plot(t,x(:,1),t,x(:,1)+3*x_sd(:,1),'k--',t,x(:,1)-3*x_sd(:,1),'k--')
title('X_1')

subplot(3,1,2)
plot(t, x(:,2),t,x(:,2)+3*x_sd(:,2),'k--',t, x(:,2)-3*x_sd(:,2),'k--')
title('X_2')

subplot(3,1,3)
plot(t,x(:,3),t,x(:,3)+3*x_sd(:,3),'k--',t, x(:,3)-3*x_sd(:,3),'k--')
title('X_3')

Figure contains 3 axes. Axes 1 with title X_1 contains 3 objects of type line. Axes 2 with title X_2 contains 3 objects of type line. Axes 3 with title X_3 contains 3 objects of type line.

Неопределенность реакции не растет за период прогнозирования из-за спецификации будущих входов.

Загрузка данных.

load(fullfile(matlabroot,'toolbox','ident','iddemos','data','predprey2data'));
z = iddata(y,[],0.1);
set(z,'Tstart',0,'OutputUnit',{'Population (in thousands)',...
    'Population (in thousands)'},'TimeUnit','Years');

z является двумя выходными наборами данных timeseries (без входов) из 1-хищной 1-хищной популяции. Население демонстрирует снижение популяции хищников из-за скученности. Набор данных содержит 201 выборку данных, охватывающую 20 лет эволюции.

Изменения в хищнике (y1) и добыча (y2) население может быть представлена как:

y1(t)=p1*y1(t-1)+p2*y1(t-1)*y2(t-1)

y2(t)=p3*y2(t-1)-p4*y1(t-1)*y2(t-1)-p5*y2(t-1)2

Нелинейность в хищнике и популяциях жертв может соответствовать с помощью нелинейной модели ARX с пользовательскими регрессорами.

Используйте часть данных как прошлые данные.

past_data = z(1:100);

Задайте стандартные регрессоры.

na = [1 0; 0 1];
nb = [];
nk = [];

Задайте пользовательские регрессоры.

C = {{'y1(t-1)*y2(t-1)'};{'y1(t-1)*y2(t-1)','y2(t-1)^2'}};

Оцените нелинейную модель ARX с помощью past_data в качестве данных оценки.

sys = nlarx(past_data,[na nb nk],'wavenet','CustomRegressors',C);

Сравните моделируемый выход sys с измеренными данными, чтобы убедиться, что это хорошая подгонка.

compare(past_data,sys);

Figure contains 2 axes. Axes 1 contains 2 objects of type line. These objects represent past\_data (y1), sys: 88.92%. Axes 2 contains 2 objects of type line. These objects represent past\_data (y2), sys: 86.35%.

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

forecast(sys,past_data,101);
legend('Measured','Forecasted');

Figure contains 2 axes. Axes 1 contains 2 objects of type line. These objects represent Measured (y1), sys. Axes 2 contains 2 objects of type line. These objects represent Measured (y2), Forecasted.

Получите прошлые данные, будущие входы и идентифицированную линейную модель.

load iddata3 z3
past_data = z3(1:100);
future_inputs = z3.u(101:end);
sys = polyest(z3,[2 2 2 0 0 1]);

Прогнозируйте отклик системы в будущее для заданного временного горизонта и будущих входов.

K = size(future_inputs,1);
[yf,x0,sysf] = forecast(sys,past_data,K,future_inputs);

yf - это прогнозируемая реакция модели, x0 - оценочное значение для начальных состояний, и sysf - модель пространства состояний прогнозирования.

Симулируйте модель пространства состояний прогнозирования с входами, future_inputs, и начальные условия, x0.

opt = simOptions;
opt.InitialCondition = x0;
ys = sim(sysf,future_inputs(1:K),opt);

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

t = yf.SamplingInstants;
plot(t,yf.OutputData,'b',t,ys,'.r');
legend('Forecasted Output','Simulated Output')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Forecasted Output, Simulated Output.

Симуляция модели прогнозирования, sysf, с входами, future_inputs, и начальные условия, x0, приводит к прогнозируемому выходу, yf.

Входные параметры

свернуть все

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

Если модель недоступна, оцените sys от PastData использование таких команд, как ar, arx, armax, nlarx, и ssest.

Прошедшие данные временной области ввода-вывода, заданные как одно из следующего:

  • iddata объект - Используйте наблюдаемые входные и выходные сигналы, чтобы создать iddata объект. Для данного timeseries (без входов) задайте как iddata объект без входов iddata(output,[]).

  • Матрица двойников - только для моделей в дискретном времени. Задайте как N -by - Ny матрицу для данного timeseries. Здесь N количество наблюдений, а Ny количество выходов.

    Для моделей с Nu входами задайте PastData как матрица N -by- (Ny + Nu).

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

Будущие входные значения, заданные как одно из следующего:

  • [] - Будущие входные значения приняты равными нулю или уровням входного смещения (если они заданы в opts). Для моделей временных рядов задайте как [].

  • iddata объект - Задайте как iddata объект без выходы.

  • K -by - Nu матрица двойников - K - горизонт прогноза, а Nu - количество входов.

    Если у вас есть данные из нескольких экспериментов, можно задать массив ячеек из матриц, по одному для каждого эксперимента в PastData.

Опции прогноза, заданные как forecastOptions набор опций.

Стиль линии, цвет и маркер задается как вектор символов. Для примера, 'b' или 'b+:'.

Для получения дополнительной информации о настройке Linespec, см. Аргумент Linespec plot.

Выходные аргументы

свернуть все

Прогнозируемый ответ, возвращенный как iddata объект. yf - прогнозируемый ответ в периоды после последнего шага расчета PastData. yf содержит данные для временного интервала T0+(N+1:N+K)*T1, где T0 = PastData.Tstart и T1 = PastData.Ts. N - количество выборок в PastData.

Предполагаемые начальные состояния в начале прогнозирования, возвращенные как вектор-столбец размера, равная количеству состояний. Использование x0 с моделью прогнозирования sysf воспроизведение результата прогноза методом чистой симуляции.

Если PastData мультиэксперимент, x0 - массив ячеек размера Ne, где Ne - количество экспериментов.

Когда sys не является моделью пространства состояний (idss, idgrey, или idnlgrey), определение состояний зависит от того, sys линейный или нелинейный:

  • Линейная модель (idpoly, idproc, idtf) – sys преобразуется в модель пространства состояний в дискретном времени, и x0 возвращается как состояния преобразованной модели в момент времени, превышающий последние данные в PastData.

    Если преобразование sys кому idss невозможно, x0 возвращается пустым. Для примера, если sys является моделью MIMO в непрерывном времени с неприводимыми внутренними задержками.

  • Нелинейная модель (idnlhw или idnlarx) - Для определения состояний idnlarx и idnlhw модели, см. Определение состояний idnlarx и Определение состояний idnlhw.

Модель прогнозирования, возвращенная как одно из следующего:

  • Дискретное время idss - Если sys является дискретной idss модель, sysf то же, что и sys. Если sys - линейная модель, которая не является моделью пространства состояний (idpoly, idproc, idtf), или является моделью пространства состояний в непрерывном времени (idss, idgrey), sys преобразуется в дискретное время idss модель. Преобразованная модель возвращается в sysf.

  • idnlarx, idnlhw, или idnlgrey- Если sys является нелинейной моделью, sysf то же, что и sys.

  • Массив ячеек моделей - Если PastData мультиэксперимент, sysf является массивом Ne моделей, где Ne - количество экспериментов.

Симуляция sysf использование sim, с входами, FutureInputs, и начальные условия, x0, приводит к yf в качестве выхода. Для моделей timeseries, FutureInputs пуст.

Предполагаемые стандартные отклонения прогнозируемого отклика, возвращенные как K -by - Ny матрица, где K - горизонт прогноза, а Ny - количество выходов. Программа вычисляет стандартное отклонение с учетом ковариации параметра модели, ковариации начального состояния и ковариации аддитивного шума. Аддитивная шумовая ковариация сохранена в NoiseVariance свойство модели.

Если PastData мультиэксперимент, yf_sd - массив ячеек размера Ne, где Ne - количество экспериментов.

yf_sd пуст, если sys является нелинейным ARX (idnlarx) или модель Гаммерштейна-Винера (idnlhw). yf_sd также пуст, если sys не содержит информацию о параметре ковариации, то есть, если getcov(sys) пуст. Для получения дополнительной информации см. getcov.

Прогнозируемая траектория состояния, возвращенная как K -by - Nx матрица, где K, горизонт прогноза и Nx количество состояний. x являются состояниями модели прогнозирования.

Если PastData мультиэксперимент, x - массив ячеек размера Ne, где Ne - количество экспериментов.

Если sys является линейной моделью, отличной от модели пространства состояний (не idss или idgrey), затем он преобразуется в модель пространства состояний в дискретном времени, и состояния преобразованной модели вычисляются. Если преобразование sys кому idss невозможно, x возвращается пустым. Для примера, если sys является моделью MIMO в непрерывном времени с неприводимыми внутренними задержками.

x пуст, если sys является нелинейным ARX (idnlarx) или модель Гаммерштейна-Винера (idnlhw).

Предполагаемые стандартные отклонения прогнозируемых состояний x, возвращается как K -by- Ns матрица, где K, горизонт прогноза и Ns количество состояний. Программа вычисляет стандартное отклонение с учетом ковариации параметра модели, ковариации начального состояния и ковариации аддитивного шума. Аддитивная шумовая ковариация сохранена в NoiseVariance свойство модели.

Если PastData мультиэксперимент, x_sd - массив ячеек размера Ne, где Ne - количество экспериментов.

Если sys является линейной моделью, отличной от модели пространства состояний (не idss или idgrey), затем преобразуется в модель пространства состояний в дискретном времени, и вычисляются состояния и стандартные отклонения преобразованной модели. Если преобразование sys кому idss невозможно, x_sd возвращается пустым. Для примера, если sys является моделью MIMO в непрерывном времени с неприводимыми внутренними задержками.

x_sd пуст, если sys является нелинейным ARX (idnlarx) или модель Гаммерштейна-Винера (idnlhw).

Совет

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

    • Systems - выберите системы для просмотра прогнозируемого выхода. По умолчанию строится график прогнозируемого выхода всех систем.

    • Data Experiment - только для данных нескольких экспериментов. Переключение между данными из различных экспериментов.

    • Characteristics - Просмотр следующих характеристик данных:

      • Peak Value - Просмотр пикового значения данных.

      • Mean Value - Просмотрите среднее значение данных.

      • Confidence Region - Просмотр предполагаемого стандартного отклонения прогнозируемого выхода. Чтобы задать количество стандартных отклонений для построения графика, дважды щелкните график и откройте диалоговое окно «Property Editor». Задайте количество стандартных отклонений на вкладке Options, в Confidence Region for Identified Models. Значение по умолчанию 1 стандартное отклонение.

        Область доверия не генерируется для нелинейных моделей ARX и Hammerstein-Wiener и моделей, которые не содержат параметра ковариации информации.

    • Show Past Data - постройте график прошлых выходных данных, используемых для прогнозирования. По умолчанию строятся графики прошлых выходных данных.

    • I/O Grouping - для наборов данных, содержащих более одного входного или выходного канала. Выберите группировку входа и выходных каналов на графике.

      • None - Стройте графики каналов ввода-вывода в собственных отдельных осях.

      • All - Группируйте все входные каналы вместе и все выходные каналы вместе.

    • I/O Selector - для наборов данных, содержащих более одного входного или выходного канала. Выберите подмножество входного и выходного каналов для построения графика. По умолчанию все выходные каналы построены.

    • Grid - добавить сетки на график.

    • Normalize - Нормализуйте шкалу Y всех данных на графике.

    • Full View - Вернуться к полному представлению. По умолчанию график масштабируется до полного вида.

    • Properties - Откройте диалоговое окно «Property Editor», чтобы настроить атрибуты графика.

Введенный в R2012a