exponenta event banner

прогноз

Прогноз, определенный для вывода модели

Описание

пример

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,___) строит график прогнозируемого выпуска. Используется с любой из предыдущих комбинаций входных аргументов.

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

пример

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.

На графике также по умолчанию отображаются прошлые данные. Чтобы изменить параметры отображения, щелкните правой кнопкой мыши график, чтобы открыть контекстное меню. Например, чтобы просмотреть предполагаемое стандартное отклонение прогнозируемого результата, выберите в контекстном меню ConfiredRegion. Чтобы задать количество стандартных отклонений для печати, дважды щелкните график и откройте диалоговое окно «Редактор свойств». В диалоговом окне на вкладке Опции (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 представляет собой набор данных двух выходных временных рядов (без входных данных) из 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 object - использовать наблюдаемые входные и выходные сигналы для создания iddata объект. Для данных временного ряда (без входных данных) укажите как iddata объект без входных данных iddata(output,[]).

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

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

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

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

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

  • iddata object - указать как 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 в качестве выходных данных. Для моделей временных рядов: 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).

Совет

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

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

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

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

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

      • Среднее значение - просмотр среднего значения данных.

      • Доверительная область (Confidence Region) - просмотр расчетного стандартного отклонения прогнозируемого результата. Чтобы задать количество стандартных отклонений для печати, дважды щелкните график и откройте диалоговое окно «Редактор свойств». Укажите количество стандартных отклонений на вкладке Опции (Options) в разделе Доверительная область для идентифицированных моделей (Confidence Region for Identified Models). Значение по умолчанию: 1 стандартное отклонение.

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

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

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

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

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

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

    • Сетка (Grid) - добавление сеток на график.

    • Нормализовать (Normalize) - нормализация масштаба y всех данных на графике.

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

    • Свойства (Properties) - открытие диалогового окна Редактор свойств (Property Editor) для настройки атрибутов печати.

Представлен в R2012a