В этом примере рассматриваются переменные тренда, ложная регрессия и методы аккомодации в нескольких линейных регрессионых моделях. Это четвертый в серии примеров по регрессии временных рядов, после представления в предыдущих примерах.
Предикторы, которые стремятся со временем, иногда просматриваются с подозрением в многофакторных линейных регрессиях (MLR). Однако по отдельности они не должны влиять на обычную оценку методом наименьших квадратов (OLS). В частности, нет необходимости линеаризировать и детрендировать каждый предиктор. Если значения отклика хорошо описаны линейной комбинацией предикторов, MLR-модель все еще применима, и предположения классической линейной модели (CLM) не нарушаются.
Если, однако, трендовый предиктор в паре с трендовым ответом, существует возможность ложной регрессии, где -статистика и общие меры подгонки становятся «значительными», что вводит в заблуждение. То есть статистическая значимость отношений в модели не точно отражает причинную значимость отношений в процессе генерации данных (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
Удаление точки уменьшает тренд, но не устраняет его.
Кроме того, переменные преобразования используются для удаления трендов. Это может улучшить статистические свойства регрессионой модели, но это усложняет анализ и интерпретацию. Любое преобразование изменяет экономический смысл переменной, отдавая предпочтение прогностической степени модели по сравнению с объяснительной простотой.
Способ удаления тренда зависит от типа тренда. Один из типов тренда возникает в процессе trend-stationar (TS), который является суммой детерминированного тренда и стационарного процесса. Переменные TS, после идентификации, часто линеаризируются с преобразованием степени или логарифмическим преобразованием, затем детрендируются путем регрессии во времени. The detrend
функция, используемая выше, удаляет линию методом наименьших квадратов из данных. Это преобразование часто имеет побочный эффект упорядочивания влиятельных наблюдений.
Однако не все тренды являются TS. Разностные стационарные (DS) процессы, также известные как интегрированные или единичные корневые процессы, могут проявлять стохастические тренды без разложения TS. Когда предиктор DS работает в паре с DS-ответом, появляются проблемы ложной регрессии [2]. Это верно, даже если серия сгенерирована независимо друг от друга, без каких-либо путаниц. Проблема осложняется тем, что не все серии DS в тренде.
Примите во внимание следующие регрессии между случайными прогулками DS с различными степенями дрейфа. Коэффициент детерминации () вычисляется в повторных реализациях и отображается распределение. Для сравнения, также отображается распределение для регрессий между случайными векторами (без авторегрессивной зависимости):
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}')
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}')
clear RSqR
для регрессий случайной ходьбы становится более значимым, когда коэффициент дрейфа увеличивается. Даже при нулевом дрейфе регрессии случайной ходьбы более значительны, чем регрессии между случайными векторами, где значения падают почти исключительно ниже 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
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-значения против нулей интегрирования, , и стационарность, . При заданных настройках параметра тесты предполагают, что 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.