Arthur Charpentier

Aller au contenu | Aller au menu | Aller à la recherche

Keyword - Granger

Fil des billets

mercredi 6 janvier 2010

Nikkei's past experience vs. SP500 (in euros)

Following Michael’s idea (here), I wanted to go further, based on his intuition (and dataset that he kindly sent me, there). If we consider the two series of Nikkei index and SP500 index in euros, we have to following graph,

the code is simply the following (the merging function is simply here to avoid problem with different trading days: since we look at the index and not the return, it is the simplest way to deal with it). 
> library(RODBC)
> base = odbcConnectExcel("http://perso.univ-rennes1.fr/arthur.charpentier/spx_nky_eurusd.xls", readOnly = TRUE)
> series1 = sqlQuery(base,query="select * from [Tabelle1$A2:B8837]") # SPX
> series2 = sqlQuery(base,query="select * from [Tabelle1$D2:E8631]") # NKY
> series3 = sqlQuery(base,query="select * from [Tabelle1$G2:H8945]") # EURUSD
> odbcCloseAll()
> series4=merge(series1,series3)
> series4$SPEUR=series4$SPX/series4$EURUSD
> series5=merge(series4,series2)
> x=(as.Date(series5[,1])-as.Date("01/01/0000","%d/%m/%Y"))/365.25
> yl=range(series5[,4])
> xl=c(1975,2010)
> plot(x,series5[,4],axes=FALSE,xlab="",ylab="",type="l",
+ lwd=3,col="red",xlim=xl,ylim=yl)
> axis(1)
> axis(2, col="red")
> par(new=TRUE)
> yl=range(series5[,5])
> plot(x,series5[,5],axes=FALSE,xlab="",ylab="",type="l",
+ lwd=3,col="blue",xlim=xl,ylim=yl)
> axis(4, col="blue")
> mtext("SP500 in Euros", 2, line=2, col="red", cex=1.2)
> mtext("NKY", 4, line=2, col="blue", cex=1.2)
Those two series series seem to have a similar pattern, so an idea can be translate the SP500 on the left,

Interesting isn’t it ? Suppose that we want to forecast (or forsee ?) the SP500 in euro for the next 10 years... People who enjoy charts would have here a nice tool...
Those two series are extremely correlated, with a correlation of 0.9572,
> X1=series5[2501:n,4]
> X2=series5[1:(n-2500),5]
> cor(X1,X2)
[1] 0.9572484

But are the two series cointegrated (see here, here or there for material on cointegration) ? Well, using standard procedure, we first have to prove that the two series are integrated. First, let us look at the autocorrelograms,

At first sight, we confirm the economic intuition that those indices should be integrated. Standard tests confirm that intuition,
> acf(X2,lag=1000,col="light green")
> acf(X1,lag=1000,col="light green")
> library(tseries)
> adf.test(X1)
        Augmented Dickey-Fuller Test
data:  X1
Dickey-Fuller = -1.0768, Lag order = 17, p-value = 0.9264
alternative hypothesis: stationary
> adf.test(X2)
        Augmented Dickey-Fuller Test
data:  X2
Dickey-Fuller = -1.2905, Lag order = 17, p-value = 0.8788
alternative hypothesis: stationary 

But if we want to go further, we have to find the cointegration relationship between the two series. From an heuristic point of view, a linear regression should be a good proxy,
> reg=lm(X1~X2)
> plot(residuals(reg))

> acf(residuals(reg),lag=1000,col="light green")

> adf.test(residuals(reg))
        Augmented Dickey-Fuller Test
data:  residuals(reg)
Dickey-Fuller = -5.176, Lag order = 17, p-value = 0.01
alternative hypothesis: stationary
Message d’avis :
In adf.test(residuals(reg)) : p-value smaller than printed p-value
> pp.test(residuals(reg))
        Phillips-Perron Unit Root Test
data:  residuals(reg)
Dickey-Fuller Z(alpha) = -46.9775, Truncation lag parameter = 11,
p-value = 0.01
alternative hypothesis: stationary
Message d’avis :
In pp.test(residuals(reg)) : p-value smaller than printed p-value
When we look at the autocorrelation function, it looks like we do have a stationary series.
This idea is - more or less - the idea of Engle-Granger two step procedure. But actually, we can not directly use Dickey-Fuller’s test to see if residuals are integrated. This was proved in Phillips and Ouliaris (1990), who also proposed a test (see e.g. here),
> library(tseries); po.test(cbind(X1,X2))
        Phillips-Ouliaris Cointegration Test
data:  cbind(X1, X2)
Phillips-Ouliaris demeaned = -53.1766, Truncation lag parameter = 57,
p-value = 0.01
Message d’avis :
In po.test(cbind(X1, X2)) : p-value smaller than printed p-value
Another similar function can be found in R
> library(urca)
> summary(ca.po(cbind(X1,X2)))
########################################
# Phillips and Ouliaris Unit Root Test #
########################################
Test of type Pu
detrending of series none
Call:
lm(formula = z[, 1] ~ z[, -1] - 1)
Value of test-statistic is: 45.2032
Critical values of Pu are:
                  10pct    5pct    1pct
critical values 20.3933 25.9711 38.3413
Thus, we has to admit that those series are cointegrated.
Based on that idea, it is possible to model the stationary component, and forecast it for the next ten years, based on the assumption that we know the behavior of one time series. Hence, if we add the confidence interval due to the stationary component uncertainty, we have the following graph,

 Of course, again, only uncertainty related to the stationary process is considered here....

jeudi 5 novembre 2009

Approche statistique de la causalité

Chose promise (ici), chose dûe, je vais revenir à la causalité, de manière un peu plus formelle je pense....

  • Les premiers travaux de Ronald Fisher
Mais avant tout chose, notons que les essais pour formaliser ces histoires de causalité sont finalement assez anciens On peut remonter par exemple 50 ans en  arrière, avec plusieurs papiers publiés par Ronald Fisher, le premier intitulé "cigarettes, cancer and statistics" (ce qui donne le ton), et surtout deux papiers http://blogperso.univ-rennes1.fr/arthur.charpentier/public/perso2/.Fisher_s.jpgde vulgarisation dans Nature, le premier "lung cancer and cigarettes" puis un second "cancer and smoking". Bon, à en voir la photo (mais aussi des éléments bibliographiques1), je pense que l’intention était de montrer que corrélation ne signifiait pas causalité, mais finalement, peu importe les motivations, la question est  pertinante. Il a d’ailleurs collecté ces travaux dans une oeuvre un peu pamphlétaire "smoking: the cancer contreversy, some attempts to assess the evidence". En fait les compagnies de cigarettes avaient compris très tôt que "corrélations statistiques" existaient, mais niais la relation de causalité. Et Ronald ne leur donnait pas vraiment tort...
Bon, mais si Ronald Fisher a souligné avec force la différence entre corrélation et causalité, il faut admettre qu’il n’a pas vraiment apporté de réponse. D’autant plus qu’il est mort 4 ans plus tard.... Entre temps, notons qu’il avait beaucoup discuté avec Bertand Russell sur la signification philosophique de la causalité.
Mais plusieurs auteurs s’étaient aussi penché sur ce problème, dont Jerome Cornfield, Richard Doll, ou encore Bradford Hill, qui établirent tous que le pourcentage des fumeurs dans une population de personnes atteintes de cancer était supérieur à celui dans une population de contrôle. Ils parlèrent de "retrospective studies" (un peu  comme pour souligner qu’ex post on observe toujours des choses dont on ne peut rien déduire, comme j’en parle ici). On part en effet de personnes malades, et on cherche ce qui pourrait les distinguer. Le cancer est une caractéristique, mais il aurait été possible - peut être - de trouver une autre "cause" comme le fait de porter un T-shirt ou une chemise, ou le fait de prendre du thé ou du café au petit déjeuner.
Bref, faire une étude de causalité nécessitait de ne pas partir d’un échantillon de personnes malades, mais de suivre une population dans le temps (ce qui est forcément beaucoup plus long). On parle alors  de "prospective studies".
  • La réponse de Clive Granger
Pour comprendre la notion de causalité telle que l’avait introduite Clive Granger en 1969, considérons deux séries temporelles. En effet, pour comprendre la différence entre la causalité et la corrélation, il faut qu’une variable se réalise avant l’autre.
On se donne deux processus  et on se demande si  cause , et dans quelle mesure (à supposer que cette causalité soit quantifiable, ou mesurable).     La loi du processus est la loi du processus du couple . Cette dernière s’écrit, à la date t, conditionnellement au passé, noté  et ,
Dans le cas où les processus et sont indépendants, alors
On peut montrer que


En passant au logarithme, et en prenant l’espérance (bon, et aussi en multipliant par 2 pour ceux qui veulent vérifier2) alors



ce qui permet d’indentifier un peu tous les termes que l’on devrait naturellement voire apparaître quand on va regarder un peu plus en détails.
Voilà pour les généralités. Formellement, on retrouve les notions de causalité introduites par Clive Granger,

Soient et  deux séries temporelles. En reprenant les définition proposée par Clive Granger dès 1969, on dira
  • cause à la date t si et seulement
  • cause instantanément à la date t si et seulement
autrement dit, on a des définitions assez intuitives. Non ?
Si c’est un peu trop théorique, prenons le petit exemple simple suivant: soient  et  deux séries temporelles définies par une relation de récurence de la forme
où on va supposer que   et  sont des bruits blancs indépendants. Comme
 
on notera que cause à la date t si et seulement . De manière similaire, notons que
autrement dit, on a causalité instantanée de  vers si et seulement si .
Les séries ont été simulées sur le graphique ci-dessous, en supposant que un bruit blanc.
http://blogperso.univ-rennes1.fr/arthur.charpentier/public/perso2/.causalite-granger-series-1_m.jpg
http://blogperso.univ-rennes1.fr/arthur.charpentier/public/perso2/.causalite-granger-scatte-1_m.jpg
Si l’on prend une série intégrée pour  la causalité est peut être un peu plus claire à visualiser,
http://blogperso.univ-rennes1.fr/arthur.charpentier/public/perso2/.causalite-granger-series-2_m.jpg
http://blogperso.univ-rennes1.fr/arthur.charpentier/public/perso2/.causalite-granger-scatte-2_m.jpg
Bon, mais cet exemple peut bien sûr se généraliser ! Rien de plus simple..... Pour cela, on va suppose que le couple suit un modèle autorégressif joint, i.e.
soit, en explicitant un peu,
où on supposera , ce qui permettra d’interpréter le vecteur  comme le processus d’innovation. Alors
  • ne cause pas  à la date t si et seulement si et seulement si les coefficients de  sont nuls, i.e. 
  • ne cause pas à la date t si et seulement si et seulement si les coefficients de  sont nuls, i.e. 
Cette causalité est finalement assez intuitive, et finalement assez simple à tester avec n’importe quel logiciel... 
1 et force est de constater que Ronald Fisher avait un don pour tuer le débat dans l’oeuf. Pour lui, l’utilisation de la corrélation comme élément causal par le gouvernement (dans le cadre de campagnes de lutte contre le cancer) était à rapprocher de l’utilisation de la propagande par les nazis...
2 pour ceux qui lisent régulièrement ce blog, on voit souvent des 2 trainer dans les formules de statistique, comme pour définir la déviance par exemple... Je ferais un jour un billet pour expliquer pourquoi les statisiciens essayent de se donner de l’importance en multipliant tout par 2.

lundi 9 mars 2009

de derrière les fagots... (9), analyse spectrale

Suite à une discussion jeudi soir sur le contenu des enseignements de cours d’économétrie et de séries temporelles avec Bernard Delyon (ici) et Jian Feng Yao (ici), j’ai décidé de me replonger dans un livre de Clive Granger, traduit en français sous le titre Analyse spectrale des séries temporelles en économie. Le point de départ était un débat sur l’intérêt d’enseigner les méthodes spectrales dans le cadre du master Statistiques & Econométrie.

J’ai l’impression qu’il s’agit fondamentalement d’un problème "culturel". Effectivement, je me suis rendu compte que j’essayais d’éviter d’introduire des notions d’analyse spectrale, qui ne sont pas dans ma "culture" (autant que possible). Tout d’abord en probabilités, où effectivement j’aborde aussi tardivement que possible (ou si possible jamais) la fonction charactéristique. Sauf qu’il y a toujours deux moments où j’en ai  réellement besoin (les deux étant liés). tout d’abord - puisqu’on le voit en ce moment en cours - lors de l’étude des lois composés. Sommer des variables se fait mal avec les fonctions de répartition (via la convolée) mais bien avec les fonctions génératrices. En revanche, j’évite toujours d’aborder les méthodes de types Fast Fourier Transform. Et de manière analogue, lorsque je parle un peu de théorèmes limites pour introduire par exemples les valeurs extrêmes. Pour expliquer le théorème de Fisher-Tippett (et de Gnedenko), il faut partir de l’étude de la moyene (qui se fait via la fonction charactéristique puisqu’on somme des variables indépendantes), alors que pour les extrêmes, l’étude du max se fait via la fonction de répartition (qui est très simple pour un max). Bref, l’approche est analogue (points fixes et équations fonctionnelles) mais sur des objets différents. Et lorsque je faisais cours de séries temporelles (en M2 actuariat et M2 mathématiques de la décision à Dauphine, il y a quelques années, cf partie 1 et partie 2), j’introduisais les notions de base de périodogramme, et j’expliquais ainsi d’où venait le terme bruit "blanc"*, mais sans aller beaucoup plus loin. Toutefois, je me suis rendu compte qu’il était beaucoup plus simple de travailler sur l’analyse spectrale lorsqu’on commence à parler de mémoire longue. C’est d’ailleurs ainsi que Jan Beran introduit la mémoire longue dans son livre. Et c’est aussi ainsi que nous analysions les séries de vent (ici) ou de température (à venir bientôt).

Bref, l’analyse spectrale était le truc à éviter, surtout que statistiquement, sur des "petits" échantillons, je trouvais les résultats peu intéressants. Puis j’ai relu un peu Granger. L’introduction de von Neumann aborde d’ailleurs le problème "culturel" dont je parlais tout à l’heure. C’est aussi le cas de la préface de Granger,


Il faut admettre que sur la détection des cycles, ces méthodes marchent incroyablement bien ! C’est d’ailleurs ce que nous avions vu sur les données d’Haslett et Raftery sur le vent en Irlande: bien que très bruité, le cycle apparaît très clairement via l’étude de la densité spectrale...


* Par analogie avec la "lumière blanche" qui contient toutes les fréquences lumineuses avec la même intensité, un bruit blanc est un processus dont la densité spectrale est la même à toutes les fréquences.