прогноз

Класс: regARIMA

Предскажите ответы модели регрессии с ошибками ARIMA

Синтаксис

[Y,YMSE] = forecast(Mdl,numperiods)
[Y,YMSE,U] = forecast(Mdl,numperiods)
[Y,YMSE,U] = forecast(Mdl,numperiods,Name,Value)

Описание

[Y,YMSE] = forecast(Mdl,numperiods) ответы прогнозов (Y) для модели регрессии с ошибками временных рядов ARIMA и генерируют соответствующие среднеквадратичные погрешности (YMSE).

[Y,YMSE,U] = forecast(Mdl,numperiods) дополнительно предсказывает безусловные воздействия для модели регрессии с ошибками ARIMA.

[Y,YMSE,U] = forecast(Mdl,numperiods,Name,Value) прогнозы с дополнительными опциями, заданными одним или несколькими аргументами пары Name,Value.

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

развернуть все

Модель Regression с ошибками ARIMA, заданными как модель regARIMA, возвращенная regARIMA или estimate.

Свойства Mdl не могут содержать NaN s.

Предскажите горизонт или количество моментов времени в период прогноза, заданный как положительное целое число.

Типы данных: double

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Преддемонстрационные инновации, которые инициализируют компонент скользящего среднего значения (MA) ошибочной модели ARIMA, заданной как пара, разделенная запятой, состоящая из 'E0' и числового вектор-столбца или числовой матрицы. forecast принимает, что преддемонстрационные инновации имеют среднее значение 0.

  • Если E0 является вектор-столбцом, то forecast применяет его к каждому предсказанному пути.

  • Если E0, Y0 и U0 являются матрицами с разнообразными путями, то у них должно быть одинаковое число столбцов.

  • E0 требует, по крайней мере, строк Mdl.Q. Если E0 содержит дополнительные строки, то forecast использует последние преддемонстрационные инновации. Последняя строка содержит последние преддемонстрационные инновации.

По умолчанию, если U0 содержит, по крайней мере, Mdl.P + строки Mdl.Q, то forecast выводит E0 из U0. Если U0 имеет недостаточное количество строк, и forecast не может вывести достаточные наблюдения за U0 от преддемонстрационных данных (Y0 и X0), то E0 0.

Типы данных: double

Преддемонстрационные безусловные воздействия, которые инициализируют авторегрессивное (AR) компонент ошибочной модели ARIMA, заданной как пара, разделенная запятой, состоящая из 'U0' и числового вектор-столбца или числовой матрицы. Если вы не задаете преддемонстрационные инновации E0, forecast использует U0, чтобы вывести их.

  • Если U0 является вектор-столбцом, то forecast применяет его к каждому предсказанному пути.

  • Если U0, Y0 и E0 являются матрицами с разнообразными путями, то у них должно быть одинаковое число столбцов.

  • U0 требует, по крайней мере, строк Mdl.P. Если U0 содержит дополнительные строки, то forecast использует последние преддемонстрационные безусловные воздействия. Последняя строка содержит последнее преддемонстрационное безусловное воздействие.

По умолчанию, если преддемонстрационные данные (Y0 и X0) содержат, по крайней мере, строки Mdl.P, то forecast выводит U0 из преддемонстрационных данных. Если вы не задаете преддемонстрационные данные, то все необходимые преддемонстрационные безусловные воздействия 0.

Типы данных: double

Преддемонстрационные данные о предикторе, которые инициализируют модель для прогнозирования, заданный как пара, разделенная запятой, состоящая из 'X0' и числовой матрицы. Столбцы X0 являются отдельными переменными временных рядов. forecast использует X0, чтобы вывести преддемонстрационные безусловные воздействия U0. Поэтому, если вы задаете U0, forecast игнорирует X0.

  • Если вы не задаете U0, то X0 требует, по крайней мере, чтобы строки Mdl.P вывели U0. Если X0 содержит дополнительные строки, то forecast использует последние наблюдения. Последняя строка содержит последнее наблюдение за каждым рядом.

  • X0 требует одинакового числа столбцов как длины Mdl.Beta.

  • Если вы задаете X0, то необходимо также задать XF.

  • forecast обрабатывает X0 как фиксированную (нестохастическую) матрицу.

Типы данных: double

Предсказанные или будущие данные о предикторе, заданные как пара, разделенная запятой, состоящая из 'XF' и числовой матрицы.

Столбцы XF являются отдельными временными рядами, каждый соответствующий прогнозам ряда в X0. Строка t XF содержит t - прогнозы периода вперед X0.

Если вы задаете X0, то необходимо также задать XF. XF и X0 требуют одинакового числа столбцов. XF должен иметь, по крайней мере, строки numperiods. Если XF превышает строки numperiods, то forecast использует первые прогнозы numperiods.

forecast обрабатывает XF как фиксированную (нестохастическую) матрицу.

По умолчанию forecast не включает компонент регрессии в модель, независимо от присутствия коэффициентов регрессии в Mdl.

Типы данных: double

Преддемонстрационные данные об ответе, которые инициализируют модель для прогнозирования, заданный как пара, разделенная запятой, состоящая из 'Y0' и числового вектор-столбца или числовой матрицы. forecast использует Y0, чтобы вывести преддемонстрационные безусловные воздействия U0. Поэтому, если вы задаете U0, forecast игнорирует Y0.

  • Если Y0 является вектор-столбцом, forecast применяет его к каждому предсказанному пути.

  • Если Y0, E0 и U0 являются матрицами с разнообразными путями, то у них должно быть одинаковое число столбцов.

  • Если вы не задаете U0, то Y0 требует, по крайней мере, чтобы строки Mdl.P вывели U0. Если Y0 содержит дополнительные строки, то forecast использует последние наблюдения. Последняя строка содержит последнее наблюдение.

Типы данных: double

Примечания

  • NaN s в E0, U0, X0, XF и Y0 указывает на отсутствующие значения, и forecast удаляет их. Программное обеспечение объединяет преддемонстрационные наборы данных (E0, U0, X0, и Y0), затем использует мудрое списком удаление, чтобы удалить любой NaN s. forecast так же удаляет NaN s из XF. Удаление NaN s в данных уменьшает объем выборки. Такое удаление может также создать неправильные временные ряды.

  • forecast принимает, что вы синхронизируете преддемонстрационные данные, таким образом, что последнее наблюдение за каждым преддемонстрационным рядом происходит одновременно.

  • Установите X0 на ту же матрицу предиктора как X, используемый по оценке, симуляции или выводу Mdl. Это присвоение гарантирует правильный вывод безусловных воздействий, U0.

  • Чтобы включать компонент регрессии в прогноз ответа, необходимо задать предсказанные данные о предикторе XF. Таким образом, можно задать XF, также не задавая X0, но forecast выдает ошибку, когда вы задаете X0, также не задавая XF.

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

развернуть все

Прогнозы минимальной среднеквадратичной погрешности (MMSE) данных об ответе, возвращенных как числовая матрица. Y имеет строки numperiods и столбцы numPaths.

  • Если вы не задаете Y0, E0 и U0, то Y является вектор-столбцом numperiods.

  • Если вы задаете Y0, E0 и U0, все имеющие столбцы numPaths, то Y является numperiods-by-numPaths матрица.

  • Строка i Y содержит прогнозы для i th период.

Типы данных: double

Среднеквадратичные погрешности (MSEs) предсказанных ответов, возвращенных как числовая матрица. YMSE имеет строки numperiods и столбцы numPaths.

  • Если вы не задаете Y0, E0 и U0, то YMSE является вектор-столбцом numperiods.

  • Если вы задаете Y0, E0 и U0, все имеющие столбцы numPaths, то YMSE является numperiods-by-numPaths матрица.

  • Строка i YMSE содержит отклонения ошибки прогноза для i th период.

  • Данные о предикторе не вносят изменчивость в YMSE, потому что forecast обрабатывает XF как нестохастическую матрицу.

  • Квадратные корни из YMSE являются стандартными погрешностями прогнозов Y.

Типы данных: double

Прогнозы минимальной среднеквадратичной погрешности (MMSE) будущей ошибочной модели ARIMA безусловные воздействия, возвращенные как числовая матрица. U имеет строки numperiods и столбцы numPaths.

  • Если вы не задаете Y0, E0 и U0, то U является вектор-столбцом numperiods.

  • Если вы задаете Y0, E0 и U0, все имеющие столбцы numPaths, то U является numperiods-by-numPaths матрица.

  • Строка i U содержит предсказанные безусловные воздействия для i th период.

Типы данных: double

Примеры

развернуть все

Предскажите ответы из следующей модели регрессии с ARMA (2,1) ошибки по горизонту с 30 периодами:

yt=Xt[0.1-0.2]+utut=0.5ut-1-0.8ut-2+εt-0.5εt-1,

где εt является Гауссовым с отклонением 0.1.

Задайте модель. Моделируйте ответы из модели и двух рядов предиктора.

Mdl = regARIMA('Intercept',0,'AR',{0.5 -0.8},...
    'MA',-0.5,'Beta',[0.1 -0.2],'Variance',0.1);
rng(1); % For reproducibility
X =  randn(130,2);
y = simulate(Mdl,130,'X',X);

Соответствуйте модели к первым 100 наблюдениям и зарезервируйте остающиеся 30 наблюдений, чтобы оценить производительность прогноза.

ToEstMdl = regARIMA('ARLags',1:2);
EstMdl = estimate(ToEstMdl,y(1:100),'X',X(1:100,:));
 
    Regression with ARMA(2,0) Error Model (Gaussian Distribution):
 
                  Value      StandardError    TStatistic      PValue  
                 ________    _____________    __________    __________

    Intercept    0.004358      0.021314        0.20446         0.83799
    AR{1}         0.36833      0.067103         5.4891      4.0408e-08
    AR{2}        -0.75063      0.090865        -8.2609      1.4453e-16
    Beta(1)      0.076398      0.023008         3.3205      0.00089863
    Beta(2)       -0.1396      0.023298        -5.9919      2.0741e-09
    Variance     0.079876       0.01342         5.9522      2.6453e-09
[yF,yMSE] = forecast(EstMdl,30,'Y0',y(1:100),...
    'X0',X(1:100,:),'XF',X(101:end,:));

EstMdl является новой моделью regARIMA, содержащей оценки. Оценки близко к их истинным значениям.

Используйте EstMdl, чтобы предсказать горизонт с 30 периодами. Визуально сравните прогнозы с данными о затяжке с помощью графика.

[yF,yMSE] = forecast(EstMdl,30,'Y0',y(1:100),...
    'X0',X(1:100,:),'XF',X(101:end,:));

figure
plot(y,'Color',[.7,.7,.7]);
hold on
plot(101:130,yF,'b','LineWidth',2);
plot(101:130,yF+1.96*sqrt(yMSE),'r:',...
		'LineWidth',2);
plot(101:130,yF-1.96*sqrt(yMSE),'r:','LineWidth',2);
h = gca;
ph = patch([repmat(101,1,2) repmat(130,1,2)],...
        [h.YLim fliplr(h.YLim)],...
        [0 0 0 0],'b');
ph.FaceAlpha = 0.1;
legend('Observed','Forecast',...
		'95% Forecast Interval','Location','Best');
title(['30-Period Forecasts and Approximate 95% '...
			'Forecast Intervals'])
axis tight
hold off

Много наблюдений в демонстрационном падении затяжки вне 95%-х интервалов прогноза. Две причины этого:

  • Предикторы случайным образом сгенерированы в этом примере. estimate обрабатывает предикторы, как зафиксировано. Впоследствии, 95%-е интервалы прогноза на основе оценок от estimate не составляют изменчивость в предикторах.

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

Предскажите стационарный, регистрируйте GDP с помощью модели регрессии с ARMA (1,1) ошибки, включая CPI как предиктор.

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

load Data_USEconModel;
logGDP = log(DataTable.GDP);
dlogGDP = diff(logGDP);        % For stationarity
dCPI = diff(DataTable.CPIAUCSL); % For stationarity
numObs = length(dlogGDP);
gdp = dlogGDP(1:end-15);   % Estimation sample
cpi = dCPI(1:end-15);
T = length(gdp);        % Effective sample size
frstHzn =  T+1:numObs;  % Forecast horizon
hoCPI = dCPI(frstHzn);  % Holdout sample
dts = dates(2:end);     % Date nummbers

Соответствуйте модели регрессии ARMA (1,1) ошибки.

ToEstMdl = regARIMA('ARLags',1,'MALags',1);
EstMdl = estimate(ToEstMdl,gdp,'X',cpi);
 
    Regression with ARMA(1,1) Error Model (Gaussian Distribution):
 
                   Value       StandardError    TStatistic      PValue  
                 __________    _____________    __________    __________

    Intercept      0.014793      0.0016289        9.0818      1.0684e-19
    AR{1}           0.57601        0.10009        5.7548      8.6754e-09
    MA{1}          -0.15258        0.11978       -1.2738         0.20272
    Beta(1)       0.0028972      0.0013989         2.071        0.038355
    Variance     9.5734e-05     6.5562e-06        14.602       2.723e-48

Предскажите уровень GDP по 15 горизонтам четверти. Используйте выборку оценки в качестве предварительной выборки для прогноза.

[gdpF,gdpMSE] = forecast(EstMdl,15,'Y0',gdp,...
    'X0',cpi,'XF',hoCPI);

Постройте прогнозы и 95%-е интервалы прогноза.

figure
h1 = plot(dts(end-65:end),dlogGDP(end-65:end),...
    'Color',[.7,.7,.7]);
datetick
hold on
h2 = plot(dts(frstHzn),gdpF,'b','LineWidth',2);
h3 = plot(dts(frstHzn),gdpF+1.96*sqrt(gdpMSE),'r:',...
		'LineWidth',2);
plot(dts(frstHzn),gdpF-1.96*sqrt(gdpMSE),'r:','LineWidth',2);
ha = gca;
title(['{\bf Forecasts and Approximate 95% }'...
    '{\bf Forecast Intervals for GDP rate}']);
ph = patch([repmat(dts(frstHzn(1)),1,2) repmat(dts(frstHzn(end)),1,2)],...
    [ha.YLim fliplr(ha.YLim)],...
    [0 0 0 0],'b');
ph.FaceAlpha = 0.1;
legend([h1 h2 h3],{'Observed GDP rate','Forecasted GDP rate ',...
    '95% Forecast Interval'},'Location','Best','AutoUpdate','off');
axis tight
hold off

Предскажите модульный неустановившийся корень, регистрируйте GDP с помощью модели регрессии с ARIMA (1,1,1) ошибки, включая CPI как предиктор и известное прерывание.

Загрузите американский Макроэкономический набор данных и предварительно обработайте данные.

load Data_USEconModel;
numObs = length(DataTable.GDP);
logGDP = log(DataTable.GDP(1:end-15));
cpi = DataTable.CPIAUCSL(1:end-15);
T = length(logGDP);                  % Effective sample size
frstHzn =  T+1:numObs;               % Forecast horizon
hoCPI = DataTable.CPIAUCSL(frstHzn); % Holdout sample

Задайте модель в течение периода оценки.

ToEstMdl = regARIMA('ARLags',1,'MALags',1,'D',1);

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

Reg4Int = [ones(T,1), cpi]\logGDP;
intercept = Reg4Int(1);

Рассмотрите выполнение анализа чувствительности при помощи сетки прерываний.

Установите прерывание и соответствуйте модели регрессии ARIMA (1,1,1) ошибки.

ToEstMdl.Intercept = intercept;
EstMdl = estimate(ToEstMdl,logGDP,'X',cpi,...
    'Display','off')
EstMdl = 
  regARIMA with properties:

     Description: "ARIMA(1,1,1) Error Model (Gaussian Distribution)"
    Distribution: Name = "Gaussian"
       Intercept: 5.80142
            Beta: [0.00396705]
               P: 2
               D: 1
               Q: 1
              AR: {0.922709} at lag [1]
             SAR: {}
              MA: {-0.387846} at lag [1]
             SMA: {}
        Variance: 0.000108943
 
   Regression with ARIMA(1,1,1) Error Model (Gaussian Distribution)

Предскажите GDP по 15 горизонтам четверти. Используйте выборку оценки в качестве предварительной выборки для прогноза.

[gdpF,gdpMSE] = forecast(EstMdl,15,'Y0',logGDP,...
    'X0',cpi,'XF',hoCPI);

Постройте прогнозы и 95%-е интервалы прогноза.

figure
h1 = plot(dates(end-65:end),log(DataTable.GDP(end-65:end)),...
    'Color',[.7,.7,.7]);
datetick
hold on
h2 = plot(dates(frstHzn),gdpF,'b','LineWidth',2);
h3 = plot(dates(frstHzn),gdpF+1.96*sqrt(gdpMSE),'r:',...
		'LineWidth',2);
plot(dates(frstHzn),gdpF-1.96*sqrt(gdpMSE),'r:',...
    'LineWidth',2);
ha = gca;

title(['{\bf Forecasts and Approximate 95% }'...
			'{\bf Forecast Intervals for log GDP}']);
ph = patch([repmat(dates(frstHzn(1)),1,2) repmat(dates(frstHzn(end)),1,2)],...
        [ha.YLim fliplr(ha.YLim)],...
        [0 0 0 0],'b');
ph.FaceAlpha = 0.1;
legend([h1 h2 h3],{'Observed GDP','Forecasted GDP',...
		'95% Forecast Interval'},'Location','Best','AutoUpdate','off');
axis tight
hold off

Безусловные воздействия, ut, являются неустановившимися, поэтому ширины интервалов прогноза растут со временем.

Больше о

развернуть все

Алгоритмы

  • forecast вычисляет предсказанный ответ MSEs, YMSE, путем обработки матриц данных о предикторе (X0 и XF) как нестохастических и статистически независимых от образцовых инноваций. Поэтому YMSE отражает отклонение, сопоставленное с безусловными воздействиями одной только ошибочной модели ARIMA.

  • forecast использует Y0 и X0, чтобы вывести U0. Поэтому, если вы задаете U0, forecast игнорирует Y0 и X0.

Ссылки

[1] Поле, G. E. P. Г. М. Дженкинс и Г. К. Рейнсель. Анализ timeseries: Прогнозирование и Управление. 3-й редактор Englewood Cliffs, NJ: Prentice Hall, 1994.

[2] Дэвидсон, R. и Дж. Г. Маккиннон. Эконометрическая теория и методы. Оксфорд, Великобритания: Издательство Оксфордского университета, 2004.

[3] Enders, W. Прикладные эконометрические временные ряды. Хобокен, NJ: John Wiley & Sons, Inc., 1995.

[4] Гамильтон, J. D. Анализ timeseries. Принстон, NJ: Издательство Принстонского университета, 1994.

[5] Pankratz, A. Прогнозирование с моделями динамической регрессии. John Wiley & Sons, Inc., 1991.

[6] Tsay, R. S. Анализ Финансовых Временных рядов. 2-й редактор Хобокен, NJ: John Wiley & Sons, Inc., 2005.