cusumtest

Тест Cusum на структурное изменение

Описание

Тесты Cusum оценивают стабильность коэффициентов (β) в множественной линейной регрессионой модели вида y = + ε. Вывод основан на последовательности сумм или сумм квадратов рекурсивных невязок (стандартизированных ошибок прогноза на один шаг вперед), итерационно вычисленных из вложенных подвыборок данных. При нулевой гипотезе постоянства коэффициентов значения последовательности вне ожидаемой области значений предполагают структурное изменение модели с течением времени.

пример

cusumtest(X,y) строит графики как последовательности cusum, так и критических линий для проведения теста cusum на многофакторные линейные регрессии y = Xβ + ε.

пример

cusumtest(Tbl) графики с использованием данных в табличном массиве Tbl. Первый numPreds столбцы являются предикторами (X) и последний столбец является ответом (y).

пример

cusumtest(___,Name,Value) задает опции, использующие один или несколько аргументы пары "имя-значение" в дополнение к входным параметрам в предыдущих синтаксисах. Для примера можно указать, какой тип теста cusum проводить при помощи 'Test' или укажите, включать ли точку пересечения в модель множественной регрессии, используя 'Intercept'.

пример

[h,H,Stat,W,B] = cusumtest(___) возвращает:

  • h, решение о тесте

  • H, последовательность решений для каждой итерации теста

  • Stat, последовательность тестовой статистики

  • W, последовательность рекурсивных невязок

  • B, последовательность оценок коэффициентов

cusumtest(ax,___) графики на осях, заданных ax вместо текущей системы координат (gca). ax может предшествовать любой комбинации входных аргументов в предыдущих синтаксисах.

[h,H,Stat,W,B,sumPlots] = cusumtest(___) дополнительно возвращает указатели на графические объекты. Используйте элементы sumPlots для изменения свойств графика после его создания.

Примеры

свернуть все

Определить, является ли объяснительная модель реального валового национального продукта (ВНП) стабильной, можно путем построения графиков рекурсивных невязок.

Загрузите набор данных Нелоссона-Плоссера.

load Data_NelsonPlosser

Временные ряды в наборе данных содержат ежегодные макроэкономические измерения с 1860 по 1970 год. Для получения дополнительной информации, списка переменных и описаний введите Description в командной строке.

Несколько серий имеют отсутствующие данные. Фокусируйте выборку на измерениях с 1915 по 1970 год.

span = (1915 <= dates) & (dates <= 1970);

Рассмотрим многофакторную линейную регрессию

GNPRt=β0+β1IPIt+β2Et+β3WRt.

Соберите переменные модели в табличный массив. Позиционируйте ответ как последнюю переменную.

Mdl = DataTable(span,[4,5,10,1]);

Постройте график тестовой статистики.

cusumtest(Mdl);

Figure contains an axes. The axes with title {\bf Test 1} contains 3 objects of type line. These objects represent Statistic, Critical Lines.

Серия cusum пересекает верхнюю критическую линию после 45-й рекурсивной регрессии, что указывает на нестабильность модели.

Проведите cusum-тесты, чтобы оценить, есть ли структурные изменения в уравнении спроса на продовольствие во время Первой мировой войны. Реализуйте прямую и обратную рекурсивные регрессии, чтобы получить статистику тестов.

Загрузите набор данных о потреблении продовольствия в США, который содержит ежегодные измерения с 1927 по 1962 год с отсутствующими данными из-за войны.

load Data_Consumption

Для получения дополнительной информации о данных введите Description в командной строке.

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

Постройте график серии.

P = Data(:,1); % Food price index
I = Data(:,2); % Disposable income index
Q = Data(:,3); % Food consumption index

figure;
plot(dates,[P I Q],'o-')
axis tight
grid on
xlabel('Year')
ylabel('Index')
title('{\bf Time Series Plot of All Series}')
legend({'Price','Income','Consumption'},'Location','SE')

Figure contains an axes. The axes with title {\bf Time Series Plot of All Series} contains 3 objects of type line. These objects represent Price, Income, Consumption.

Измерения отсутствуют с 1942 по 1947 год, что соответствует Второй мировой войне.

Чтобы изучить эластичность, примените преобразование журнала к каждой серии.

LP = log(P);
LI = log(I);
LQ = log(Q);

Предположим, что потребление журналов является линейной функцией от журналов цен на продовольствие и доходов. Другими словами,

LQt=β0+β1LIt+β2Альбом+εt.

εt является Гауссовой случайной переменной со средним 0 и стандартным отклонением σ2.

Определить индексы до Второй мировой войны. График журнала потребление с учетом журналов цен на продовольствие и доходов.

preWarIdx = (dates <= 1941);

figure
scatter3(LP(preWarIdx),LI(preWarIdx),LQ(preWarIdx),[],'ro');
hold on
scatter3(LP(~preWarIdx),LI(~preWarIdx),LQ(~preWarIdx),[],'b*');
legend({'Pre-war observations','Post-war observations'},...
    'Location','Best')
xlabel('Log price')
ylabel('Log income')
zlabel('Log consumption')
title('{\bf Food Consumption Data}')
% Get a better view
h = gca;
h.CameraPosition = [4.3 -12.2 5.3];

Figure contains an axes. The axes with title {\bf Food Consumption Data} contains 2 objects of type scatter. These objects represent Pre-war observations, Post-war observations.

Проведите прямые и обратные тесты с использованием 5% -ного уровня значимости для каждого теста. Постройте купюры.

cusumtest([LP,LI],LQ,'Direction',{'forward','backward'},'Plot','on');
RESULTS SUMMARY

***************
Test 1

Test type: cusum
Test direction: forward
Intercept: yes
Number of iterations: 27

Decision: Fail to reject coefficient stability
Significance level: 0.0500

Figure contains an axes. The axes with title {\bf Test 1} contains 3 objects of type line. These objects represent Statistic, Critical Lines.

***************
Test 2

Test type: cusum
Test direction: backward
Intercept: yes
Number of iterations: 27

Decision: Fail to reject coefficient stability
Significance level: 0.0500

Figure contains an axes. The axes with title {\bf Test 2} contains 3 objects of type line. These objects represent Statistic, Critical Lines.

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

Сравните результаты тестов cusum с результатами критерия Чоу. В отличие от тестов cusum, Критерии Чоу требуется предположение о времени точки в котором происходит структурный пропуск. Укажите, что точкой пропуска является 1941 год.

bp = find(preWarIdx,1,'last');
chowtest([LP,LI],LQ,bp,'Display','summary');
RESULTS SUMMARY

***************
Test 1

Sample size: 30
Breakpoint: 15

Test type: breakpoint
Coefficients tested: All

Statistic: 5.5400
Critical value: 3.0088

P value: 0.0049
Significance level: 0.0500

Decision: Reject coefficient stability

Результаты теста отвергают нулевую гипотезу о том, что коэффициенты стабильны.

Результаты теста Chow и cusum непротиворечивы. Для получения дополнительной информации об ограничениях теста cusum, см. «Ограничения».

Проверьте, может ли тест cusum of квадратов обнаружить структурный пропуск волатильности в моделируемых данных.

Симулируйте серию данных из этой регрессионой модели

{yt=[123]xt+ε1t;t=1,...,50yt=[123]xt+ε2t;t=51,...,100.

xt является серией наблюдений из трех стандартных переменных Гауссова предиктора. ε1t и ε2t являются сериями Гауссовых инноваций со средним 0 и стандартным отклонением 0,1 и 0,2 соответственно.

rng(1); % For reproducibility
T = 100;
X = randn(T,3);
sigma1 = 0.1;
sigma2 = 0.2;
e = [sigma1*randn(T/2,1); sigma2*randn(T/2,1)];
b = (1:3)';
y = X*b + e;

Проведите тест cusum of квадратов, используя 5% -ный уровень значимости. Постройте график тестовой статистики и полос критических областей. Укажите, что точка пересечения модели отсутствует. Запрос на возврат тестовой статистики в критическую область при каждой итерации.

[~,H] = cusumtest(X,y,'Test','cusumsq','Plot','on',...
    'Direction',{'forward','backward'},'Display','off','Intercept',false);

Figure contains an axes. The axes with title {\bf Test 1} contains 3 objects of type line. These objects represent Statistic, Critical Lines.

Figure contains an axes. The axes with title {\bf Test 2} contains 3 objects of type line. These objects represent Statistic, Critical Lines.

Поскольку статистика тестов пересекает критические линии хотя бы один раз для обоих тестов, тесты отвергают нулевую гипотезу постоянной волатильности на уровне 5%. Тестовая статистика изменяет направление вокруг итерации 50, что согласуется с моделируемым пропуском волатильности в данных.

H является логической матрицей 2 на 97, содержащей последовательность решений для каждой итерации каждого критерия квадратов. Первая строка соответствует прямому кузову критерия квадратов, а вторая строка соответствует обратному кузову критерия квадратов.

Для прямого теста определите итерации, которые приводят к тому, что тестовая статистика пересекает критическую линию.

bp = find(H(1,:) == 1)
bp = 1×35

    24    25    26    27    28    29    30    31    32    33    34    35    36    37    38    39    40    41    42    43    44    45    46    47    48    49    50    51    52    53    54    55    56    57    58

Входные параметры

свернуть все

Данные предиктора для многофакторной линейной регрессии, заданные как numObs-by- numPreds числовая матрица.

numObs количество наблюдений и numPreds - количество переменных предиктора.

Типы данных: double

Данные отклика для многофакторной линейной регрессии, заданные как numObs-by-1 числовой вектор.

Типы данных: double

Объединенные данные предиктора и отклика для многофакторной линейной регрессии, заданные как numObs-by- numPreds + 1 табличный массив.

Первый numPreds столбцы Tbl являются данными предиктора, и последний столбец является данными отклика.

Типы данных: table

Оси, на которых можно построить график, заданные как вектор Axes объекты с numTests длины.

По умолчанию, cusumtest строит графики каждого теста на отдельный рисунок.

Примечание

cusumtest удаляет наблюдения с отсутствующими (NaN) значения в предикторах или ответ.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'Intercept',false,'Test','cusumsq' указывает, чтобы исключить член точки пересечения из регрессионной модели и использовать совокупную сумму квадратов статистической.

Укажите, включать ли точку пересечения, cusumtest подходит для регрессионной модели, заданной как разделенная разделенными запятой парами, состоящая из 'Intercept' и true, false, или логический вектор длины numTests.

ЗначениеОписание
truecusumtest включает точку пересечения при подборе регрессионной модели. numCoeffs = numPreds + 1.
falsecusumtest не включает точку пересечения при подборе регрессионной модели. numCoeffs = numPreds.

Пример: 'Intercept',false(3,1)

Типы данных: logical

Тип теста cusum, заданный как разделенная разделенными запятой парами, состоящая из 'Test' и 'cusum', 'cusumsq', или строковый вектор или вектор камеры тестовых типов длины numTests.

ЗначениеОписание
'cusum'Статистика теста Cusum. См. раздел [1].
'cusumsq'Cusum тестовой статистики квадратов. См. раздел [1].

Пример: 'Test','cusumsq'

Типы данных: char | cell | string

Направление итерации, заданное как разделенная разделенными запятой парами, состоящая из 'Direction' и 'forward', 'backward', или строковый вектор или камера направлений.

ЗначениеОписание
'forward'

cusumtest вычисляет рекурсивные невязки, начиная с первого numCoeffs + 1 наблюдение. Затем, cusumtest добавляет по одному, пока не достигает numObs наблюдения.

'backward'

cusumtest меняет порядок наблюдений на противоположный, а затем выполняет те же шаги, что и в 'forward'.

Пример: 'Direction','backward'

Типы данных: char | cell | string

Номинальные уровни значимости для тестов, заданные как разделенная разделенными запятой парами, состоящая из 'Alpha' и числовой скаляр или числовой вектор длины numTests.

  • Для cusum-тестов все элементы Alpha должен находиться в интервале (0,1).

  • Для cusum квадратов тестов, все элементы Alpha должно находиться в интервале [0,01,0,20].

Пример: 'Alpha',0.1

Типы данных: double

Флаг, указывающий, отображать ли результаты тестирования в командном окне, задается как разделенная разделенными запятой парами, состоящая из 'Display' и 'off' или 'summary'.

ЗначениеОписаниеЗначение по умолчанию, когда
'off'Нет отображенияnumTests = 1
'summary'Для каждого теста отобразите результаты теста в командном окнеnumTests > 1

Пример: 'Display','off'

Типы данных: char | string

Флаг, указывающий, будет ли строиться график результатов тестирования, задается как разделенная разделенными запятой парами, состоящая из 'Plot' и 'on' или 'off'.

В зависимости от значения Testграфики показывают последовательность cusums или cusums квадратов вместе с критическими линиями, определяемыми значением Alpha.

ЗначениеОписаниеЗначение по умолчанию, когда
'off'cusumtest не производит никаких графиков.cusumtest возвращает любой выходной аргумент
'on'cusumtest создает отдельные участки для каждого теста.cusumtest не возвращает никаких выходных аргументов

Пример: 'Plot','off'

Типы данных: char | string

Примечание

cusumtest определяет количество тестов, numTests, по длине любого вектора значения параметров. cusumtest расширяет значения параметров скаляра или символьного массива до векторов длины numTests. Все векторные значения должны иметь длину numTests. Если любое значение параметров является вектором-строкой, это так же выход h. Выходы массива сохраняют заданные измерения.

Выходные аргументы

свернуть все

Решения теста Cusum, возвращенные как логический скаляр или логический вектор длины numTests.

Гипотезы не зависят от значения Test:

H 0: Коэффициенты в β равны во всех последовательных подвыборках.
H 1: Коэффициенты в β изменяются в течение периода выборки.
  • h = 1 указывает на отказ от H 0 в пользу H 1.

  • h = 0 указывает, отказ отклонить H 0.

Последовательность решений для каждой итерации тестов cusum, возвращенная как numTests-by- (numObsnumPreds) логическая матрица.

Строки соответствуют отдельным тестам cusum, а столбцы соответствуют итерациям.

  • Для тестов, в которых Direction является 'forward'индексы столбцов соответствуют временам numPreds + 1..., numObs.

  • Для тестов, в которых Direction является 'backward'индексы столбцов соответствуют временам numObs – (numPreds + 1),...,1.

Строки, соответствующие тестам, в которых Intercept является true содержат на одну итерацию меньше, и значение в первом столбце H по умолчанию является false.

Для определенного теста (строки), если какое-либо решение теста в последовательности 1, затем h является 1, то есть h = any(H,2). В противном случае h является false.

Последовательность тестовой статистики для каждой итерации тестов cusum, возвращенная как numTests-by- (numObsnumPreds) числовая матрица.

Строки соответствуют отдельным тестам cusum, а столбцы соответствуют итерациям.

Значения в любой строке зависят от значения Test. Индексация соответствует индексации в H.

Строки, соответствующие тестам, в которых Intercept является true содержат на одну итерацию меньше, и значение в первом столбце Stat по умолчанию является NaN.

Последовательность стандартизированных рекурсивных невязок, возвращаемая как numTests-by- (numObsnumPreds) числовая матрица.

Строки соответствуют отдельным тестам cusum, а столбцы соответствуют итерациям.

Строки, соответствующие тестам, в которых Intercept является true содержат на одну итерацию меньше, и значение в первом столбце W по умолчанию является NaN.

Последовательность оценок рекурсивных коэффициентов регрессии, возвращенная как a (numPreds + 1) -by- (numObsnumPreds) -by- numTests числовой массив.

  • B (i, j, k) соответствует коэффициенту i при итерации j для тестовых k.

    При итерации j тестовых k, cusumtest оценивает коэффициенты используя

    B(:,j,k) = X(1:numPreds+j,inRegression)\y(1:numPreds+j);
    inRegression является логическим вектором, указывающим предикторы в регрессии при итерации j тестовых k.

  • Во время прямых итераций первоначально постоянные предикторы могут вызвать многоколлинейность. Поэтому, cusumtest сохраняет постоянные предикторы до тех пор, пока их данные не изменятся. Для итераций, в которых cusumtest исключает предикторы из регрессии, соответствующие оценки коэффициентов по умолчанию NaN. Точно так же для регрессии назад, cusumtest выдает терминально постоянные предикторы. Для получения дополнительной информации см. раздел [1].

  • Тесты, в которых:

    • Intercept является true содержат на одну итерацию меньше, и все значения в первом столбце B по умолчанию это NaN.

    • Intercept является false содержат один меньший коэффициент, и значение в первой строке, которое соответствует точке пересечения, по умолчанию равняется NaN.

Указатели на графические объекты, возвращенные как 3-by- numTests графический массив. sumPlots содержит уникальные идентификаторы графика, которые можно использовать для запроса или изменения свойств графика.

Ограничения

Тесты Cusum имеют мало степеней для обнаружения структурных изменений:

  • Поздний период дискретизации

  • Когда многочисленные изменения приводят к отмене в cusums

Подробнее о

свернуть все

Тесты Cusum

Cusum tests обеспечивают полезную диагностику для различных заданий модели, включая постепенное структурное изменение, многочисленные структурные изменения, отсутствующие предикторы и забытые нелинейности. Тесты, сформулированные в [1], основаны на совокупных суммах или cusums невязок, полученных в результате рекурсивных регрессий.

Совет

  • Cusum квадратичного теста:

    • Является «полезным дополнением теста cusum, особенно, когда уход от постоянства [рекурсивных коэффициентов] является бессистемным, а не систематическим» [1]

    • Имеет большую степень для случаев, в которых несколько сдвигов, вероятно, отменят

    • Часто предлагается для обнаружения структурных пропусков в волатильности

  • Alpha определяет номинальные уровни значимости для тестов. Фактический размер теста зависит от различных допущений и приближений, которые cusumtest используется для вычисления критических линий. Графики рекурсивных невязок являются лучшим показателем структурного изменения. Brown, et al. предположим, что тесты «должны рассматриваться как критерии интерпретации данных, а не приводить к принятию жестких и быстрых решений» [1].

  • Чтобы создать базовые диагностические графики оценок рекурсивных коэффициентов, имеющих ту же шкалу для тестовых n, введите

    plot(B(:,:,n)')
    recreg создает похожие графики, опционально используя робастные стандартные полосы ошибок.

Алгоритмы

  • cusumtest обрабатывает первоначально постоянные данные предиктора, используя метод, предложенный в [1]. Если данные предиктора постоянны для первого numCoeffs наблюдения и это приводит к многоколлинейности с точкой пересечения или другим предиктором, затем cusumtest отбрасывает предиктор из регрессий и расчетов рекурсивных невязок до тех пор, пока его данные не изменятся. Точно так же, cusumtest временно удерживает терминально постоянные предикторы от обратных регрессий. Первоначально постоянные предикторы в обратных регрессиях или терминально постоянные предикторы в прямых регрессиях не удерживаются cusumtest, и может привести к дефициту ранга в терминальных итерациях.

  • cusumtest вычисляет критические линии для вывода по существу различными способами для двух тестовых статистических данных. Для cusums, cusumtest решает нормальное уравнение CDF в [1] динамически для каждого значения Alpha. Для cusums квадратов тест, cusumtest интерполирует значения параметров из таблицы в [2], используя метод, предложенный в [1]. Размеры выборки со степенями свободы менее 4 ниже табличных значений, и cusumtest невозможно вычислить критические линии. Размеры выборки со степенями свободы более 202 являются выше табличных значений, и cusumtest использует критическое значение, сопоставленное с наибольшим табличным размером выборки.

Ссылки

[1] Браун, Р. Л., Дж. Дурбин и Дж. М. Эванс. Методы проверки постоянства регрессионных отношений с течением времени. Журнал Королевского статистического общества, серия B. Vol. 37, 1975, pp. 149-192.

[2] Durbin, J. «Тесты для последовательной корреляции в регрессионном анализе на основе периодограммы невязок методом наименьших квадратов». Биометрика. Том 56, 1969, с. 1-15.

См. также

| | |

Введенный в R2016a