В этом примере показано, как оценить мощность теста Chow с помощью моделирования Монте-Карло.
Статистическая мощность - вероятность отклонения нулевой гипотезы при условии, что она на самом деле является ложной. Для оценки мощности теста:
Моделирование множества наборов данных из модели, которая типизирует альтернативную гипотезу.
Протестируйте каждый набор данных.
Оцените мощность, которая представляет собой долю раз, когда тест отклоняет нулевую гипотезу.
Мощность теста Chow может быть скомпрометирована следующим образом:
Отклонения предположений линейной модели
Относительно большая инновационная дисперсия
Использование теста прогноза, когда размер выборки комплементарного подпроба больше, чем количество коэффициентов в тесте [38].
Отклонения от предположений модели позволяют изучить факторы, которые в наибольшей степени влияют на мощность теста Чоу.
Рассмотрим модель
innov
innov - вектор случайных гауссовых вариаций со средним нулем и стандартным отклонением sigma.
X1 и X2 представляют собой наборы данных предиктора для начального и комплементарного подприборов соответственно.
beta1 и beta2 - векторы коэффициентов регрессии для начального и комплементарного подприборов соответственно.
Укажите четыре предиктора, 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]; X1 = X(1:bp,:); % Initial subsample predictors X2 = X(bp+1:end,:); % Complementary subsample predictors
Укажите истинные значения коэффициентов регрессии.
beta1 = [1 2 3 4 5]'; % Initial subsample coefficientsСравните мощность между точкой разрыва и прогнозными тестами для прыжков разных размеров, малых в коэффициентах перехвата и второй регрессии. В этом примере небольшой скачок - это увеличение текущего значения на 10%, а большой скачок - увеличение на 15%. Дополнительные коэффициенты подпроба
beta2Small = beta1 + [beta1(1)*0.1 0 beta1(3)*0.1 0 0 ]'; beta2Large = beta1 + [beta1(1)*0.15 0 beta1(3)*0.15 0 0 ]';
Смоделировать 1000 путей отклика линейной модели для каждого из скачков малых и больших коэффициентов. Укажите, что sigma составляет 0,2. Используется для проверки перехвата и второго коэффициента регрессии.
M = 1000; sigma = 0.2; Coeffs = [true false true false false]; h1BP = nan(M,2); % Preallocation h1F = nan(M,2); for j = 1:M innovSmall = sigma*randn(numObs,1); innovLarge = sigma*randn(numObs,1); ySmall = [X1 zeros(bp,size(X2,2)); ... zeros(numObs - bp,size(X1,2)) X2]*[beta1; beta2Small] + innovSmall; yLarge = [X1 zeros(bp,size(X2,2)); ... zeros(numObs - bp,size(X1,2)) X2]*[beta1; beta2Large] + innovLarge; h1BP(j,1) = chowtest(X,ySmall,bp,'Intercept',false,'Coeffs',Coeffs,... 'Display','off')'; h1BP(j,2) = chowtest(X,yLarge,bp,'Intercept',false,'Coeffs',Coeffs,... 'Display','off')'; h1F(j,1) = chowtest(X,ySmall,bp,'Intercept',false,'Coeffs',Coeffs,... 'Test','forecast','Display','off')'; h1F(j,2) = chowtest(X,yLarge,bp,'Intercept',false,'Coeffs',Coeffs,... 'Test','forecast','Display','off')'; end
Оценка мощности путем вычисления доли времени chowtest правильно отвергла нулевую гипотезу стабильности коэффициента.
power1BP = mean(h1BP); power1F = mean(h1F); table(power1BP',power1F','RowNames',{'Small_Jump','Large_Jump'},... 'VariableNames',{'Breakpoint','Forecast'})
ans=2×2 table
Breakpoint Forecast
__________ ________
Small_Jump 0.717 0.645
Large_Jump 0.966 0.94
В этом сценарии тест Chow может обнаружить изменение коэффициента с большей мощностью, когда скачок больше. Тест точки разрыва имеет большую мощность для обнаружения скачка, чем тест прогноза.
Смоделировать 1000 путей отклика линейной модели для скачка больших коэффициентов. Укажите, что sigma составляет 0,4. Используется для проверки перехвата и второго коэффициента регрессии.
sigma = 0.4; h2BP = nan(M,1); h2F = nan(M,1); for j = 1:M innov = sigma*randn(numObs,1); y = [X1 zeros(bp,size(X2,2)); ... zeros(numObs - bp,size(X1,2)) X2]*[beta1; beta2Large] + innov; h2BP(j) = chowtest(X,y,bp,'Intercept',false,'Coeffs',Coeffs,... 'Display','off')'; h2F(j) = chowtest(X,y,bp,'Intercept',false,'Coeffs',Coeffs,... 'Test','forecast','Display','off')'; end power2BP = mean(h2BP); power2F = mean(h2F); table([power1BP(2); power2BP],[power1F(2); power2F],... 'RowNames',{'Small_sigma','Large_Sigma'},... 'VariableNames',{'Breakpoint','Forecast'})
ans=2×2 table
Breakpoint Forecast
__________ ________
Small_sigma 0.966 0.94
Large_Sigma 0.418 0.352
Для большей дисперсии инноваций оба теста Чоу испытывают трудности с обнаружением больших структурных разрывов в коэффициенте перехвата и втором коэффициенте регрессии.