exponenta event banner

chowtest

Испытание на структурное изменение

Описание

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

пример

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

пример

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

пример

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

пример

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

Примеры

свернуть все

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

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

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

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

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

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

Выполните тест Chow для оценки стабильности подмножества коэффициентов регрессии. Этот пример следует из тестовой модели потребления для структурных изменений.

Загрузите набор данных о потреблении продовольствия в США.

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.

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

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

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

Укажите четыре предиктора, 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около-numPreds числовая матрица.

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

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

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

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

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

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

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

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

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

  • Начальная подгруппа должна иметь более numCoeffs наблюдения.

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

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

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

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

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

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

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

Например, предположим, что регрессионная модель имеет три предиктора (numPreds 3) в линейной модели, и вы хотите провести два теста Chow (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.

Нулевая гипотеза (H0) теста Чоу заключается в том, что коэффициенты (β), выбранные Coeffs являются идентичными для всех подвыборок.

  • 1 указывает на отказ от H0.

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

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

Тестовая статистика, возвращаемая в виде числового скаляра или вектора длины numTests. Дополнительные сведения см. в разделе Тесты Chow.

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

Подробнее

свернуть все

Тесты Chow

Тесты Chow оценивают стабильность коэффициентов (β) в модели множественной линейной регрессии вида y =   + Chow (1960) вводит два варианта: пробой и прогнозные тесты [1].

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

Совет

  • Тесты Chow предполагают непрерывность дисперсии инноваций в структурных изменениях. Гетероскедастичность может искажать размер и силу теста. Перед использованием результатов теста для вывода необходимо проверить, что допущение innovations-variance-continuity имеет значение.

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

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

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

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

Ссылки

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

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

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

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

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