exponenta event banner

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, чтобы оценить, есть ли структурные изменения в уравнении спроса на продовольствие вокруг мировой войны II. Внедрение прямой и обратной рекурсивных регрессий для получения статистики теста.

Загрузите набор данных о потреблении продовольствия в США, который содержит ежегодные измерения с 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 + β2LP + αt.

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

Определить индексы до мировой войны II. Построить график потребления по отношению к журналам цен на продовольствие и доходов.

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.

Проведение прямых и обратных тестов cusum с использованием уровня значимости 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 с результатами теста Chow. В отличие от тестов cusum, тесты Chow требуют угадать момент времени, в который происходит структурный разрыв. Укажите, что точка разрыва равна 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 squares обнаружить структурный разрыв волатильности в смоделированных данных.

Моделирование серии данных из этой регрессионной модели

{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 квадратов, используя уровень значимости 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, содержащая последовательность решений для каждой итерации каждого теста cusum квадратов. Первая строка соответствует прямой cusum теста квадратов, а вторая строка соответствует обратной cusum теста квадратов.

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

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около-numPreds числовая матрица.

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

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

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

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

Комбинированные данные предиктора и ответа для модели множественной линейной регрессии, указанной как numObsоколо-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, графики показывают последовательность кусумов или кусумов квадратов вместе с критическими линиями, определяемыми значением Alpha.

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

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

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

Примечание

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

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

свернуть все

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

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

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

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

Последовательность решений для каждой итерации тестов cusum, возвращаемых в виде numTestsоколо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околоnumObsnumPreds) числовая матрица.

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

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

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

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

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

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

Последовательность оценок коэффициента рекурсивной регрессии, возвращенная как (numPreds + 1) -by- (numObsnumPredsоколо-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около-numTests графический массив. sumPlots содержит уникальные идентификаторы графика, которые можно использовать для запроса или изменения свойств графика.

Ограничения

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

  • В конце периода выборки

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

Подробнее

свернуть все

Тесты Cusum

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

Совет

  • Проверка cusum квадратов:

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

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

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

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

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

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

Алгоритмы

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

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

Ссылки

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

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

См. также

| | |

Представлен в R2016a