В этом примере показано, как моделировать пути выборки из регрессионной модели с мультипликативными сезонными ошибками ARIMA с помощью simulate. Временные ряды - ежемесячные пассажирские номера международных авиакомпаний с 1949 по 1960 год.
Загрузка наборов данных авиакомпании и рецессий.
load('Data_Airline.mat') load Data_Recessions
Преобразование данных авиакомпании путем применения логарифма и 1-й и 12-й разностей.
y = Data;
logY = log(y);
DiffPoly = LagOp([1 -1]);
SDiffPoly = LagOp([1 -1],'Lags',[0, 12]);
dLogY = filter(DiffPoly*SDiffPoly,logY);Построить предиктор (X), который определяет, находилась ли страна в рецессии в течение выборочного периода. 0 в строке t означает, что страна не находилась в рецессии в месяце t, а 1 в строке t означает, что она находилась в рецессии в месяце t.
X = zeros(numel(dates),1); % Preallocation for j = 1:size(Recessions,1) X(dates >= Recessions(j,1) & dates <= Recessions(j,2)) = 1; end X = X(14:end); % Remove the first 14 observations for consistency dates = dates(14:end);
Определение наборов индексов, разделяющих данные на выборки оценок и прогнозов.
nSim = 60; % Forecast period
T = length(dLogY);
estInds = 1:(T-nSim);
foreInds = (T-nSim+1):T;Оценка регрессионной модели с мультипликативными сезонными ошибками:
Xtβ + ut
B12L12)
Mdl = regARIMA('MALags',1,'SMALags',12); EstMdl = estimate(Mdl,dLogY(estInds),'X',X(estInds));
Regression with ARMA(0,1) Error Model with Seasonal MA(12) (Gaussian Distribution):
Value StandardError TStatistic PValue
_________ _____________ __________ __________
Intercept 0.0042146 0.0015333 2.7486 0.0059843
MA{1} -0.47713 0.12087 -3.9473 7.9044e-05
SMA{12} -0.74115 0.12042 -6.1549 7.5116e-10
Beta(1) -0.018912 0.0075665 -2.4994 0.012439
Variance 0.0016695 0.00031169 5.3564 8.4901e-08
Использовать оценочные коэффициенты модели (содержатся в EstMdl) для моделирования 25 реализаций количества пассажиров авиакомпании за 60-месячный горизонт. Выведите остатки и используйте их в качестве предварительного примера.
[~,u0] = infer(EstMdl,dLogY(estInds),'X',X(estInds)); rng(5); numPaths = 25; dLogYSim = simulate(EstMdl,60,'numPaths',numPaths,'U0',u0,'X',X(foreInds)); meanDLogYSim = mean(dLogYSim,2); figure h1 = plot(dates(estInds),dLogY(estInds)); title('{\bf Transformed, Simulated Monthly Passenger Totals}') hold on plot(dates(foreInds),dLogYSim,'Color',[.85,.85,.85]) h2 = plot(dates(foreInds),meanDLogYSim,'k.-','LineWidth',2); plot([dates(estInds(end)),dates(foreInds(1))],... [repmat(dLogY(estInds(end)),numPaths,1),dLogYSim(1,:)'],... 'Color',[.85,.85,.85]) plot([dates(estInds(end)),dates(foreInds(1))],... [dLogY(estInds(end)),meanDLogYSim(1)],'k.-','LineWidth',2) plot(dates(foreInds),dLogY(foreInds)) datetick legend([h1,h2],'Observations','Simulation Mean','Location','NorthWest') axis tight hold off

Регрессионная модель с ошибками SMA, по-видимому, хорошо предсказывает серию.
Проверьте прогнозирующую производительность модели, выполнив следующие действия:
Изменение размера периода прогноза
Оценка прогнозируемой среднеквадратической ошибки (PMSE)
Выбор модели с наименьшей PMSE
Моделирование регрессионной модели с нестационарными мультипликативными сезонными ошибками
В этом примере показано, как моделировать пути выборки из регрессионной модели с мультипликативными сезонными ошибками ARIMA с помощью simulate. Временные ряды - ежемесячные пассажирские номера международных авиакомпаний с 1949 по 1960 год.
Загрузка наборов данных авиакомпании и рецессий. Преобразование ответа.
load('Data_Airline.mat') load Data_Recessions y = log(Data);
Построить предиктор (X), который определяет, находилась ли страна в рецессии в течение выборочного периода. 0 в строке t означает, что страна не находилась в рецессии в месяце t, а 1 в строке t означает, что она находилась в рецессии в месяце t.
X = zeros(numel(dates),1); % Preallocation for j = 1:size(Recessions,1) X(dates >= Recessions(j,1) & dates <= Recessions(j,2)) = 1; end
Определение наборов индексов, разделяющих данные на выборки оценок и прогнозов.
nSim = 60; % Forecast period
T = length(y);
estInds = 1:(T-nSim);
foreInds = (T-nSim+1):T;Оценка регрессионной модели с мультипликативными сезонными ошибками:
+ ut
B12L12)
Установите для модели регрессии значение 0, поскольку она не идентифицируется в интегрированной модели.
Mdl = regARIMA('D',1,'Seasonality',12,'MALags',1,'SMALags',12,... 'Intercept',0); EstMdl = estimate(Mdl,y(estInds),'X',X(estInds));
Regression with ARIMA(0,1,1) Error Model Seasonally Integrated with Seasonal MA(12) (Gaussian Distribution):
Value StandardError TStatistic PValue
_________ _____________ __________ __________
Intercept 0 0 NaN NaN
MA{1} -0.35662 0.10393 -3.4312 0.00060088
SMA{12} -0.67729 0.11294 -5.9972 2.0077e-09
Beta(1) 0.0015098 0.020533 0.07353 0.94138
Variance 0.0015198 0.00021411 7.0983 1.2631e-12
Использовать оценочные коэффициенты модели (содержатся в EstMdl), чтобы смоделировать количество пассажиров авиакомпании в течение 60-месячного горизонта. Выведите остатки и используйте их в качестве предварительного примера.
[e0,u0] = infer(EstMdl,y(estInds),'X',X(estInds)); rng(5); numPaths = 500; ySim = simulate(EstMdl,nSim,'numPaths',numPaths,'E0',e0,... 'U0',u0,'X',X(foreInds)); meanYSim = mean(ySim,2); figure h1 = plot(dates(estInds),y(estInds)); title('{\bf Simulated Monthly Passenger Totals}') hold on plot(dates(foreInds),ySim,'Color',[.85,.85,.85]) h2 = plot(dates(foreInds),meanYSim,'k.-','LineWidth',2); plot([dates(estInds(end)),dates(foreInds(1))],... [repmat(y(estInds(end)),numPaths,1),ySim(1,:)'],... 'Color',[.85,.85,.85]) plot([dates(estInds(end)),dates(foreInds(1))],... [y(estInds(end)),meanYSim(1)],'k.-','LineWidth',2) plot(dates(foreInds),y(foreInds)) datetick legend([h1,h2],'Observations','Monte Carlo Forecasts',... 'Location','NorthWest') axis tight hold off

Смоделированные прогнозы показывают рост и сезонную периодичность, аналогичные наблюдаемым сериям. Регрессионная модель с ошибками SMA, похоже, хорошо предсказывает серию, хотя и немного переоценивает.
Проверьте прогнозирующую производительность модели, выполнив следующие действия:
Изменение размера периода прогноза
Оценка прогнозируемой среднеквадратической ошибки (PMSE)
Выбор модели с наименьшей PMSE