[latexpage]In this post, I explain how to make two graphs from my post dealing with the article of Reinhart and Rogoff (french). The first figure is simple plot while the other is non parametric estimate by Splines.

[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.

First of all,  you need the (obviously free) software R, once you’ve launched R, you need to install the ggplot2 package. Just run that code in the command window to install the package:

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

This package is an easy and very nice plotting system. Download the data R&R I extracted from the OECD Database, I slightly reworked the dataset to load it easily in R. Edit this following command and set your own path to the folder where you have extracted your data,
setwd(‘C:/Users/Gauthier/Desktop/figures_RR/’)

Then we have to load the data via R. In the dataset, we have 3 time series of country members of the Euro Area: the public nominal debt, nominal GDP and the GDP deflator. To read them, you have to execute in the command windows,

# import value

First we must calculate the real variables: $GDP^{real}_{t}=GDP^{nominal}_{t}/Def_{t}$, $Debt^{real}_{t}=Debt^{nominal}_{t}/Def_{t}$ and the Debt to GDP ratio,

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

Then we set our calculations in a data frame,

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

We can now start to plot the figures.

### Figure 1

We first declare a list of country we will plot, then we parse the list via a simple loop,

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

And we obtain the figure 1,

### Figure 2

To draw the second figure that plots the correlation between the debt to GDP ratio with the GDP growth, we need to calculate the real GDP growth. We simply need to evaluate,
\label{eq:MaxUtility}
\Delta GDP^{real}_{t}=\left(\frac{GDP^{real}_{t+1}}{GDP^{real}_{t}}-1\right)100

We create the variable grgdp and we perform the calculation via another simple loop,

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

And we set all these variables in a 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
)

We draw all the point by calling the function the geom_point(), then we use the function stat_smooth() to perform a non parametric estimation by splines with a 90% interval.

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

Then we obtain the figure 2.

Get the whole code here.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

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.

### 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,
\label{eq:MaxUtility}
Croissance_{t}=\left(\frac{PIB^{réel}_{t+1}}{PIB^{réel}_{t}}-1\right)100

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.