Какой тест Дики-Фуллера для временного ряда моделируется с помощью перехвата / дрейфа и линейного тренда?

17

Укороченная версия:

У меня есть временной ряд климатических данных, которые я проверяю на стационарность. Основываясь на предыдущих исследованиях, я ожидаю, что модель, лежащая в основе (или, так сказать, «генерирующая») данных, будет иметь член перехвата и положительный линейный тренд времени. Чтобы проверить эти данные на стационарность, должен ли я использовать тест Дики-Фуллера, который включает в себя точку пересечения и временной тренд, то есть уравнение № 3 ?

yt=α0+α1t+δyt1+ut

Или я должен использовать тест DF, который включает только перехват, потому что первое отличие уравнения, которое, как я считаю, лежит в основе модели, имеет только перехват?

Длинная версия:

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

YTзнак равноa0+a1T+βYT-1+UT

где обычно распространяется. Поскольку я предполагаю, что базовая модель имеет как перехват, так и линейный тренд времени, я проверил на единичный корень с помощью уравнения № 3 простого теста Дики-Фуллера, как показано:UT

YTзнак равноα0+α1T+δYT-1+UT

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

Вычисление первой разности на основе уравнения предполагаемой базовой модели дает: YTзнак равноYT-YT-1знак равно[a0+a1T+βYT-1+UT]-[a0+a1(T-1)+βYT-2+UT-1]

yt=[a0a0]+[a1tat(t1)]+β[yt1yt2]+[utut1]

yt=a1+βyt1+utut1

Следовательно, первое различие имеет только перехват, а не временную тенденцию.yT

Я думаю, что мой вопрос похож на этот , за исключением того, что я не уверен, как применить этот ответ к моему вопросу.

Образец данных:

Вот некоторые данные о температуре образца, с которыми я работаю.

64.19749  
65.19011  
64.03281  
64.99111  
65.43837  
65.51817  
65.22061  
65.43191  
65.0221  
65.44038  
64.41756  
64.65764  
64.7486  
65.11544  
64.12437  
64.49148  
64.89215  
64.72688  
64.97553  
64.6361  
64.29038  
65.31076  
64.2114  
65.37864  
65.49637  
65.3289  
65.38394  
65.39384  
65.0984  
65.32695  
65.28  
64.31041  
65.20193  
65.78063  
65.17604  
66.16412  
65.85091  
65.46718  
65.75551  
65.39994  
66.36175  
65.37125  
65.77763  
65.48623  
64.62135  
65.77237  
65.84289  
65.80289  
66.78865  
65.56931  
65.29913  
64.85516  
65.56866  
64.75768  
65.95956  
65.64745  
64.77283  
65.64165  
66.64309  
65.84163  
66.2946  
66.10482  
65.72736  
65.56701  
65.11096  
66.0006  
66.71783  
65.35595  
66.44798  
65.74924  
65.4501  
65.97633  
65.32825  
65.7741  
65.76783  
65.88689  
65.88939  
65.16927  
64.95984  
66.02226  
66.79225  
66.75573  
65.74074  
66.14969  
66.15687  
65.81199  
66.13094  
66.13194  
65.82172  
66.14661  
65.32756  
66.3979  
65.84383  
65.55329  
65.68398  
66.42857  
65.82402  
66.01003  
66.25157  
65.82142  
66.08791  
65.78863  
66.2764  
66.00948  
66.26236  
65.40246  
65.40166  
65.37064  
65.73147  
65.32708  
65.84894  
65.82043  
64.91447  
65.81062  
66.42228  
66.0316  
65.35361  
66.46407  
66.41045  
65.81548  
65.06059  
66.25414  
65.69747  
65.15275  
65.50985  
66.66216  
66.88095  
65.81281  
66.15546  
66.40939  
65.94115  
65.98144  
66.13243  
66.89761  
66.95423  
65.63435  
66.05837  
66.71114 
Рикардо Альтамирано
источник
1
Я не знаю, отвечает ли то, что содержится в этой ссылке ( tamino.wordpress.com/2010/03/11/not-a-random-walk ) на ваш вопрос, но я подумал, что вам, возможно, все равно будет интересно.
Мэтт Альбрехт
@MattAlbrecht Это очень интересная ссылка. Я все еще не понимаю, как мне применить тест Дики-Фуллера к моему первоначальному временному ряду. Я попытался добавить более актуальную информацию в мое недавнее редактирование.
Рикардо Альтамирано
Извините, я не могу дать вам лучший ответ - я не думаю, что это выше моего анализа временных рядов. Тем не менее, вас также может заинтересовать этот вопрос, который я недавно задавал ( stats.stackexchange.com/questions/27748 ), который также относится к временным рядам климата и имеет хороший подробный анализ зависимости температуры от CO2 для временного ряда pro. Это может помочь другим, если у вас также есть данные, которые вы смогли опубликовать?
Мэтт Альбрехт
@MattAlbrecht Я добавил несколько примеров данных. Есть ли лучший формат для меня, чтобы включить его в?
Рикардо Альтамирано

Ответы:

20

Вам необходимо учесть дрейф и (параметрический / линейный) тренд на уровнях временного ряда, чтобы указать детерминированные члены в расширенной регрессии Дики-Фуллера, которая относится к первым различиям временного ряда. Путаница возникает именно из того, как вы вывели уравнение первых разностей.

(Дополненная) регрессионная модель Дики-Фуллера

Предположим, что уровни ряда включают в себя дрейф и член тренда . Нулевой гипотезой нестационарности в этом случае будет H 0

YTзнак равноβ0,L+β1,LT+β2,LYT-1+εT
.ЧАС0:β2,Lзнак равно1

Одним из уравнений для первых различий, подразумеваемых этим процессом генерирования данных [DGP], является то, которое вы получили Однако это не (расширенная) регрессия Дики-Фуллера, использованная в тесте.

ΔYTзнак равноβ1,L+β2,LΔYT-1+ΔεT

Вместо этого правильная версия может быть получена путем вычитания с обеих сторон первого уравнения, что приводит к Δ Y tYT-1 Этоявляется (расширенная) Дики-Фуллера регрессии, и эквивалентный вариант нулевой гипотезы нестационарности является тестН0

ΔYTзнак равноβ0,L+β1,LT+(β2,L-1)YT-1+εTβ0,d+β1,dT+β2,dYT-1+εT
который является просто t-тестом с использованием оценки OLS для β 2 , d в регрессии выше. Обратите внимание, что дрейф и тренд дошли до этой спецификации без изменений.ЧАС0:β2,dзнак равно0β2,d

Еще один момент, на который следует обратить внимание: если вы не уверены в наличии линейного тренда на уровнях временного ряда, вы можете совместно проверить линейный тренд и единичный корень, то есть , что можно проверить с помощью F-теста с соответствующими критическими значениями. Эти тесты и критические значения производятся функцией Rвпакете.ЧАС0:[β2,d,β1,L]'знак равно[0,0]'ur.dfurca

Давайте рассмотрим некоторые примеры в деталях.

Примеры

1. Использование американской инвестиционной серии

В первом примере используется серия инвестиций США, которая обсуждается в Lutkepohl and Kratzig (2005, pg. 9) . Сюжет сериала и его первое отличие приведены ниже.

введите описание изображения здесь

ΔYTзнак равноβ0,d+β2,dYT-1+ΣJзнак равно13γJΔYT-J+εT
Обратите внимание на ключевой момент, который я рассмотрел на уровнях, чтобы указать уравнение регрессии в различиях.

Код R для этого приведен ниже:

    library(urca)
    library(foreign)
    library(zoo)

    tsInv <- as.zoo(ts(as.data.frame(read.table(
      "http://www.jmulti.de/download/datasets/US_investment.dat", skip=8, header=TRUE)), 
                       frequency=4, start=1947+2/4))
    png("USinvPlot.png", width=6,
        height=7, units="in", res=100)
    par(mfrow=c(2, 1))
    plot(tsInv$USinvestment)
    plot(diff(tsInv$USinvestment))
    dev.off()

    # ADF with intercept
    adfIntercept <- ur.df(tsInv$USinvestment, lags = 3, type= 'drift')
    summary(adfIntercept)

ЧАС:[β2,d,β0,L]'знак равно[0,0]'

2. Использование немецкой (лог) серии потребления

Второй пример - использование немецкого квартального сезонно скорректированного временного ряда (log) потребления. Сюжет сериала и его отличия приведены ниже.

введите описание изображения здесь

ΔYTзнак равноβ0,d+β1,dT+β2,dYT-1+ΣJзнак равно14γJΔYT-J+εT

Код R, чтобы сделать это

# using the (log) consumption series
tsConsump <- zoo(read.dta("http://www.stata-press.com/data/r12/lutkepohl2.dta"), frequency=1)
png("logConsPlot.png", width=6,
    height=7, units="in", res=100)
par(mfrow=c(2, 1))
plot(tsConsump$ln_consump)
plot(diff(tsConsump$ln_consump))
dev.off()

# ADF with trend
adfTrend <- ur.df(tsConsump$ln_consump, lags = 4, type = 'trend')
summary(adfTrend)

ЧАС:[β2,d,β1,L]'знак равно[0,0]'

3. Используя данные о температуре

Теперь мы можем оценить свойства ваших данных. Обычные графики уровней и первые различия приведены ниже.

введите описание изображения здесь

Это означает, что ваши данные имеют перехват и тренд, поэтому мы выполняем тест ADF (без отстающих первых разностей), используя следующий код R

# using the given data
tsTemp <- read.table(textConnection("temp 
64.19749  
65.19011  
64.03281  
64.99111  
65.43837  
65.51817  
65.22061  
65.43191  
65.0221  
65.44038  
64.41756  
64.65764  
64.7486  
65.11544  
64.12437  
64.49148  
64.89215  
64.72688  
64.97553  
64.6361  
64.29038  
65.31076  
64.2114  
65.37864  
65.49637  
65.3289  
65.38394  
65.39384  
65.0984  
65.32695  
65.28  
64.31041  
65.20193  
65.78063  
65.17604  
66.16412  
65.85091  
65.46718  
65.75551  
65.39994  
66.36175  
65.37125  
65.77763  
65.48623  
64.62135  
65.77237  
65.84289  
65.80289  
66.78865  
65.56931  
65.29913  
64.85516  
65.56866  
64.75768  
65.95956  
65.64745  
64.77283  
65.64165  
66.64309  
65.84163  
66.2946  
66.10482  
65.72736  
65.56701  
65.11096  
66.0006  
66.71783  
65.35595  
66.44798  
65.74924  
65.4501  
65.97633  
65.32825  
65.7741  
65.76783  
65.88689  
65.88939  
65.16927  
64.95984  
66.02226  
66.79225  
66.75573  
65.74074  
66.14969  
66.15687  
65.81199  
66.13094  
66.13194  
65.82172  
66.14661  
65.32756  
66.3979  
65.84383  
65.55329  
65.68398  
66.42857  
65.82402  
66.01003  
66.25157  
65.82142  
66.08791  
65.78863  
66.2764  
66.00948  
66.26236  
65.40246  
65.40166  
65.37064  
65.73147  
65.32708  
65.84894  
65.82043  
64.91447  
65.81062  
66.42228  
66.0316  
65.35361  
66.46407  
66.41045  
65.81548  
65.06059  
66.25414  
65.69747  
65.15275  
65.50985  
66.66216  
66.88095  
65.81281  
66.15546  
66.40939  
65.94115  
65.98144  
66.13243  
66.89761  
66.95423  
65.63435  
66.05837  
66.71114"), header=T)
tsTemp <- as.zoo(ts(tsTemp, frequency=1))

png("tempPlot.png", width=6,
    height=7, units="in", res=100)
par(mfrow=c(2, 1))
plot(tsTemp$temp)
plot(diff(tsTemp$temp))
dev.off()

# ADF with trend
adfTrend <- ur.df(tsTemp$temp, type = 'trend')
summary(adfTrend)

Результаты как t-теста, так и F-теста показывают, что нуль нестационарности может быть отклонен для температурного ряда. Я надеюсь, что это проясняет вопрос несколько.

tchakravarty
источник
5
Это один из самых ясных и полезных ответов, которые я получил в сети Stack Exchange, и он действительно помогает мне разобраться в DF-тестах. Спасибо.
Рикардо Альтамирано
@RicardoAltamirano Добро пожаловать. Рад, что смог помочь.
Чакраварти
2
Согласитесь, это очень хороший ответ.
RAH
0

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

YTзнак равноα0+α1T+δYT-1+UT

YTYTYT-1YT-1YT-1

mpiktas
источник
0

Предыдущие ответы были превосходны.

Обычно вы принимаете решение о том, какой тест проводить на основе сюжета. В этом случае данные, как представляется, имеют перехват и тренд.

Если вы тестируете уровень юнита-корня в уровнях, вы будете использовать модель пересечения и трендов. Если вы запустите тест с разницей, вы будете использовать только модель перехвата.

Я только что ответил на этот вопрос, потому что я должен рекомендовать вам использовать сезонные тесты на этих данных. Эти тесты действительно сложны (работать с сезонностью нелегко). Тем не менее, характер данных (температура) и потому, что в сюжете вы можете наблюдать некоторые сезонные поведения. Затем вам следует изучить тест HEGY и внедрить его, если вы хотите, чтобы ваши оценки были надежными.

egodial
источник