Регрессия временных рядов IV: ложная регрессия

В этом примере рассматриваются переменные тренда, ложная регрессия и методы аккомодации в нескольких линейных регрессионых моделях. Это четвертый в серии примеров по регрессии временных рядов, после представления в предыдущих примерах.

Введение

Предикторы, которые стремятся со временем, иногда просматриваются с подозрением в многофакторных линейных регрессиях (MLR). Однако по отдельности они не должны влиять на обычную оценку методом наименьших квадратов (OLS). В частности, нет необходимости линеаризировать и детрендировать каждый предиктор. Если значения отклика хорошо описаны линейной комбинацией предикторов, MLR-модель все еще применима, и предположения классической линейной модели (CLM) не нарушаются.

Если, однако, трендовый предиктор в паре с трендовым ответом, существует возможность ложной регрессии, где t-статистика и общие меры подгонки становятся «значительными», что вводит в заблуждение. То есть статистическая значимость отношений в модели не точно отражает причинную значимость отношений в процессе генерации данных (DGP).

Чтобы выяснить, мы начнем с загрузки соответствующих данных из предыдущего примера «Регрессия временных рядов III: Влиятельные наблюдения» и продолжим анализ представленной там модели кредитного дефолта:

load Data_TSReg3

Черт бы побрал

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

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

Чтобы избежать недоопределения, соблазн дополнить объяснительную модель переменными управления, представляющими множество экономических факторов с только слабыми связями с ответом. С помощью этого метода вероятность смещения OV, по-видимому, снижается. Однако, если в модель включены нерелевантные предикторы, отклонение оценок коэффициентов увеличивается, и также увеличивается вероятность ложных выводов о значимости предиктора. Даже если включены соответствующие предикторы, если они не составляют всех OV, то смещение и неэффективность оценок коэффициентов могут увеличиться или уменьшиться, в зависимости, среди прочего, от корреляций между включенными и исключенными переменными [1]. Эта последняя точка обычно теряется в хрестоматиях смещения OV, которые обычно сравнивают недоопределенную модель с практически недоступной полностью заданной моделью.

Без экспериментальных проектов для сбора данных и возможности использования случайной выборки для минимизации эффектов миссспецификации экономисты должны быть очень осторожны в выборе предикторов модели. Определенность недоопределения и неопределенная логика переменных управления делает роль релевантной теории особенно важной в спецификации модели. Примеры в этой серии Регрессия временных рядов V: Выбор предиктора и Регрессия временных рядов VI: Остаточная диагностика описывают процесс с точки зрения циклов диагностики и респецификации. Цель состоит в том, чтобы сходиться к приемлемому набору оценок коэффициентов, в паре с серией невязок, из которых была дистиллирована вся соответствующая информация спецификаций.

В случае модели дефолта кредита, введенной в пример Регрессия временных рядов I: Линейные модели, смешанные переменные, безусловно, возможны. Предикторы-кандидаты являются в некоторой степени ad hoc, а не результатом какого-либо фундаментального учета причин дефолта по кредитам. Более того, предикторы являются прокси, зависимыми от других рядов вне модели. Без последующего анализа потенциально значимых экономических факторов доказательства смешения должны быть найдены в анализе невязок модели.

Удаление тренда

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

График данных кредитного дефолта (см. пример Регрессия временных рядов I: Линейные модели) показывает, что предиктор BBB и ответ IGD оба - в тренде. Можно надеяться, что тренды можно будет устранить, исключив из данных несколько нетипичных наблюдений. Например, тренд в ответе кажется в основном из-за единственного влиятельного наблюдения в 2001 году:

figure
hold on
plot(dates,y0,'k','LineWidth',2);
plot(dates,y0-detrend(y0),'m.-')
plot(datesd1,yd1-detrend(yd1),'g*-')
hold off
legend(respName0,'Trend','Trend with 2001 deleted','Location','NW')
xlabel('Year') 
ylabel('Response Level') 
title('{\bf Response}')
axis tight
grid on

Figure contains an axes. The axes with title {\bf Response} contains 3 objects of type line. These objects represent IGD, Trend, Trend with 2001 deleted.

Удаление точки уменьшает тренд, но не устраняет его.

Кроме того, переменные преобразования используются для удаления трендов. Это может улучшить статистические свойства регрессионой модели, но это усложняет анализ и интерпретацию. Любое преобразование изменяет экономический смысл переменной, отдавая предпочтение прогностической степени модели по сравнению с объяснительной простотой.

Способ удаления тренда зависит от типа тренда. Один из типов тренда возникает в процессе trend-stationar (TS), который является суммой детерминированного тренда и стационарного процесса. Переменные TS, после идентификации, часто линеаризируются с преобразованием степени или логарифмическим преобразованием, затем детрендируются путем регрессии во времени. The detrend функция, используемая выше, удаляет линию методом наименьших квадратов из данных. Это преобразование часто имеет побочный эффект упорядочивания влиятельных наблюдений.

Стохастические тренды

Однако не все тренды являются TS. Разностные стационарные (DS) процессы, также известные как интегрированные или единичные корневые процессы, могут проявлять стохастические тренды без разложения TS. Когда предиктор DS работает в паре с DS-ответом, появляются проблемы ложной регрессии [2]. Это верно, даже если серия сгенерирована независимо друг от друга, без каких-либо путаниц. Проблема осложняется тем, что не все серии DS в тренде.

Примите во внимание следующие регрессии между случайными прогулками DS с различными степенями дрейфа. Коэффициент детерминации (R2) вычисляется в повторных реализациях и отображается распределение. Для сравнения, также отображается распределение для регрессий между случайными векторами (без авторегрессивной зависимости):

T = 100;
numSims = 1000;
drifts = [0 0.1 0.2 0.3];
numModels = length(drifts);
Steps = randn(T,2,numSims);

% Regression between two random walks:
ResRW = zeros(numSims,T,numModels);
RSqRW = zeros(numSims,numModels);
for d = 1:numModels
    
    for s = 1:numSims
        
        Y = zeros(T,2);
        for t = 2:T 
            Y(t,:) = drifts(d) + Y(t-1,:) + Steps(t,:,s);
        end
        
        % The compact regression formulation:
        %
        % MRW = fitlm(Y(:,1),Y(:,2));
        % ResRW(s,:,d) = MRW.Residuals.Raw';
        % RSqRW(s,d) = MRW.Rsquared.Ordinary;
        %
        % is replaced by the following for
        % efficiency in repeated simulation:
        
        X = [ones(size(Y(:,1))),Y(:,1)];
        y = Y(:,2);
        Coeff = X\y;
        yHat = X*Coeff;
        res = y-yHat;
        yBar = mean(y);
        regRes = yHat-yBar;
        SSR = regRes'*regRes;
        SSE = res'*res;
        SST = SSR+SSE;
        RSq = 1-SSE/SST;
        ResRW(s,:,d) = res';
        RSqRW(s,d) = RSq;
        
    end
    
end

% Plot R-squared distributions:
figure

[v(1,:),edges] = histcounts(RSqRW(:,1));
for i=2:size(RSqRW,2)
    v(i,:) = histcounts(RSqRW(:,i),edges); 
end
numBins = size(v,2);

ax = axes;
ticklocs = edges(1:end-1)+diff(edges)/2;
names = cell(1,numBins);
for i = 1:numBins
    names{i} = sprintf('%0.5g-%0.5g',edges(i),edges(i+1));
end
bar(ax,ticklocs,v.');
set(ax,'XTick',ticklocs,'XTickLabel',names,'XTickLabelRotation',30);

fig = gcf;
CMap = fig.Colormap;
Colors = CMap(linspace(1,64,numModels),:);
legend(strcat({'Drift = '},num2str(drifts','%-2.1f')),'Location','North')
xlabel('{\it R}^2')
ylabel('Number of Simulations')
title('{\bf Regression Between Two Independent Random Walks}')

Figure contains an axes. The axes with title {\bf Regression Between Two Independent Random Walks} contains 4 objects of type bar. These objects represent Drift = 0.0, Drift = 0.1, Drift = 0.2, Drift = 0.3.

clear RsqRW

% Regression between two random vectors:
RSqR = zeros(numSims,1);
for s = 1:numSims
    
    % The compact regression formulation:
    %
    % MR = fitlm(Steps(:,1,s),Steps(:,2,s));
    % RSqR(s) = MR.Rsquared.Ordinary;
    %
    % is replaced by the following for
    % efficiency in repeated simulation:

    X = [ones(size(Steps(:,1,s))),Steps(:,1,s)];
    y = Steps(:,2,s);
    Coeff = X\y;
    yHat = X*Coeff;
    res = y-yHat;
    yBar = mean(y);
    regRes = yHat-yBar;
    SSR = regRes'*regRes;
    SSE = res'*res;
    SST = SSR+SSE;
    RSq = 1-SSE/SST;
    RSqR(s) = RSq;
    
end

% Plot R-squared distribution:
figure

histogram(RSqR)
ax = gca;
ax.Children.FaceColor = [.8 .8 1];
xlabel('{\it R}^2')
ylabel('Number of Simulations')
title('{\bf Regression Between Two Independent Random Vectors}')

Figure contains an axes. The axes with title {\bf Regression Between Two Independent Random Vectors} contains an object of type histogram.

clear RSqR

R2 для регрессий случайной ходьбы становится более значимым, когда коэффициент дрейфа увеличивается. Даже при нулевом дрейфе регрессии случайной ходьбы более значительны, чем регрессии между случайными векторами, где R2 значения падают почти исключительно ниже 0,1.

Ложные регрессии часто сопровождаются признаками автокорреляции в невязках, которые могут служить диагностической подсказкой. Следующее показывает распределение автокорреляционных функций (ACF) для остаточного ряда в каждой из вышеуказанных регрессий случайной ходьбы:

numLags = 20;
ACFResRW = zeros(numSims,numLags+1,numModels);
for s = 1:numSims 
    for d = 1:numModels
        ACFResRW(s,:,d) = autocorr(ResRW(s,:,d));
    end
end
clear ResRW

% Plot ACF distributions:
figure
boxplot(ACFResRW(:,:,1),'PlotStyle','compact','BoxStyle','outline','LabelOrientation','horizontal','Color',Colors(1,:))
ax = gca;
ax.XTickLabel = {''};
hold on
boxplot(ACFResRW(:,:,2),'PlotStyle','compact','BoxStyle','outline','LabelOrientation','horizontal','Widths',0.4,'Color',Colors(2,:))
ax.XTickLabel = {''};
boxplot(ACFResRW(:,:,3),'PlotStyle','compact','BoxStyle','outline','LabelOrientation','horizontal','Widths',0.3,'Color',Colors(3,:))
ax.XTickLabel = {''};
boxplot(ACFResRW(:,:,4),'PlotStyle','compact','BoxStyle','outline','LabelOrientation','horizontal','Widths',0.2,'Color',Colors(4,:),'Labels',0:20)
line([0,21],[0,0],'Color','k')
line([0,21],[2/sqrt(T),2/sqrt(T)],'Color','b')
line([0,21],[-2/sqrt(T),-2/sqrt(T)],'Color','b')
hold off
xlabel('Lag')
ylabel('Sample Autocorrelation')
title('{\bf Residual ACF Distributions}')
grid on

Figure contains an axes. The axes with title {\bf Residual ACF Distributions} contains 675 objects of type line.

clear ACFResRW

Цвета соответствуют значениям дрейфа на столбиковой диаграмме выше. График показывает расширенную, значительную остаточную автокорреляцию для большинства симуляций. Диагностика, связанная с остаточной автокорреляцией, обсуждается далее в примере «Регрессия временных рядов VI: Остаточная диагностика».

Дифференцирование

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

Различие между сериями TS и DS было широко изучено (для примера, в [3]), особенно эффекты недостаточного дифференцирования (обработка серий DS как TS) и сверхдифференцирование (обработка серий TS как DS). Если один тип тренда рассматривается как другой с неподходящей предварительной обработкой для достижения стационарности, результаты регрессии становятся ненадежными, и получившиеся модели обычно имеют плохую способность прогнозирования, независимо от подгонки в выборке.

Econometrics Toolbox™ имеет несколько тестов на наличие или отсутствие интегрирования: adftest, pptest, kpsstest, и lmctest. Например, дополненный тест Дикки-Фуллера, adftest, ищет статистические доказательства против ядра интегрирования. С настройками по умолчанию тесты на обоих IGD и BBB не отвергнуть null в пользу тренд-стационарной альтернативы:

IGD = y0;
BBB = X0(:,2);

[h1IGD,pValue1IGD] = adftest(IGD,'model','TS')
h1IGD = logical
   0

pValue1IGD = 0.1401
[h1BBB,pValue1BBB] = adftest(BBB,'model','TS')
h1BBB = logical
   0

pValue1BBB = 0.6976

Другие тесты, такие как тест KPSS, kpsstest, искать статистические данные против нуля трендстационарности. Результаты смешаны:

s = warning('off'); % Turn off large/small statistics warnings

[h0IGD,pValue0IGD] = kpsstest(IGD,'trend',true)
h0IGD = logical
   0

pValue0IGD = 0.1000
[h0BBB,pValue0BBB] = kpsstest(BBB,'trend',true)
h0BBB = logical
   1

pValue0BBB = 0.0100

Значения p 0,1 и 0,01 являются, соответственно, самыми большими и наименьшими в таблице критических значений, используемых правохвостой kpsstest. Они сообщаются, когда тестовая статистика, соответственно, очень маленькая или очень большая. Таким образом, доказательства против стационарности тренда особенно слабы в первом тесте и особенно сильны во втором тесте. The IGD результаты неоднозначны, не удается отклонить trend-stationarity даже после того, как тест Дикки-Фуллера не смог отклонить интегрирование. Результаты для BBB более последовательны, предполагая, что предиктор интегрирован.

Для предварительной обработки необходимо систематическое применение этих тестов ко всем переменным в регрессии и их различиям. Область служебной функции i10test автоматизирует необходимую серию тестов. Следующее выполняет парные тесты ADF/KPSS для всех переменных модели и их первых различий:

I.names = {'model'};
I.vals = {'TS'};
S.names = {'trend'};
S.vals = {true};

i10test(DataTable,'numDiffs',1,...
        'itest','adf','iparams',I,...
        'stest','kpss','sparams',S);
Test Results

        I(1)    I(0)    
======================
AGE     1       0       
        0.0069  0.1000  

D1AGE   1       0       
        0.0010  0.1000  
----------------------
BBB     0       1       
        0.6976  0.0100  

D1BBB   1       0       
        0.0249  0.1000  
----------------------
CPF     0       0       
        0.2474  0.1000  

D1CPF   1       0       
        0.0064  0.1000  
----------------------
SPR     0       1       
        0.2563  0.0238  

D1SPR   1       0       
        0.0032  0.1000  
----------------------
IGD     0       0       
        0.1401  0.1000  

D1IGD   1       0       
        0.0028  0.1000  
----------------------
warning(s) % Restore warning state

Столбцы показывают результаты тестирования и p-значения против нулей интегрирования, I(1), и стационарность, I(0). При заданных настройках параметра тесты предполагают, что AGE является стационарным (интегрированным из порядка 0) и BBB и SPR интегрированы, но переведены в стационарное состояние за счет одного различия (интегрированы в порядок 1). Результаты неоднозначны для CPF и IGD, но оба кажутся стационарными после одного различия.

Для сравнения с исходной регрессией в примере Регрессия временных рядов I: Линейные модели, мы заменяем BBB, SPR, CPF, и IGD с их первыми различиями, D1BBB, D1SPR, D1CPF, и D1IGD. Уходим AGE недифферифицированные:

D1X0 = diff(X0);
D1X0(:,1) = X0(2:end,1); % Use undifferenced AGE
D1y0 = diff(y0);
predNamesD1 = {'AGE','D1BBB','D1CPF','D1SPR'};
respNameD1 = {'D1IGD'};

Исходная регрессия с недифференцированными данными:

M0
M0 = 
Linear regression model:
    IGD ~ 1 + AGE + BBB + CPF + SPR

Estimated Coefficients:
                   Estimate        SE         tStat      pValue  
                   _________    _________    _______    _________

    (Intercept)     -0.22741     0.098565    -2.3072     0.034747
    AGE             0.016781    0.0091845     1.8271     0.086402
    BBB            0.0042728    0.0026757     1.5969      0.12985
    CPF            -0.014888    0.0038077      -3.91    0.0012473
    SPR             0.045488     0.033996      1.338       0.1996


Number of observations: 21, Error degrees of freedom: 16
Root Mean Squared Error: 0.0763
R-squared: 0.621,  Adjusted R-Squared: 0.526
F-statistic vs. constant model: 6.56, p-value = 0.00253

Регрессия с дифференцированными данными:

MD1 = fitlm(D1X0,D1y0,'VarNames',[predNamesD1,respNameD1])
MD1 = 
Linear regression model:
    D1IGD ~ 1 + AGE + D1BBB + D1CPF + D1SPR

Estimated Coefficients:
                   Estimate        SE         tStat       pValue  
                   _________    _________    ________    _________

    (Intercept)    -0.089492      0.10843    -0.82535       0.4221
    AGE             0.015193     0.012574      1.2083      0.24564
    D1BBB          -0.023538     0.020066      -1.173      0.25909
    D1CPF          -0.015707    0.0046294      -3.393    0.0040152
    D1SPR           -0.03663      0.04017    -0.91187      0.37626


Number of observations: 20, Error degrees of freedom: 15
Root Mean Squared Error: 0.106
R-squared: 0.49,  Adjusted R-Squared: 0.354
F-statistic vs. constant model: 3.61, p-value = 0.0298

Дифференцированные данные увеличивают стандартные ошибки по всем оценкам коэффициентов, а также по общему RMSE. Это может быть цена коррекции ложной регрессии. Знак и размер оценки коэффициента для недифференцированного предиктора, AGE, показывает небольшие изменения. Даже после дифференцирования CPF имеет выраженное значение среди предикторов. Принятие пересмотренной модели зависит от практических факторов, таких как объяснительная простота и прогнозируемая эффективность, оцененная в примере регрессия временных рядов VII: Прогнозирование.

Сводные данные

Из-за возможности ложной регрессии обычно рекомендуется, чтобы переменные в регрессиях временных рядов были детрендированы, по мере необходимости, чтобы достичь стационарности перед оценкой. Однако существуют компромиссы между работой с переменными, которые сохраняют свой первоначальный экономический смысл, и преобразованными переменными, которые улучшают статистические характеристики оценки OLS. Компромисс может оказаться трудным для оценки, поскольку степень «паразитности» в исходной регрессии не может быть измерена непосредственно. Методы, обсуждаемые в этом примере, вероятно, улучшат прогнозирующие способности получаемых моделей, но могут сделать это за счет объяснительной простоты.

Ссылки

[1] Clarke, K. A. «The Phantom Menace: Omitted Variable Bias in Econometric Research». Управление конфликтами и наука о мире. Том 22, 2005, стр. 341-352.

[2] Грейнджер, К. У. Дж., и П. Ньюболд. Ложные регрессии в эконометрике. Журнал эконометрики. Том 2, 1974, стр. 111-120.

[3] Нельсон, К. и К. Плоссер. «Тренды и случайные прогулки в макроэкономических временных рядах: некоторые доказательства и последствия». Журнал денежной экономики. Том 10, 1982, с. 130-162.