cusumtest

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

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

Синтаксис

cusumtest(X,y)
cusumtest(Tbl)
cusumtest(___,Name,Value)
[h,H,Stat,W,B] = cusumtest(___)
cusumtest(ax,___)
[h,H,Stat,W,B,sumPlots] = cusumtest(___)

Описание

пример

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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)

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

Тип теста 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(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 обеспечивает полезную диагностику для различной модели 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