[latexpage]Je vais expliquer dans ce post comment faire les deux graphiques du post sur l’article de Reinhart et Rogoff sous le logiciel R en faisant un peu d’économétrie non paramétrique.

Evolution depuis de la création des ratios dette/PIB Lien Croissance PIB et ratio

Pour effectuer les figures 1 et 2 du post sur l’erreur de Reinhart-Rogoff, il faut avoir téléchargé préalablement le logiciel de calcul R et installé le package ggplot2. Pour cela, lancer dans la console R,

  install.packages("ggplot2")

Ce package sert à faire très facilement des graphiques élégants sous R. Il faut ensuite télécharger les données R&R que j’ai extrait de la base de données de l’OCDE et que j’ai retravaillé manuellement pour que les données soit lisibles par le logiciel R. Il faut extraire les données (installer gratuitement winrar pour décompresser) dans un dossier, dans mon cas je l’ai mis sur mon bureau, vous devez le préciser au logiciel l’adresse de votre dossier pour qu’il puisse lire les données et charger le package ggplot2. Pour effectuer cela, exécuter dans la console,

library(ggplot2)
setwd(‘C:/Users/Gauthier/Desktop/figures_RR/’)

Maintenant il faut lire les données par le logociel pour faire les calculs. Je mets à disposition 3 données, la dette nominale des pays de la zone euro depuis 1999, le PIB nominal, et le déflateur du PIB.

# import value
debt=read.csv(‘debt.csv’,sep=’;’,dec = ‘,’,header=TRUE)[,c(-1)]
gdp=read.csv(‘gdp.csv’,sep=’;’,dec = ‘,’,header=TRUE)[,c(-1)]
def=read.csv(‘def.csv’,sep=’;’,dec = ‘,’,header=TRUE)[,c(-1)]

Avant de dessiner la première figure, il faut d’abord exprimer les variables en termes réels. Ainsi on calcule le PIB réel $PIB^{réel}_{t}=PIB^{nominal}_{t}/Def_{t}$ et la dette réelle $Dette^{réel}_{t}=Dette^{nominal}_{t}/Def_{t}$. Enfin on calcule le ratio Dette sur PIB. Tout ceci en code R se calcule facilement par opération matricielle,

rdebt=debt/def
rgdp=gdp/def
ratio=rdebt/rgdp

Enfin on convertit les données en format data frame afin que R puisse lire facilement le résultat.

# convert to data frame
df
date=seq(as.Date(‘1999/1/1’), as.Date(‘2012/10/1’), by = ‘3 months’),
d = ratio
)

Dessiner la figure 1

Et on passe à la phase amusante, dessiner les données. Je déclare une liste de pays à dessiner (si l’on dessinait tous les pays de la zone euro le graphique serait illisible). Je crée une boucle qui parcourt la liste des pays à dessiner.

# plot fig 1
dt col=c(‘Allemagne’,’France’,’Italie’,’Espagne’,’Grece’,’Irlande’,’Espagne’,’Portugal’)#colnames(debt)
for( i in 1:length(col) ){
name=paste(‘d.’,col[i],sep =  », collapse = NULL)
name2=paste(col[i])
eval(parse(text=paste(‘dt }
dt + xlab(‘Année’) + ylab(‘Dette/PIB’)

Ce qui va sortir la figure 1.

Evolution depuis de la création des ratios dette/PIB

 Dessiner la figure 2

Enfin pour dessiner la figure 2, qui établit le lien entre ratio de dette publique et croissance du PIB, il nous manque une variable : la croissance du PIB réel. On a effectivement calculé le ratio dette/PIB et stocké sous R dans la variable ratio. Pour calculer la croissance du PIB réel, il faut effectuer le calcul du taux de variation sous R,
\begin{equation}\label{eq:MaxUtility}
Croissance_{t}=\left(\frac{PIB^{réel}_{t+1}}{PIB^{réel}_{t}}-1\right)100
\end{equation}
Quand on fait ce calcul sous R, notre matrice va perdre une donnée. On stocke notre taux de croissance du PIB dans la matrice grgdp qui a une ligne de moins que la matrice rgdp. On parcours ensuite par une boucle l’ensemble des périodes t de notre matrice, et l’on applique notre calcul.

# computing real gdp growth
grgdp = rgdp[-dim(rgdp)[1],]
for( t in 1:(dim(rgdp)[1]-1) ){
grgdp[t,] = ((rgdp[t+1,]/rgdp[t,])-1)*100
}

Pour que les données soient encore lisibles par le package ggplot2 facilement, on met toutes  nos données dans un même vecteur (on transforme notre matrice en vecteur) que l’on met comme pour la figure 1 dans un data frame.

x=c(as.matrix(ratio[-1,]))
y=c(as.matrix(grgdp))

myx=c()
myy=c()
for( i in 1:(length(x)) ){
if( is.na(x[i]) == FALSE && is.na(y[i]) == FALSE ){
myx=c(myx,x[i])
myy=c(myy,y[i])
}
}

mydata=data.frame(
growth=myy,
ratio=myx
)

Enfin on recommence à dessiner nos données. L’emploi de la fonction geom_point() permet de dessiner tous les points sur notre graphique, et la fonction stat_smooth() sert à faire une régression non paramétrique par Splines.

c <- ggplot(mydata, aes(ratio,growth)) + geom_point() + stat_smooth() + ylim(-2.5, 3) + xlab(‘Dette/PIB’) + ylab(‘Croissance PIB Réel’)
c

Ceci va nous sortir la figure 2.

Lien Croissance PIB et ratio

L’intégrité du code est disponible ici.