cusumtest

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

Описание

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

пример

cusumtest(X,y) графики и последовательность cusums и критические линии для проведения 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 изменить свойства графика после того, как вы создаете его.

Примеры

свернуть все

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

Загрузите набор данных Nelosson-Plosser.

load Data_NelsonPlosser

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

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

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

Рассмотрите модель многофакторной линейной регрессии

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

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

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

Постройте тестовую статистику.

cusumtest(Mdl);

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

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

Загрузите американский продовольственный набор данных потребления, который содержит ежегодные измерения от 1 927 до 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')

Измерения отсутствуют от 1 942 до 1947, которые соответствуют Второй мировой войне.

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

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

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

LQt=β0+β1LIt+β2LP+ε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];

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

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

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

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

Decision: Fail to reject coefficient stability
Significance level: 0.0500

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

Сравните результаты тестов 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

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

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

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

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

{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);

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

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

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

Типы данных: логический

Тип теста 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- (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) (numObsnumPreds)-by-numTests числовой массив.

  • B (iJK) соответствует коэффициенту 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 tests обеспечивает полезную диагностику для различной модели misspecifications, включая постепенное структурное изменение, несколько структурных изменений, недостающих предикторов и нелинейности, которой пропускают. Тесты, сформулированные в [1], основаны на совокупных суммах или cusums, невязки, следующей из рекурсивных регрессий.

Советы

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

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

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

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

  • Alpha задает номинальные уровни значения для тестов. Фактический размер теста зависит от различных предположений и приближений что cusumtest используется для расчета критических линий. Графики рекурсивных остаточных значений являются лучшим индикатором структурного изменения. Браун, и др. предложите, чтобы тесты “рассматривались как критерии для интерпретации данных вместо того, чтобы вести к надежным решениям” [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] Браун, R. L. Дж. Дербин и Дж. М. Эванс. “Методы для Тестирования Постоянства Отношений Регрессии В зависимости от времени”. Журнал Королевского Статистического Общества, Серий B. Издание 37, 1975, стр 149–192.

[2] Durbin, J. “Тесты для Последовательной Корреляции в Регрессионном анализе На основе Периодограммы Остаточных значений Наименьших квадратов”. Biometrika. Издание 56, 1969, стр 1–15.

Смотрите также

| | |

Введенный в R2016a

Для просмотра документации необходимо авторизоваться на сайте