Quel test de Dickey-Fuller pour une série chronologique modélisée avec une interception / dérive et une tendance linéaire?

16

Version courte:

J'ai une série chronologique de données climatiques que je teste pour la stationnarité. Sur la base de recherches antérieures, je m'attends à ce que le modèle sous-jacent (ou «générateur», pour ainsi dire) les données aient un terme d'interception et une tendance temporelle linéaire positive. Pour tester la stationnarité de ces données, dois-je utiliser le test de Dickey-Fuller qui inclut une tendance d'interception et de temps, c'est-à-dire l' équation # 3 ?

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

Ou devrais-je utiliser le test DF qui ne comprend qu'une interception parce que la première différence de l'équation qui, je crois, sous-tend le modèle n'a qu'une interception?

Version longue:

Comme indiqué ci-dessus, j'ai une série chronologique de données climatiques que je teste pour la stationnarité. Sur la base de recherches antérieures, je m'attends à ce que le modèle sous-jacent aux données ait un terme d'interception, une tendance temporelle linéaire positive et un terme d'erreur normalement distribué. En d'autres termes, je m'attends à ce que le modèle sous-jacent ressemble à ceci:

yt=une0+une1t+βyt-1+ut

où est normalement distribué. Comme je suppose que le modèle sous-jacent a à la fois une interception et une tendance temporelle linéaire, j'ai testé une racine unitaire avec l' équation # 3 du simple test de Dickey-Fuller, comme indiqué:ut

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

Ce test renvoie une valeur critique qui me conduirait à rejeter l'hypothèse nulle et à conclure que le modèle sous-jacent n'est pas stationnaire. Cependant, je me demande si j'applique cela correctement, car même si le modèle sous - jacent est supposé avoir une intersection et une tendance temporelle, cela n'implique pas que la première différence sera également. Au contraire, en fait, si mes calculs sont corrects.yt

Le calcul de la première différence basée sur l'équation du modèle sous-jacent supposé donne: yt=yt-yt-1=[une0+une1t+βyt-1+ut]-[une0+une1(t-1)+βyt-2+ut-1]

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

yt=une1+βyt-1+ut-ut-1

Par conséquent, la première différence semble avoir qu'une interception, pas une tendance temporelle.yt

Je pense que ma question est similaire à celle-ci , sauf que je ne sais pas comment appliquer cette réponse à ma question.

Exemples de données:

Voici quelques exemples de données de température avec lesquelles je travaille.

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 
Ricardo Altamirano
la source
1
Je ne sais pas si ce qui est contenu dans ce lien ( tamino.wordpress.com/2010/03/11/not-a-random-walk ) répond à votre question, mais je pensais que cela vous intéresserait probablement de toute façon.
Matt Albrecht
@MattAlbrecht C'est un lien très intéressant. Je ne sais toujours pas comment appliquer le test Dickey-Fuller à ma série chronologique d'origine. J'ai essayé d'ajouter des informations plus pertinentes dans ma récente édition.
Ricardo Altamirano
Désolé, je ne peux pas vous donner une meilleure réponse - je ne suis pas au-dessus de mon analyse des séries chronologiques. Cependant, vous pouvez également être intéressé par cette question que j'ai posée récemment ( stats.stackexchange.com/questions/27748 ) qui est également sur les séries chronologiques climatiques et a une belle analyse détaillée sur la température par rapport au CO2 à partir d'une série chronologique pro. Cela pourrait aider les autres si vous aviez également des données que vous pouviez publier?
Matt Albrecht
@MattAlbrecht J'ai ajouté quelques exemples de données. Existe-t-il un meilleur format pour que je puisse l'inclure?
Ricardo Altamirano

Réponses:

19

Vous devez tenir compte de la dérive et de la tendance (paramétrique / linéaire) des niveaux de la série chronologique afin de spécifier les termes déterministes dans la régression Dickey-Fuller augmentée, en fonction des premières différences de la série chronologique. La confusion vient exactement de la dérivation de l'équation des premières différences de la façon dont vous l'avez fait.

(Augmenté) Modèle de régression Dickey-Fuller

Supposons que les niveaux de la série incluent un terme de dérive et de tendance L'hypothèse nulle de non-stationnarité dans ce cas serait .H 0

Ouit=β0,l+β1,lt+β2,lOuit-1+εt
H0:β2,l=1

Une équation pour les premières différences impliquées par ce processus de génération de données [DGP], est celle que vous avez dérivée Cependant, ce n'est pas la régression (augmentée) de Dickey Fuller telle qu'utilisée dans le test.

ΔOuit=β1,l+β2,lΔOuit-1+Δεt

Au lieu de cela, la version correcte peut être obtenue en soustrayant des deux côtés de la première équation résultant en Ceci est la régression Dickey-Fuller (augmentée), et la version équivalente de l'hypothèse nulle de non-stationnarité est le test qui n'est qu'un test t utilisant l'estimation OLS de dans la régression ci-dessus. Notez que la dérive et la tendance sont inchangées dans cette spécification.Δ Y tOuit-1 H0

ΔOuit=β0,l+β1,lt+(β2,l-1)Ouit-1+εtβ0,+β1,t+β2,Ouit-1+εt
β 2 , dH0:β2,=0β2,

Un autre point à noter est que si vous n'êtes pas certain de la présence de la tendance linéaire dans les niveaux de la série chronologique, vous pouvez tester conjointement la tendance linéaire et la racine unitaire, c'est-à-dire , qui peut être testé à l'aide d'un test F avec des valeurs critiques appropriées. Ces tests et valeurs critiques sont produits par la fonction R dans le package.H0:[β2,,β1,l]=[0,0]ur.dfurca

Prenons quelques exemples en détail.

Exemples

1. Utilisation de la série des investissements américains

Le premier exemple utilise la série des investissements américains qui est discutée dans Lutkepohl et Kratzig (2005, p. 9) . Le tracé de la série et sa première différence sont donnés ci-dessous.

entrez la description de l'image ici

D'après les niveaux de la série, il semble qu'elle ait une moyenne non nulle, mais ne semble pas avoir de tendance linéaire. Ainsi, nous procédons à une régression augmentée de Dickey Fuller avec une interception, et également trois retards de la variable dépendante pour tenir compte de la corrélation sérielle, c'est-à-dire: Notez le point clé que j'ai examiné les niveaux pour spécifier l'équation de régression dans les différences.

ΔYt=β0,+β2,Ouit-1+j=13γjΔOuit-j+εt

Le code R pour ce faire est donné ci-dessous:

    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)

Les résultats indiquent que l'hypothèse nulle de non-stationnarité peut être rejetée pour cette série en utilisant le test t basé sur le coefficient estimé. Le test F commun de l'ordonnée à l'origine et du coefficient de pente ( ) est également rejette l'hypothèse nulle selon laquelle il existe une racine unitaire dans la série.H:[β2,,β0,l]=[0,0]

2. Utilisation des séries de consommation allemande (log)

Le deuxième exemple utilise la série chronologique allemande de variations saisonnières de la consommation (log). Le tracé de la série et ses différences sont donnés ci-dessous.

entrez la description de l'image ici

D'après les niveaux de la série, il est clair que la série a une tendance, donc nous incluons la tendance dans la régression Dickey-Fuller augmentée avec quatre retards des premières différences pour tenir compte de la corrélation en série, c'est-à-dire

ΔOuit=β0,+β1,t+β2,Ouit-1+j=14γjΔOuit-j+εt

Le code R pour ce faire est

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

Les résultats indiquent que le nul de non-stationnarité ne peut pas être rejeté à l'aide du test t basé sur le coefficient estimé. Le test F conjoint du coefficient de tendance linéaire et du coefficient de pente ( ) indique également que la valeur nulle de non-stationnarité ne peut pas être rejetée.H:[β2,,β1,l]=[0,0]

3. Utilisation de données de température données

Nous pouvons maintenant évaluer les propriétés de vos données. Les graphiques habituels des niveaux et des premières différences sont indiqués ci-dessous.

entrez la description de l'image ici

Ceux-ci indiquent que vos données ont une interception et une tendance, nous effectuons donc le test ADF (sans premiers termes différés décalés), en utilisant le code R suivant

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

Les résultats pour le test t et le test F indiquent que le zéro de non-stationnarité peut être rejeté pour la série de températures. J'espère que cela clarifie quelque peu la question.

tchakravarty
la source
5
C'est l'une des réponses les plus claires et les plus utiles que j'ai reçues sur le réseau Stack Exchange et cela clarifie vraiment ma confusion au sujet des tests DF. Je vous remercie.
Ricardo Altamirano
@RicardoAltamirano Vous êtes les bienvenus. Heureux d'avoir pu aider.
tchakravarty
2
D'accord, c'est une très bonne réponse.
RAH
0

L'hypothèse nulle du test de Dickey-Fuller est qu'il existe une racine unitaire dans un processus. Ainsi, lorsque vous rejetez la valeur nulle, vous obtenez que votre processus est stationnaire (avec les mises en garde habituelles des tests d'hypothèse).

Concernant vos mathématiques, l'expression

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

ne signifie pas que a une tendance. Pour dire que ce processus a une tendance, sa définition doit inclure uniquement ce processus. Dans l'équation précédente, vous avez d'un côté et de l'autre. Lorsque vous exprimez en termes de vous arrivez correctement à la conclusion qu'il n'y a pas de tendance dans le processus différencié, si le processus initial est stationnaire.ytytyt-1yt-1yt-1

mpiktas
la source
0

Les réponses précédentes étaient excellentes.

Vous décidez généralement du test à mettre en œuvre en fonction de l'intrigue. Dans ce cas, les données semblent avoir une interception et une tendance.

Si vous testez une racine unitaire dans les niveaux, vous utiliserez un modèle d'interception et de tendance. Si vous exécutez le test dans des différences, vous n'utiliserez qu'un modèle d'interception.

Je viens de répondre à cette question car je dois vous recommander d'utiliser des tests saisonniers sur ces données. Ces tests sont vraiment complexes (travailler avec la saisonnalité n'est pas facile). Cependant, la nature des données (température) et parce que dans le graphique, vous pouvez observer un comportement saisonnier. Ensuite, vous devez rechercher le test HEGY et l'implémenter si vous voulez que vos estimations soient robustes.

égoïste
la source