Когда вы используете автоматически сгенерированные преддемонстрационные данные, вы часто видите переходные эффекты в начале симуляции. Это иногда называется burn-in period. Для стационарных ошибочных процессов импульсная характеристика функционирует затухания, чтобы обнулять в зависимости от времени. Это означает, что начальный момент ошибочной симуляции в конечном счете забыт. Чтобы уменьшать переходные эффекты, вы можете:
Сверхдискретизируйте: сгенерируйте демонстрационные пути, которые более длинны, чем необходимый, и отбрасывают начинающиеся выборки, которые показывают переходные эффекты.
Переработка: используйте первую симуляцию, чтобы сгенерировать преддемонстрационные данные для второй симуляции.
Если модель показывает неустановившиеся ошибки, то ошибочный процесс не забывает свой начальный момент. По умолчанию вся реализация неустановившихся процессов начинается в нуле. Для ненулевой начальной точки необходимо задать собственные преддемонстрационные данные.
Переходные эффекты в моделях регрессии с ошибками 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-by-numPaths
матрица, содержащая предполагаемые точки пересечения и наклоны для каждого симулированного набора данных. beta2
2-by-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