2015-04-12 6 views
0

Я пытаюсь найти структурный перерыв в средстве временного ряда, искаженного, жирного хвоста и гетеросквадика. Я применяю SupF-тест Andrews (1993) через пакет strucchange. Я понимаю, что это справедливо даже с моими несферическими нарушениями. Но я хотел бы подтвердить это путем загрузки. Я хотел бы оценить максимальный t-stat из разницы в среднем тесте на каждой возможной точке останова (точно так же, как у Эндрюса F-stat), а затем загружать критическое значение. Другими словами, я хочу найти свой максимальный t-stat в данных, упорядоченных по времени. Затем скремблируйте данные и найдите максимальный t-stat в скремблированных данных, 10000 раз. Затем сравните максимальный t-stat от упорядоченных по времени данных до критического значения, заданного max t-stat ранга 9 500 из неупорядоченных данных. Ниже я генерирую данные примера и применяю SupF-тест Andrews. Есть ли способ «исправить» тест Эндрюса на несферические нарушения? Есть ли способ сделать загрузку, которую я пытаюсь сделать?R strucchange bootstrap статистика теста из-за несферических нарушений

library(strucchange) 
Thames <- ts(matrix(c(rlnorm(120, 0, 1), rlnorm(120, 2, 2), rlnorm(120, 4, 1)), ncol = 1), frequency = 12, start = c(1985, 1)) 
fs.thames <- Fstats(Thames ~ 1) 
sctest(fs.thames) 

ответ

2

(1) Подкожность и тяжелые хвосты. Как обычно в моделях с линейной регрессией, асимптотическое обоснование вывода не зависит от нормальности, а также имеет место для любого другого распределения ошибок, учитывая нулевое ожидание, гомосекустичность и отсутствие корреляции (обычные предположения Гаусса-Маркова). Тем не менее, если у вас есть подходящее искаженное распределение для ваших интересующих данных, вы можете повысить эффективность, основывая свои выводы на соответствующей модели. Например, пакет glogis предоставляет некоторые функции для тестирования структурных изменений и датирования на основе обобщенного логистического распределения, которое позволяет использовать тяжелые хвосты и асимметрию. Windberger & Zeileis (2014, Eastern European Economics, 52, 66-88, doi:10.2753/EEE0012-8775520304) использовал это для отслеживания изменений в асимметрии динамики инфляции с течением времени. (См. ?breakpoints.glogisfit для обработанного примера.) Кроме того, если сама асимметрия не представляет интереса, то преобразование журнала или sqrt также может быть достаточно хорошим, чтобы сделать данные более «нормальными».

(2) Гетероседастичность и автокорреляция. Как обычно в моделях линейной регрессии, стандартные ошибки (или, в более широком смысле, ковариационная матрица) несовместимы в присутствии гетеросекастичности и/или автокорреляции. Можно либо попытаться включить это явно в модель (например, AR-модель), либо рассматривать ее как неприятный термин, и использовать гетероседастичность и согласованные с автокорреляцией (HAC) матрицы ковариации (например, квадратичный спектральный блок HAC Newey-West или Andrews) , Функция Fstats() в strucchange позволяет подключать такие оценки, например, из пакета sandwich. См. ?durab для примера с использованием vcovHC().

(3) Начальные и перестановочные p-значения. «Скремблирование» временного ряда, описанного выше, звучит скорее как применение перестановок (т. Е. Выборка без замены), а не бутстрап (то есть выборка с заменой). Первое возможно, если ошибки некоррелированы или заменены. Если вы регрессируете только по постоянной, то вы можете использовать функцию maxstat_test() из пакета coin для проведения теста supF. Статистическая статистика вычисляется несколько иначе, однако это можно показать эквивалентным испытанию supF в случае с постоянным случаем (см. Zeileis & Hothorn, 2013, Статистические документы, 54, 931-954, doi:10.1007/s00362-013-0503-4). Если вы хотите выполнить тест перестановки в более общей модели, вам придется делать перестановки «вручную» и просто хранить статистику теста с каждой перестановки. В качестве альтернативы, бутстрап может быть применен, например, через пакет boot (где вам все равно нужно написать собственную небольшую функцию, которая вычисляет статистику теста из заданного образца начальной загрузки). Также имеются некоторые пакеты R (например, tseries), которые реализуют схемы начальной загрузки для зависимых рядов.

+0

Если я хочу, чтобы оценить контрольную точку в качестве минимального RSS, а также правильный для гетероскедастичности и автокорреляции я делаю это: (. Темза ~ 1, брейки = 1, vcov = NeweyWest) контрольные точки (при условии, я зарядил право библиотека)? Кажется, это не работает. – user1491868

+1

Для самой оценки контрольной точки не требуется коррекция HAC, потому что это просто OLS (= минимизация RSS). Необходимо отрегулировать только соответствующие доверительные интервалы.Это похоже на вывод в линейной регрессионной модели, где вы сначала подходите к модели с помощью OLS, как обычно, а затем только корректируете последующий вывод. Я добавил второй ответ, в котором подробно анализируются ваши смоделированные данные Thames. –

1

Я добавляю второй ответ для анализа данных моделируемого Thames. Что касается пунктов моего первого общего методологического ответа: (1) В этом случае преобразование log() явно подходит для устранения крайней асимметрии наблюдений. (2) Поскольку данные являются гетеросестастическими, вывод должен основываться на ковариациях HC или HAC. Ниже я использую оценку Нью-Запада HAC, хотя данные просто гетероседикальные, но не автокоррелированные. Исправленный вывод HAC влияет на тест supF и доверительные интервалы для оценок точки останова. Сами точки останова и соответствующие сегментные перехваты оцениваются с помощью OLS, то есть рассматривают гетероседастичность как неприятный термин. (3) Я не добавлял никакого вывода бутстрапа или перестановки, поскольку асимптотический вывод представляется достаточно убедительным в этом случае.

Сначала мы имитируем данные с использованием определенного семени. (Обратите внимание, что другие семена не могут привести к таким четким точкам останова оценок при анализе ряда уровней.)

library("strucchange") 
set.seed(12) 
Thames <- ts(c(rlnorm(120, 0, 1), rlnorm(120, 2, 2), rlnorm(120, 4, 1)), 
    frequency = 12, start = c(1985, 1)) 

Затем вычисляет последовательность HAC-скорректированные статистики Wald/F и оценить оптимальные точки останова (для m = 1, 2, 3, ... breaks) через OLS. Чтобы проиллюстрировать, насколько лучше это работает для серии в журналах, а не на уровнях, отображаются обе версии.

fs_lev <- Fstats(Thames ~ 1, vcov = NeweyWest) 
fs_log <- Fstats(log(Thames) ~ 1, vcov = NeweyWest) 
bp_lev <- breakpoints(Thames ~ 1) 
bp_log <- breakpoints(log(Thames) ~ 1) 

Визуализация Ниже показаны временные ряды с встроенными перехватывает в первом ряду, последовательность статистики Wald/F с 5% критического значения теста supF во втором ряду, и остаточной суммы квадратов и BIC для выбора количества точек останова в последней строке. Код для тиражирования графического изображения находится в конце этого ответа.

Structural change analysis of simulated Thames data.

Оба supF тестов явно значительны, но в уровнях (sctest(fs_lev)) тестовая статистика «только» 82,79, а в журналах (sctest(fs_log)) это 282,46. Кроме того, два пика, относящиеся к двум точкам останова, можно увидеть намного лучше при анализе данных в журналах.

Аналогично, оценки точки останова несколько лучше, а доверительные интервалы намного более узкие для данных, преобразованных в лог-файл. В уровнях, мы получаем:

confint(bp_lev, breaks = 2, vcov = NeweyWest) 
## 
##   Confidence intervals for breakpoints 
##   of optimal 3-segment partition: 
## 
## Call: 
## confint.breakpointsfull(object = bp_lev, breaks = 2, vcov. = NeweyWest) 
## 
## Breakpoints at observation number: 
## 2.5 % breakpoints 97.5 % 
## 1 NA   125  NA 
## 2 202   242 263 

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

confint(bp_log, breaks = 2, vcov = NeweyWest) 
## 
##   Confidence intervals for breakpoints 
##   of optimal 3-segment partition: 
## 
## Call: 
## confint.breakpointsfull(object = bp_log, breaks = 2, vcov. = NeweyWest) 
## 
## Breakpoints at observation number: 
## 2.5 % breakpoints 97.5 % 
## 1 107   119 121 
## 2 238   240 250 
## 
## Corresponding to breakdates: 
## 2.5 % breakpoints 97.5 % 
## 1 1993(11) 1994(11) 1995(1) 
## 2 2004(10) 2004(12) 2005(10) 

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

par(mfrow = c(3, 2)) 
plot(Thames, main = "Thames") 
lines(fitted(bp_lev, breaks = 2), col = 4, lwd = 2) 
plot(log(Thames), main = "log(Thames)") 
lines(fitted(bp_log, breaks = 2), col = 4, lwd = 2) 
lines(confint(bp_log, breaks = 2, vcov = NeweyWest)) 
plot(fs_lev, main = "supF test") 
plot(fs_log, main = "supF test") 
plot(bp_lev) 
plot(bp_log) 
+0

Благодарим вас за отличные и полезные ответы на мои вопросы. – user1491868

+0

Без проблем, пожалуйста, рад, если смогу помочь –