chowtest

Критерий Чоу для структурного изменения

Критерии Чоу оценивают устойчивость коэффициентов β в модели линейной регрессии кратного формы y = X β + ε. Данные разделены в заданных точках останова. Коэффициенты оцениваются в начальных подвыборках, затем протестировали на совместимость с данными в дополнительных подвыборках.

Синтаксис

h = chowtest(X,y,bp)
h = chowtest(Tbl,bp)
h = chowtest(___,Name,Value)
[h,pValue,stat,cValue] = chowtest(___)

Описание

пример

h = chowtest(X,y,bp) возвращает тестовые решения (h) в проведение критериев Чоу на нескольких модель y линейной регрессии  = X β + ε в точках останова в bp.

пример

h = chowtest(Tbl,bp) возвращает тестовые решения с помощью данных в табличном массиве Tbl. Первые столбцы numPreds являются предикторами (X), и последний столбец является ответом (y).

пример

h = chowtest(___,Name,Value) использование любой из входных параметров в предыдущих синтаксисах и дополнительных опциях задано одним или несколькими аргументами пары Name,Value. Например, можно задать, какой тип критерия Чоу провести или задать, включать ли прерывание в модель множественной регрессии.

пример

[h,pValue,stat,cValue] = chowtest(___) дополнительно возвращает p - значения, тестовая статистика и критические значения для тестов.

Примеры

свернуть все

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

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

Отношения данных, кажется, затронуты войной.

Проведите две точки останова критерии Чоу на 5%-м уровне значения. Для первого теста, набор точка останова в 1 941. Установите точку останова другого теста в 1 948.

bp = find(preWarIdx,1,'last');

h1941 = chowtest([LP LI],LQ,bp)     
h1941 = logical
   1

h1948 = chowtest([LP LI],LQ,bp + 1)
h1948 = logical
   0

h1941 = 1 указывает, что существует значительное отклонение доказательства нулевая гипотеза, что коэффициенты стабильны, когда точки останова происходят перед войной. Однако h1948 = 0 указывает, что существует недостаточно доказательства, чтобы отклонить содействующую устойчивость, если точка останова после войны. Этот результат предполагает, что данные в 1 948 влияют.

Также можно предоставить вектор точек останова, чтобы провести три критерия Чоу.

h = chowtest([LP LI],LQ,[bp bp+1]);
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

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

Sample size: 30
Breakpoint: 16

Test type: breakpoint
Coefficients tested: All

Statistic: 1.2942
Critical value: 3.0088

P value: 0.2992
Significance level: 0.0500

Decision: Fail to reject coefficient stability

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

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

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

load Data_NelsonPlosser

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

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

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

Примите, что соответствующая модель множественной регрессии, чтобы описать действительный GNP

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

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

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

Выберите индекс, соответствующий 1945, конец Второй мировой войны.

bp = find(strcmp(Mdl.Properties.RowNames,'1945'));

Используя 1 945 как точка останова, проведите тест точки останова, чтобы оценить, стабильны ли все коэффициенты регрессии.

h = chowtest(Mdl,bp)
h = logical
   1

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

В дополнение к возврату тестового решения можно запросить что тестовое отображение сводных данных в Командном окне.

h = chowtest(Mdl,bp,'Display','summary');
RESULTS SUMMARY

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

Sample size: 56
Breakpoint: 31

Test type: breakpoint
Coefficients tested: All

Statistic: 11.1036
Critical value: 2.5652

P value: 0.0000
Significance level: 0.0500

Decision: Reject coefficient stability

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

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

load Data_Consumption
P = Data(:,1); 
I = Data(:,2); 
Q = Data(:,3);

Примените логарифмическое преобразование к каждому ряду.

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

Идентифицируйте индексы перед Второй мировой войной.

preWarIdx = (dates <= 1941);

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

figure;
subplot(2,2,1)
plot(LP(preWarIdx),LQ(preWarIdx),'bo',LP(~preWarIdx),LQ(~preWarIdx),'r*');
axis tight
grid on
lsline;
xlabel('Log price')
ylabel('Log consumption')
legend('Pre-war observations','Post-war observations',...
    'Location',[0.6,0.6,0.25,0.25])
subplot(2,2,4)
plot(LI(preWarIdx),LQ(preWarIdx),'bo',LI(~preWarIdx),LQ(~preWarIdx),'r*');
axis tight
grid on
lsline
xlabel('Log income')
ylabel('Log consumption')

Ясный перерыв в эластичности цены на продовольственные товары существует между подвыборками до и после войны. Однако поступите, эластичность, кажется, не имеет такой пропуск.

Проведите два критерия Чоу, чтобы определить, существуют ли статистические данные, чтобы отклонить непрерывность модели для обеих моделей регрессии. Поскольку существует больше наблюдений в дополнительной подвыборке, чем коэффициенты, проводит тест точки останова. Рассмотрите эластичности в тесте только. Таким образом, задайте 0 или false для прерывания (первый коэффициент), и 1 или true для эластичности (второй коэффициент).

bp = find(preWarIdx,1,'last'); % Index for 1941
chowtest(LP,LQ,bp,'Coeffs',[0 1],'Display','summary');
RESULTS SUMMARY

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

Sample size: 30
Breakpoint: 15

Test type: breakpoint
Coefficients tested: 0  1

Statistic: 7.3947
Critical value: 4.2252

P value: 0.0115
Significance level: 0.0500

Decision: Reject coefficient stability
chowtest(LI,LQ,bp,'Coeffs',[0 1],'Display','summary');
RESULTS SUMMARY

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

Sample size: 30
Breakpoint: 15

Test type: breakpoint
Coefficients tested: 0  1

Statistic: 0.1289
Critical value: 4.2252

P value: 0.7225
Significance level: 0.0500

Decision: Fail to reject coefficient stability

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

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

chowtest([LP,LI],LQ,bp,'Coeffs',[0 1 0; 0 0 1]);
RESULTS SUMMARY

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

Sample size: 30
Breakpoint: 15

Test type: breakpoint
Coefficients tested: 0  1  0

Statistic: 0.0001
Critical value: 4.2597

P value: 0.9920
Significance level: 0.0500

Decision: Fail to reject coefficient stability

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

Sample size: 30
Breakpoint: 15

Test type: breakpoint
Coefficients tested: 0  0  1

Statistic: 2.8151
Critical value: 4.2597

P value: 0.1064
Significance level: 0.0500

Decision: Fail to reject coefficient stability

Для обоих тестов существует недостаточно доказательства, чтобы отклонить устойчивость модели на 5%-м уровне.

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

Задайте четыре предиктора, 50 наблюдений и точку останова в период 44 для моделируемой линейной модели.

numPreds = 4;
numObs = 50;
bp = 44;
rng(1); % For reproducibility

Сформируйте данные о предикторе путем определения средних значений для предикторов, и затем добавления случайного, стандартного Гауссова шума в каждое из средних значений.

mu = [0 1 2 3];
X = repmat(mu,numObs,1) + randn(numObs,numPreds);

Добавьте столбец из единиц к данным о предикторе.

X = [ones(numObs,1) X];

Задайте истинные значения коэффициентов регрессии и что прерывание и коэффициент второго предиктора переходят на 10%.

beta1 = [1 2 3 4 5]';                                % Initial subsample coefficients
beta2 = beta1 + [beta1(1)*0.1 0 beta1(3)*0.1 0 0 ]'; % Complementary subsample coefficients
X1 = X(1:bp,:);                                      % Initial subsample predictors
X2 = X(bp+1:end,:);                                  % Complementary subsample predictors

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

test1 = [true false true false false]; 
Coeffs = [test1; ~test1]
Coeffs = 2x5 logical array

   1   0   1   0   0
   0   1   0   1   1

Нулевая гипотеза для первого теста (Coeffs(1,:)) является равенством прерываний и коэффициентами второго предиктора через подвыборки. Нулевая гипотеза для второго теста (Coeffs(2,:)) является равенством первых, третьих, и четвертых предикторов через подвыборки.

Моделируйте данные для линейной модели

y=[X100X2][beta1beta2]+innov.

Создайте innov как вектор случайных Гауссовых варьируемых величин со средним нулевым и стандартным отклонением 0.2.

sigma = 0.2;
innov = sigma*randn(numObs,1);
y = [X1 zeros(bp,size(X2,2)); zeros(numObs - bp,size(X1,2)) X2]*[beta1; beta2]... 
    + innov;

Проведите два теста точки останова, обозначенные в Coeffs. Поскольку уже существует прерывание в матрице предиктора X, задайте, чтобы подавить его включение в линейную модель, которой соответствует chowtest.

chowtest(X,y,bp,'Intercept',false,'Coeffs',Coeffs,'Display','summary');
RESULTS SUMMARY

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

Sample size: 50
Breakpoint: 44

Test type: breakpoint
Coefficients tested: 1  0  1  0  0

Statistic: 5.7102
Critical value: 3.2317

P value: 0.0066
Significance level: 0.0500

Decision: Reject coefficient stability

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

Sample size: 50
Breakpoint: 44

Test type: breakpoint
Coefficients tested: 0  1  0  1  1

Statistic: 0.2497
Critical value: 2.8387

P value: 0.8611
Significance level: 0.0500

Decision: Fail to reject coefficient stability

На уровне значения по умолчанию:

  • Критерий Чоу правильно отклоняет нулевую гипотезу, что никакие структурные пропуски не существуют в период bp для прерывания и второго коэффициента.

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

Сравните результаты испытаний точки останова с результатами теста прогноза.

chowtest(X,y,bp,'Intercept',false,'Coeffs',Coeffs,'Test','forecast',...
    'Display','summary');
RESULTS SUMMARY

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

Sample size: 50
Breakpoint: 44

Test type: forecast
Coefficients tested: 1  0  1  0  0

Statistic: 3.7637
Critical value: 2.8451

P value: 0.0182
Significance level: 0.0500

Decision: Reject coefficient stability

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

Sample size: 50
Breakpoint: 44

Test type: forecast
Coefficients tested: 0  1  0  1  1

Statistic: 0.2135
Critical value: 2.6123

P value: 0.9293
Significance level: 0.0500

Decision: Fail to reject coefficient stability

В этом случае выводы из тестов эквивалентны тем для теста точки останова.

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

свернуть все

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

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

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

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

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

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

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

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

Точки останова для тестов, заданных как положительное целое число или вектор положительных целых чисел.

Каждая точка останова является индексом определенного наблюдения (строка) в данных. Элемент bp(j) задает, чтобы разделить данные в начальные и дополнительные выборки, индексированные 1:bp(j) и (bp(j) + 1):numObs, соответственно.

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

Примечания

  • NaN s в данных указывает на отсутствующие значения. chowtest удаляет отсутствующие значения с помощью мудрого списком удаления. Удаление строк в данных уменьшает эффективный объем выборки и изменяет основу времени ряда.

  • Если bp является скаляром, то количество тестов, numTests, является общей размерностью значений аргумента пары "имя-значение". В этом случае chowtest использует тот же bp в каждом тесте. В противном случае длина bp определяет numTests, и chowtest запускает отдельные тесты для каждого значения в bp.

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

ЗначениеОписание
truechowtest включает прерывание при подборе кривой модели регрессии. numCoeffs = numPreds + 1.
falsechowtest не включает прерывание при подборе кривой модели регрессии. numCoeffs = numPreds.

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

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

Тип критерия Чоу, чтобы провести, заданный как пара, разделенная запятой, состоящая из 'Test' и 'breakpoint', 'forecast' или вектора ячейки векторов символов длины numTests.

ЗначениеОписание
'breakpoint' (значение по умолчанию)
  • chowtest непосредственно оценивает содействующие ограничения равенства с помощью статистической величины F.

  • Обе подвыборки должны иметь больше, чем наблюдения numCoeffs.

'forecast'
  • chowtest оценивает производительность прогноза с помощью измененной статистической величины F.

  • Начальная подвыборка должна иметь больше, чем наблюдения numCoeffs.

Для получения дополнительной информации на значении numCoeffs, смотрите аргументы пары "имя-значение" ' Intercept ' и ' Coeffs '.

Пример: 'Test',{'breakpoint' 'forecast'}

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

Флаги, указывающие, который элементы β протестировать на равенство, заданное как пара, разделенная запятой, состоящая из логического вектора или массива. Векторные значения должны иметь длину numCoeffs. Значения массивов должны иметь размер numTests-by-numCoeffs.

Если 'Intercept' содержит смешанные логические значения:

  • numCoeffs является numPreds + 1

  • chowtest игнорирует значения в первом столбце 'Coeffs' для моделей без прерывания.

Например, предположите, что модель регрессии имеет три предиктора (numPreds равняется 3) в линейной модели, и вы хотите провести два критерия Чоу (numTests равняется 2). Каждый тест включает все параметры регрессии в линейную модель. Кроме того, вы хотите, чтобы chowtest приспособил прерывание в линейной модели для первого теста только. Поэтому Intercept должен быть логическим массивом [1 0]. Поскольку существует по крайней мере одна модель, для которой chowtest соответствует прерыванию, Coeffs должен быть 2 4 логическим массивом (numTests равняется 2, и numCoeffs является numPreds + 1). Элементы Coeffs(:,1) соответствуют, протестировать ли прерывание независимо от его присутствия в модели. Поэтому одним способом задать Coeffs является true(2,4). Для второго теста chowtest не соответствует прерыванию, и таким образом, это игнорирует значение true в Coeffs(2,1). Поскольку chowtest игнорирует Coeffs(2,1), Coeffs =, [true(1,4); false true(1,3)] приводит к тому же результату.

Значением по умолчанию является true(numTests,numCoeffs), который тестирует весь β для всех тестов.

Пример: 'Coeffs',[false true; true true]

Номинальные уровни значения для тестов, заданных как пара, разделенная запятой, состоящая из 'Alpha' и числового скаляра или вектора длины numTests. Все элементы Alpha должны быть в интервале (0,1).

Пример: 'Alpha',[0.5 0.1]

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

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

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

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

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

Примечания

  • chowtest расширяет скаляр и значения входного параметра вектора символов, кроме 'Display', к размеру numTests. Векторные значения и массивы 'Coeffs' должны совместно использовать общую размерность, равную numTests.

  • Если какой-либо bp, Intercept, Test или Alpha является векторами - строками, то всеми выходными аргументами являются векторы - строки.

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

свернуть все

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

Нулевая гипотеза (H 0) критерия Чоу - то, что коэффициенты (β), выбранный Coeffs, идентичны через подвыборки.

  • 1 указывает на отклонение H 0.

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

p-, возвращенные в виде числа или вектора длины numTests.

Протестируйте статистику, возвращенную в виде числа или вектора длины numTests. Для получения дополнительной информации см. критерии Чоу.

Критические значения для тестов, возвращенных в виде числа или вектора длины numTests. Alpha определяет критические значения.

Больше о

свернуть все

Критерии Чоу

Chow tests оценивает устойчивость коэффициентов (β) в модели линейной регрессии кратного формы y = X β + ε. Прожуйте (1960), вводит два изменения: точка останова и тесты прогноза [1].

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

Советы

  • Критерии Чоу принимают непрерывность инновационного отклонения через структурные изменения. Heteroscedasticity может исказить размер и степень теста. Необходимо проверить, что предположение инновационной непрерывности отклонения содержит перед использованием результатов испытаний для вывода.

  • Если обе подвыборки содержат больше, чем наблюдения numCoeffs, то можно провести тест прогноза вместо теста точки останова. Однако тест прогноза может иметь более низкую силу относительно теста точки останова [1]. Тем не менее, Вильсон (1978) предлагает провести тест прогноза в присутствии неизвестных ошибок спецификации.

  • Можно применить тест прогноза к случаям, где обе подвыборки имеют размер, больше, чем numCoeffs, где вы обычно применяли бы тест точки останова. В таких случаях тест прогноза может иметь значительно уменьшенную относительно теста точки останова [1]. Тем не менее, Вильсон (1978) предлагает использование теста прогноза в присутствии неизвестных ошибок спецификации [4].

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

  • Получить диагностическую статистику для каждой подвыборки, такой как коэффициент регрессии оценивает, их стандартные погрешности, ошибочные суммы квадратов, и так далее, передают соответствующие данные fitlm. Для получения дополнительной информации при работе с объектами модели LinearModel, смотрите Несколько Линейная регрессия (Statistics and Machine Learning Toolbox).

Ссылки

[1] Прожуйте, G. C. “Тесты Равенства Между Наборами Коэффициентов в Двух Линейных регрессиях”. Econometrica. Издание 28, 1960, стр 591–605.

[2] Фишер, F. M. “Тесты Равенства Между Наборами Коэффициентов в Двух Линейных регрессиях: Описательное Примечание”. Econometrica. Издание 38, 1970, стр 361–66.

[3] Rea, J. D. “Неопределенность критерия Чоу, Когда Количество Наблюдений Недостаточно”. Econometrica. Издание 46, 1978, p. 229.

[4] Вильсон, A. L. “Когда UMP критерия Чоу?” Американский Статистик. Издание 32, 1978, стр 66–68.

Введенный в R2015b