Test ADF

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

amelie lemiale
Messages : 19
Enregistré le : 15 Fév 2007, 17:47

Test ADF

Messagepar amelie lemiale » 22 Fév 2007, 10:23

Bonjour ts le monde,

J'essaye de faire des test ADF sur des series temporelles et je rencontre qq difficultés. Voila la commande que j'ecris :

ADF.test(wts=log(cost), itsd=c(1,1,c(0)), regvar=0, selectlags=list(mode="signf", Pmax=NULL))

et voila le message d'erreur qu'il me fait ressortir :

Erreur dans validObject(.Object) : invalid class "adfstat" object: invalid object for slot "wts" in class "adfstat": got class "numeric", should be or extend class "ts"
De plus : Warning message:
p-value is greater than printed p-value in: interpolpval(code = code, stat = adfreg[, 3], N = N)
>
Est ce qu'il ya qqun qui peut m'expliquer qu'est ce que cela signifie?? J'arrive pas à trouver mon erreur.

une deuxième petite question d'odre théorique (!) : sur quelle base je peux affirmer qu'une serie contient ou pas une tendance deterministe ou stochastique et une constante. Pour ma part je me base sur la representation graphique de la serie : si elle est croissante ou decroissante je dit qu'il ya une tendance. Pour davoir si elle est deterministe ou stochastique je ne sais pas comment il faut faire. Je ne sais egalement comment faire pour detecter la presence d'une constante et pour choisir Pmax! Y a il qqun qui puisse m'eclairer?

Merci

Ai je raison ???

Merci par avance et deslée pour ce long message

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 22 Fév 2007, 12:26

J'essaye de faire des test ADF sur des series temporelles et je rencontre qq difficultés. Voila la commande que j'ecris :

ADF.test(wts=log(cost), itsd=c(1,1,c(0)), regvar=0, selectlags=list(mode="signf", Pmax=NULL))

et voila le message d'erreur qu'il me fait ressortir :

Erreur dans validObject(.Object) : invalid class "adfstat" object: invalid object for slot "wts" in class "adfstat": got class "numeric", should be or extend class "ts"
De plus : Warning message:
p-value is greater than printed p-value in: interpolpval(code = code, stat = adfreg[, 3], N = N)
>
Est ce qu'il ya qqun qui peut m'expliquer qu'est ce que cela signifie?? J'arrive pas à trouver mon erreur.


Bonjour Amélie,

Merci d'indiquer le package d'origine des fcts que vous utilisez. En l'occurrence, je pense que la réponse à votre question est dans l'aide de la fct ADF.text (package uroot):

Arguments
wts a univariate time series object.


Je pense que "cost" n'est pas un objet de class ts, d'où le message d'erreur. Voir l'aide de la fct ts: ?ts.

Pour le reste je ne connais pas la méthode et ne peut vous répondre.

Renaud

amelie lemiale
Messages : 19
Enregistré le : 15 Fév 2007, 17:47

Interpretation des resultats d'un test ADF

Messagepar amelie lemiale » 22 Fév 2007, 13:35

Renaud Lancelot a écrit :
J'essaye de faire des test ADF sur des series temporelles et je rencontre qq difficultés. Voila la commande que j'ecris :

ADF.test(wts=log(cost), itsd=c(1,1,c(0)), regvar=0, selectlags=list(mode="signf", Pmax=NULL))

et voila le message d'erreur qu'il me fait ressortir :

Erreur dans validObject(.Object) : invalid class "adfstat" object: invalid object for slot "wts" in class "adfstat": got class "numeric", should be or extend class "ts"
De plus : Warning message:
p-value is greater than printed p-value in: interpolpval(code = code, stat = adfreg[, 3], N = N)
>
Est ce qu'il ya qqun qui peut m'expliquer qu'est ce que cela signifie?? J'arrive pas à trouver mon erreur.


Bonjour Amélie,

Merci d'indiquer le package d'origine des fcts que vous utilisez. En l'occurrence, je pense que la réponse à votre question est dans l'aide de la fct ADF.text (package uroot):

Arguments
wts a univariate time series object.


Je pense que "cost" n'est pas un objet de class ts, d'où le message d'erreur. Voir l'aide de la fct ts: ?ts.

Pour le reste je ne connais pas la méthode et ne peut vous répondre.

Renaud



Bonjour Renault,

Merci enormement pour ta reponse. Mon package d'origine est uroot. Et justement c parce que cost n'est pas un objet de class ts que mon test n'a pas marché. Maintenant, une fois j'ai transformé ma serie en objet class ts, voila mon resultat :

Null hypothesis: Unit root.
Alternative hypothesis: Stationarity.

----
ADF statistic:

Estimate Std. Error t value Pr(>|t|)
adf.reg -4.451 0.674 -6.604 0.01

Lag orders: 1 2 3 4 5 6 7 8 9
Number of available observations: 21
Warning message:
p-value is smaller than printed p-value in: interpolpval(code = code, stat = adfreg[, 3], N = N)
>
Peut m'aider a interpreter mes resultats etant donnée que je suis en sociologie et donc j'ai un peu de mal à bien lire les resultats. plus precisemment j'ai trois questions :

1)-Quelle est la valeur critique par rapport a laquelle il faut comparer les resultats (regle de décision). Et quelle est le chiffre à regarder : Estimate Std ou P value.
2) dans ma serie, j'ai supposé qu'il existe une tendance et une constante. Je justifie la presence d'une tedance par le fait que la courbe de ma vriable montre que celle ci est croissante dans le temps (donc il ya une tendance) et que le premier point de la courbe coupe l'axe des ordonné (donc il ya une constante). Mon raisonnement est il correte? Sinon, comment est ce que je peux savoir si ma serie contient une tendance deterministe (ou stochastique) ou une constante?? Me conseillez vous une reference théorique bien precise pour comprendre l'interpretation des tests ADF ?
3) Comment choisir le nombre de retard pour realiser le test. R propose les criteres aic, bic et signf et je n'arrive pas à choisir entre les trois.

Merci

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 22 Fév 2007, 14:13

Bonjour,


Ce qu'il faut que tu regardes dans un test c'est la valeur de la p-value associée à la statistique de ton test (ici "t"), si celle-ci est inférieure au seuil de décision (risque de première espèce : rejeter H0 alors que H0 est vraie) que tu te fixes pour rejeter H0 (hypothèse nulle), alors ton test est dit significatif et tu rejettes H0. Ici si tu te fixes un seuil de 5%, ta p-value est inférieure à 1% donc à 5% et par conséquent tu rejettes H0. Après je ne connais pas ce test et je ne sais donc pas ce que tu testes ici mais c'est significatif.

Maxime

amelie lemiale
Messages : 19
Enregistré le : 15 Fév 2007, 17:47

Messagepar amelie lemiale » 22 Fév 2007, 14:35

Logez Maxime a écrit :Bonjour,


Ce qu'il faut que tu regardes dans un test c'est la valeur de la p-value associée à la statistique de ton test (ici "t"), si celle-ci est inférieure au seuil de décision (risque de première espèce : rejeter H0 alors que H0 est vraie) que tu te fixes pour rejeter H0 (hypothèse nulle), alors ton test est dit significatif et tu rejettes H0. Ici si tu te fixes un seuil de 5%, ta p-value est inférieure à 1% donc à 5% et par conséquent tu rejettes H0. Après je ne connais pas ce test et je ne sais donc pas ce que tu testes ici mais c'est significatif.

Maxime


Merci Maxime pour ta réponse. Ici je suis en train de tester la stationnarité de mes series en procedant à une test ADF. Mon H0 est que la serie contient une racine unitaire et donc pas stationnaire.
Par contre, j'ai une question tte bête! est ce que tu sais comment ecrire une serie en différence première ou seconde sur R. Et c quoi la différence entre "difference" et "lag"?

Amélie

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 22 Fév 2007, 15:49

Re,

Désolé je ne connais pas cette fonction ni cette librairie et encore moins les questions qu'on se pose en statistique temporelle je ne peux pas t'aider ici.

Maxime

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 22 Fév 2007, 18:43

Par contre, j'ai une question tte bête! est ce que tu sais comment ecrire une serie en différence première ou seconde sur R. Et c quoi la différence entre "difference" et "lag"?


Voir la fct diff et son aide (?diff).

En bref,
* l'argument lag indique le nombre d'observations consécutives entre lesquelles on calcule la différence
* l'argument difference indique l'"ordre" de la différence: si difference = 2, diff est appliqué deux fois de suite sur la série.

Donc une différence première (avec lag = 1) s'écrit:

Code : Tout sélectionner

diff(x)
Une différence seconde s'écrit

Code : Tout sélectionner

diff(x, difference = 2)


Exemple:

Code : Tout sélectionner

> x <- ts(1:10, frequency = 4, start = c(1959, 2))
> x
     Qtr1 Qtr2 Qtr3 Qtr4
1959         1    2    3
1960    4    5    6    7
1961    8    9   10     
> diff(x)
     Qtr1 Qtr2 Qtr3 Qtr4
1959              1    1
1960    1    1    1    1
1961    1    1    1     
> diff(x, lag = 2)
     Qtr1 Qtr2 Qtr3 Qtr4
1959                   2
1960    2    2    2    2
1961    2    2    2     
> diff(x, difference = 2)
     Qtr1 Qtr2 Qtr3 Qtr4
1959                   0
1960    0    0    0    0
1961    0    0    0     
> diff(diff(x))
     Qtr1 Qtr2 Qtr3 Qtr4
1959                   0
1960    0    0    0    0
1961    0    0    0 

amelie lemiale
Messages : 19
Enregistré le : 15 Fév 2007, 17:47

Messagepar amelie lemiale » 22 Fév 2007, 22:22

Renaud Lancelot a écrit :
Par contre, j'ai une question tte bête! est ce que tu sais comment ecrire une serie en différence première ou seconde sur R. Et c quoi la différence entre "difference" et "lag"?


Voir la fct diff et son aide (?diff).

En bref,
* l'argument lag indique le nombre d'observations consécutives entre lesquelles on calcule la différence
* l'argument difference indique l'"ordre" de la différence: si difference = 2, diff est appliqué deux fois de suite sur la série.

Donc une différence première (avec lag = 1) s'écrit:

Code : Tout sélectionner

diff(x)
Une différence seconde s'écrit

Code : Tout sélectionner

diff(x, difference = 2)


Exemple:

Code : Tout sélectionner

> x <- ts(1:10, frequency = 4, start = c(1959, 2))
> x
     Qtr1 Qtr2 Qtr3 Qtr4
1959         1    2    3
1960    4    5    6    7
1961    8    9   10     
> diff(x)
     Qtr1 Qtr2 Qtr3 Qtr4
1959              1    1
1960    1    1    1    1
1961    1    1    1     
> diff(x, lag = 2)
     Qtr1 Qtr2 Qtr3 Qtr4
1959                   2
1960    2    2    2    2
1961    2    2    2     
> diff(x, difference = 2)
     Qtr1 Qtr2 Qtr3 Qtr4
1959                   0
1960    0    0    0    0
1961    0    0    0     
> diff(diff(x))
     Qtr1 Qtr2 Qtr3 Qtr4
1959                   0
1960    0    0    0    0
1961    0    0    0 




Bonjour Renault,

Merci enormement pour ta reponse. Par contre, et pour revznir un peu sur mes test ADF, peut tu m'aider a interpreter mes résultats étant donnée que je suis en sociologie et donc j'ai un peu de mal à bien lire les resultats. plus precisemment j'ai tdeux questions :

1) dans ma serie, j'ai supposé qu'il existe une tendance et une constante. Je justifie la présence d'une tendance par le fait que la courbe de ma variable montre que celle ci est croissante dans le temps (donc il ya une tendance) et que le premier point de la courbe coupe l'axe des ordonné (donc il ya une constante). Mon raisonnement est il correte? Sinon, comment est ce que je peux savoir si ma serie contient une tendance deterministe (ou stochastique) ou une constante?? Me conseillez vous une réference théorique bien précise pour comprendre l'interpretation des tests ADF ?
2) la commande que j'ecris pour faire le test ADF avec constante et tendance est la suivante :

ADF.test(wts=lcost, itsd=c(1,1,c(0)), regvar=0, selectlags=list(mode="bic", Pmax=8))
le resultat est le suivant :
--------- ------ - ------ ----
Augmented Dickey & Fuller test
--------- ------ - ------ ----

Null hypothesis: Unit root.
Alternative hypothesis: Stationarity.

----
ADF statistic:

Estimate Std. Error t value Pr(>|t|)
adf.reg 0.533 0.146 3.643 0.1

Lag orders: 1 2 3 4 5 6 7 8
Number of available observations: 22
Warning message:
p-value is greater than printed p-value in: interpolpval(code = code, stat = adfreg[, 3], N = N)

ce que je ne comprend pas est que malgré que je prend en considération la présence d'une constante et d'une tendance, les résultat du test ne montre que le P value que correspond au test ADF. La P value qui me permettra de confirmer ou d'infirmer la présence d'une constante ou d'une tendance n'apparait pas. Comment peut on expliquer cela?

3) Comment choisir le nombre de retard pour realiser le test. R propose les criteres aic, bic et signf et je n'arrive pas à choisir entre les trois. Autrement dit, sur quelle base je peux choisir entre les différents critéres surtout qu'ils ne donnent pas souvent les memes résultats! Au fait dans certains cas, avec le critéres aic je peux accepter H0 alors qu'avc le criteres bic je nepeux pas l'accepter. Ya t il une explication à cela ?

Merci


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité