Когда вы используете автоматически сгенерированные данные предварительного образца, вы часто видите переходные эффекты в начале симуляции. Это иногда называют burn-in period. Для процессов стационарной ошибки функция импульсной характеристики со временем разрушается до нуля. Это означает, что начальная точка симуляции ошибки в конечном счете забывается. Чтобы уменьшить переходные эффекты, можно:
Сверхвыборка: сгенерируйте пути выборки, которые больше, чем нужно, и отбросьте начальные выборки, которые показывают переходные эффекты.
Recycle: используйте первую симуляцию, чтобы сгенерировать предварительные данные для второй симуляции.
Если модель показывает нестационарные ошибки, то процесс ошибки не забывает свою начальную точку. По умолчанию все реализации нестационарных процессов начинаются с нуля. Для ненулевой начальной точки необходимо задать свои собственные данные предварительного образца.
Переходные эффекты в регрессионных моделях с ошибками ARIMA могут повлиять на оценки коэффициента регрессии. Следующие примеры иллюстрируют поведение линии регрессии в моделях, которые игнорируют переходные эффекты и модели, которые их составляют.
Этот пример исследует линии регрессии регрессионых моделей с ошибками ARMA, когда переходные эффекты случайным образом распределяются относительно распределения соединений предиктора и отклика.
Задайте регрессионую модель с ошибками ARMA (2,1):
где является Гауссовым со средним 0 и отклонением 1. Постройте график функции импульсной характеристики.
Mdl0 = regARIMA('AR',{0.9,-0.4},'MA',{0.8},'Beta',2,... 'Variance',1,'Intercept',3); figure impulse(Mdl0)
Безусловные нарушения порядка, похоже, оседают после 10-й задержки. Поэтому переходные эффекты заканчиваются на 10-й задержке.
Симулируйте одномерный ряд Гауссовых предикторов со средним значением 0 и отклонением 1. Симулируйте 100 путей от Mdl0
.
rng(5); % For reproducibility T = 50; % Sample size numPaths = 100; % Number of paths X = randn(T,1); % Full predictor series Y = simulate(Mdl0,T,'numPaths',numPaths,'X',X); % Full response series endTrans = 10; truncX = X((endTrans+1):end); % Predictor without transient effects truncY = Y((endTrans+1):end,:); % Response without transient effects
Подгонка модели к каждому пути симулированного отклика отдельно для полного и усеченного ряда.
Mdl = regARIMA(2,0,1); % Empty model for estimation beta1 = zeros(2,numPaths); beta2 = beta1; for i = 1:numPaths EstMdl1 = estimate(Mdl,Y(:,i),'X',X,'display','off'); EstMdl2 = estimate(Mdl,truncY(:,i),'X',truncX,'display','off'); beta1(:,i) = [EstMdl1.Intercept; EstMdl1.Beta]; beta2(:,i) = [EstMdl2.Intercept; EstMdl2.Beta]; end
beta1
является 2-байт- numPaths
матрица, содержащая предполагаемые точки пересечения и склоны для каждого моделируемого набора данных. beta2
является 2-байт- numPaths
матрица, содержащая предполагаемые точки пересечения и склоны для усеченных моделируемых наборов данных.
Сравните моделируемые линии регрессии между полным и усеченным рядом. Для одного из путей постройте график моделируемых данных и соответствующих им регрессионых линий.
betaBar1 = mean(beta1,2);
betaBar2 = mean(beta2,2);
displayresults(betaBar1,betaBar2) % See Supporting Functions section
Transient Effects | Sim. Mean of Intercept | Sim. Mean of Slope =================================================================== Include | 3.08619 | 2.00098 Without | 3.16408 | 1.99455
figure plot(X,Y(:,1),'.') hold on plot(X(1:endTrans),Y(1:endTrans),'ro') plot([min(X) max(X)],beta1(1,1) + beta1(2,1)*[min(X) max(X)],'b') plot([min(truncX) max(truncX)],... beta2(1,1) + beta2(2,1)*[min(truncX) max(truncX)],'r') legend('Data','Truncated Data','With Transient Effects',... 'Without Transient Effects','Location','NorthWest') xlabel('x') ylabel('y') text(0,-3,sprintf('\\beta_0 = %0.4g',beta1(1,1)),'Color',[0,0,1]) text(0,-4,sprintf('\\beta_0 = %0.4g',beta2(1,1)),'Color',[1,0,0]) text(2,-3,sprintf('\\beta_1 = %0.4g',beta1(2,1)),'Color',[0,0,1]) text(2,-4,sprintf('\\beta_1 = %0.4g',beta2(2,1)),'Color',[1,0,0]) hold off
Таблица в Командном окне отображает средние значения симуляции точки пересечения и наклона регрессионой модели. Результаты предполагают, что линия регрессии, соответствующая анализу, включая полный набор данных, параллельна линии регрессии, соответствующей усеченному набору данных. Другими словами, на склон в основном не влияет учет переходных эффектов, но точка пересечения незначительно затронута.
Вспомогательные функции
function displayresults(b1,b2) fprintf('Transient Effects | Sim. Mean of Intercept | Sim. Mean of Slope\n') fprintf('===================================================================\n') fprintf('Include | %0.6g | %0.6g\n',b1(1),b1(2)) fprintf('Without | %0.6g | %0.6g\n',b2(1),b2(2)) end
В этом примере рассматриваются регрессионные линии регрессионных моделей с ошибками ARMA, когда переходные эффекты возникают в начале каждой серии.
Задайте регрессионую модель с ошибками ARMA (2,1):
где является Гауссовым со средним 0 и отклонением 1. Постройте график функции импульсной характеристики.
Mdl0 = regARIMA('AR',{0.9,-0.4},'MA',{0.8},'Beta',2,... 'Variance',1,'Intercept',3); figure impulse(Mdl0)
Безусловные нарушения порядка, по-видимому, оседают на 10-м лаге. Поэтому переходные эффекты заканчиваются после 10-й задержки.
Симулируйте одномерный ряд Гауссовых предикторов со средним значением 0 и отклонением 1. Симулируйте 100 путей от Mdl0
. Обрезайте наборы данных отклика и предиктора, чтобы удалить переходные эффекты.
rng(5); % For reproducibility T = 50; % Sample size numPaths = 100; % Number of paths X = linspace(-3,3,T)' + randn(T,1)*0.1; % Full predictor series Y = simulate(Mdl0,T,'numPaths',numPaths,'X',X); % Full response series endTrans = 10; truncX = X((endTrans+1):end); % Predictor without transient effects truncY = Y((endTrans+1):end,:); % Response without transient effects
Подгонка модели к каждому пути симулированного отклика отдельно для полного и усеченного ряда.
Mdl = regARIMA(2,0,1); % Empty model for estimation beta1 = zeros(2,numPaths); beta2 = beta1; for i = 1:numPaths EstMdl1 = estimate(Mdl,Y(:,i),'X',X,'display','off'); EstMdl2 = estimate(Mdl,truncY(:,i),'X',truncX,'display','off'); beta1(:,i) = [EstMdl1.Intercept; EstMdl1.Beta]; beta2(:,i) = [EstMdl2.Intercept; EstMdl2.Beta]; end
beta1
является 2-байт- numPaths
матрица, содержащая предполагаемые точки пересечения и склоны для каждого моделируемого набора данных. beta2
является 2-байт- numPaths
матрица, содержащая предполагаемые точки пересечения и склоны для усеченных моделируемых наборов данных.
Сравните моделируемые линии регрессии между полным и усеченным рядом. Для одного из путей постройте график моделируемых данных и соответствующих им регрессионых линий.
betaBar1 = mean(beta1,2);
betaBar2 = mean(beta2,2);
displayresults(betaBar1,betaBar2) % See Supporting Functions section
Transient Effects | Sim. Mean of Intercept | Sim. Mean of Slope =================================================================== Include | 3.09312 | 2.01796 Without | 3.14734 | 1.98798
figure plot(X,Y(:,1),'.') hold on plot(X(1:endTrans),Y(1:endTrans),'ro') plot([min(X) max(X)],beta1(1,1) + beta1(2,1)*[min(X) max(X)],'b') plot([min(truncX) max(truncX)],... beta2(1,1) + beta2(2,1)*[min(truncX) max(truncX)],'r') xlabel('x') ylabel('y') legend('Data','Truncated Data','Full Data Regression',... 'Truncated Data Regression','Location','NorthWest') text(0,-3,sprintf('\\beta_0 = %0.4g',beta1(1,1)),'Color',[0,0,1]) text(0,-5,sprintf('\\beta_0 = %0.4g',beta2(1,1)),'Color',[1,0,0]) text(2,-3,sprintf('\\beta_1 = %0.4g',beta1(2,1)),'Color',[0,0,1]) text(2,-5,sprintf('\\beta_1 = %0.4g',beta2(2,1)),'Color',[1,0,0]) hold off
Таблица в Командном окне отображает средние значения симуляции точки пересечения и наклона регрессионой модели. Результаты показывают, что в среднем линии регрессии, соответствующие полным данным и усеченным данным, имеют несколько другие точки пересечения и склоны. Другими словами, переходные эффекты немного влияют на оценки регрессии.
График отображает данные и линии регрессии для одного моделируемого пути. Переходные эффекты, по-видимому, влияют на результаты более серьезно.
Вспомогательные функции
function displayresults(b1,b2) fprintf('Transient Effects | Sim. Mean of Intercept | Sim. Mean of Slope\n') fprintf('===================================================================\n') fprintf('Include | %0.6g | %0.6g\n',b1(1),b1(2)) fprintf('Without | %0.6g | %0.6g\n',b2(1),b2(2)) end