chowtest

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

Описание

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

пример

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 значения, тестовую статистику и критические значения для тестов.

Примеры

свернуть все

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

Загрузите набор данных о потреблении продовольствия в США, который содержит ежегодные измерения с 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% уровне значимости. Для первого теста установите точку пропуска на 1941 год. Установите точку пропуска другого теста на 1948 год.

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

Также можно задать вектор пропусков для проведения трёх критериев Чоу.

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

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

Несколько серий имеют отсутствующие данные. Фокусируйте выборку на измерениях с 1915 по 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'));

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

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')

Figure contains 2 axes. Axes 1 contains 4 objects of type line. These objects represent Pre-war observations, Post-war observations. Axes 2 contains 4 objects of type line.

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

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

Примечания

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

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

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

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. 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)

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

Тип критерия Чоу для проведения, заданный как разделенная разделенными запятой парами, состоящая из '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 оценивают стабильность коэффициентов (<reservedrangesplaceholder4>) в     модели многофакторной линейной регрессии формы <reservedrangesplaceholder3> = <reservedrangesplaceholder2> <reservedrangesplaceholder1> + ε. Chow (1960) вводит два изменений: Пропуск точки и прогнозные тесты [1].

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

Совет

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

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

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

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

  • Чтобы получить диагностическую статистику для каждой подвыборки, такого как оценки коэффициентов регрессии, их стандартные ошибки, суммы ошибок квадратов и так далее, передайте соответствующие данные в fitlm. Для получения дополнительной информации о работе с LinearModel объекты модели, см. «Многофакторная линейная регрессия».

Ссылки

[1] Chow, G. C. «Тесты равенства между наборами коэффициентов в двух линейных регрессиях». Эконометрика. Том 28, 1960, с. 591-605.

[2] Фишер, Ф. М. «Тесты равенства между наборами коэффициентов в двух линейных регрессиях: экспозиторная записка». Эконометрика. Том 38, 1970, стр. 361-66.

[3] Реа, Дж. Д. Неопределенность критерия Чоу, когда количество наблюдений недостаточно. Эконометрика. Том 46, 1978, с. 229.

[4] Уилсон, А. Л. «Когда Критерий Чоу UMP?» Американский статистик. Том 32, 1978, с. 66-68.

Введенный в R2015b