donnees_italy <-data_schularick %>%
filter(country == "Italy") %>%
filter(year >= 1960)%>%
select(year, xrusd, cpi) %>%
mutate(cpi_growth = c(NA, diff(log(cpi)))*100)%>%
mutate(xrusd_growth = c(NA, diff(log(xrusd)))*100)%>%
na.omit()
donnees_italy
data_conso <- donnees_italy %>%
select(year, cpi_growth)
ggplot(data_conso, aes(x=year, y=cpi_growth))+
geom_line(lwd=1)+
theme_bw()
On remarque que ni la moyenne, ni la variance ne sont constante dans le
temps. On peut émettre l’hypothèse qu’il s’agit peut être d’un processus
non stationnaire. D’un point de vue de sa dynamique, la série est très
lisse dans le temps
d_i <- donnees_italy %>%
select(year, xrusd_growth)
ggplot(d_i, aes(x=year, y=xrusd_growth))+
geom_line(lwd=1)+
theme_bw()
Pour ce qui en est de la croissance du taux de change avec l’USD, il
semblerait que la moyenne est constante dans le temps et est proche de 0
tandis que la variance semble convergé dans le tend.En dehors de celà,
on peut observer la forte volatilité de la série, donc des taux changes
de la monnaie italiennes avec l’USD.
ggplot(donnees_italy, aes(x=year, y=cpi_growth))+
geom_line(lwd=1)+
geom_line(aes(y=xrusd_growth), col="red", lwd=1)+
labs(y="Prix et taux de change en croissance")+
theme_bw()
Il est difficile de discerné une tendance générale entre les séries dans
le temps sur ce graphique. Peut être un effet de long terme ou retardé
dans le temps.
ggplot(donnees_italy, aes(x=xrusd_growth, y=cpi_growth))+
geom_point()+
geom_smooth(method="lm")+
theme_bw()
## `geom_smooth()` using formula = 'y ~ x'
Il semble y avoir une relation positive entre le taux d’inflation et le
taux de change avec le dollars.
reg <- feols(cpi_growth ~ xrusd_growth, donnees_italy)
etable(reg)
On confirme les données fournis précédemment, il y a un impact positif et significatif d’une dépréciation de la monnaie vis à vis du dollars sur les prix à la consommation. D’après les coefficient pour une augmentation de l’indice des prix à la consommation d’une unité (un point de pourcentage en l’occurence), le taux d’inflation tend à augmenter de 0.1580 unités (donc 0.16 points de pourcentages).
Mais pour caractériser cette relation il faut vérifier qu’elle ne soit pas biaisée.
reg <- feols(cpi_growth ~ lag(cpi_growth,1), donnees_italy)
etable(reg)
## Warning: The VCOV matrix is not positive semi-definite and was 'fixed' (see
## ?vcov).
On remarque que le résultat de la régression de notre croissance des prix à la consommation est égal à 1, par conséquent les prix à la consommation de la période précédente explique parfaitement les prix à la consommation de la période actuelle, ainsi la série dépend potentiellement du temps ce qui pourrait signaler que la série n’est pas stationnaire, confirmant les données fournis par le précédent graphique.
reg <- feols( xrusd_growth ~ lag(xrusd_growth,1), donnees_italy)
etable(reg)
## Warning: The VCOV matrix is not positive semi-definite and was 'fixed' (see
## ?vcov).
Même chose pour la croissance du taux de change. Le coefficient différent de 0 démontre que la série dépend peut être du temps du temps et que par conséquent elle n’est pas stationnaire mais qu’il y a précense d’autocorrélation.
summary(ur.df(donnees_italy$cpi_growth, type="trend"))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression trend
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.6297 -1.0433 -0.1317 0.7028 6.8140
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.81840 0.84430 2.154 0.0357 *
## z.lag.1 -0.14683 0.06213 -2.363 0.0217 *
## tt -0.03455 0.01842 -1.876 0.0661 .
## z.diff.lag 0.16481 0.13082 1.260 0.2131
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.988 on 54 degrees of freedom
## Multiple R-squared: 0.1151, Adjusted R-squared: 0.06599
## F-statistic: 2.342 on 3 and 54 DF, p-value: 0.08334
##
##
## Value of test-statistic is: -2.3634 2.0708 3.0751
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau3 -4.04 -3.45 -3.15
## phi2 6.50 4.88 4.16
## phi3 8.73 6.49 5.47
On repère ici un trend significatif à 10 % mais pas à 5% ce qui parait insuffisant pour qualifier avec une significativité suffisante la stationnarité de la série. On cherche donc s’il existe une constante significative dans la série.
summary(ur.df(donnees_italy$cpi_growth, type="drift"))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression drift
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.7990 -1.0108 -0.3512 0.6455 7.1373
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.42102 0.40647 1.036 0.305
## z.lag.1 -0.08592 0.05417 -1.586 0.118
## z.diff.lag 0.16545 0.13378 1.237 0.221
##
## Residual standard error: 2.033 on 55 degrees of freedom
## Multiple R-squared: 0.05748, Adjusted R-squared: 0.02321
## F-statistic: 1.677 on 2 and 55 DF, p-value: 0.1963
##
##
## Value of test-statistic is: -1.5861 1.2876
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau2 -3.51 -2.89 -2.58
## phi1 6.70 4.71 3.86
Aucun drift n’est détcté dans ce test, donc aucune constante, on vérifie à présent l’autocorrélation de la série.
summary(ur.df(donnees_italy$cpi_growth, type="none"))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression none
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.0401 -0.6835 -0.0937 0.7227 7.2500
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 -0.04362 0.03561 -1.225 0.226
## z.diff.lag 0.14135 0.13183 1.072 0.288
##
## Residual standard error: 2.035 on 56 degrees of freedom
## Multiple R-squared: 0.0402, Adjusted R-squared: 0.005922
## F-statistic: 1.173 on 2 and 56 DF, p-value: 0.317
##
##
## Value of test-statistic is: -1.2249
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.6 -1.95 -1.61
Aucune racine unitaire n’est detecté par le test de Dickey-Fuller sans constante, l’autocorrélation significative, et puisque la série n’a pas de trend ni de drift, elle est donc par définition un DS. Elle n’est pas stationnaire, ce qui confirme nos premières hypothèses. Pour la stationarisé, il faut donc la passer en différence.
donnees_italy <- donnees_italy %>%
mutate(dcpi_growth= c(NA, diff(cpi_growth)))%>%
na.omit()
ggplot(donnees_italy, aes(x=year, y=dcpi_growth))+
geom_line()+
labs(title="Croissance du CPI en différence première")+
theme_bw()
Il semblerait que à présent la série est stationnaire, mais il vaut
mieux vérifier.
summary(ur.df(donnees_italy$dcpi_growth, type="none"))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression none
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.7782 -1.0821 -0.2130 0.3655 6.8307
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 -1.0636 0.1715 -6.202 7.57e-08 ***
## z.diff.lag 0.1898 0.1290 1.471 0.147
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.993 on 55 degrees of freedom
## Multiple R-squared: 0.4807, Adjusted R-squared: 0.4618
## F-statistic: 25.45 on 2 and 55 DF, p-value: 1.496e-08
##
##
## Value of test-statistic is: -6.2024
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.6 -1.95 -1.61
Une fois passer en différence la série ne présente plus de racine unitaire, ce qui veut dire qu’elle est à présent stationnaire en niveau et ne dépend plus du temps.Elle est intégré d’ordre 1: I(1).
summary(ur.df(donnees_italy$xrusd_growth, type="trend"))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression trend
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -18.650 -6.062 -2.627 5.826 22.082
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.39881 2.89093 1.176 0.2450
## z.lag.1 -0.90080 0.15951 -5.647 6.55e-07 ***
## tt -0.06510 0.08351 -0.780 0.4391
## z.diff.lag 0.25899 0.13355 1.939 0.0578 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 10.33 on 53 degrees of freedom
## Multiple R-squared: 0.3987, Adjusted R-squared: 0.3647
## F-statistic: 11.71 on 3 and 53 DF, p-value: 5.347e-06
##
##
## Value of test-statistic is: -5.6473 10.6596 15.9832
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau3 -4.04 -3.45 -3.15
## phi2 6.50 4.88 4.16
## phi3 8.73 6.49 5.47
Le test de Dickey-Fuller avec trend ne met pas ici en évidence un trend significatif, on cherche alors la présence d’une constante
summary(ur.df(donnees_italy$xrusd_growth, type="drift"))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression drift
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -19.587 -5.965 -1.362 5.451 23.078
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.4258 1.3921 1.024 0.3103
## z.lag.1 -0.8896 0.1583 -5.620 6.87e-07 ***
## z.diff.lag 0.2537 0.1329 1.909 0.0615 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 10.29 on 54 degrees of freedom
## Multiple R-squared: 0.3918, Adjusted R-squared: 0.3693
## F-statistic: 17.39 on 2 and 54 DF, p-value: 1.477e-06
##
##
## Value of test-statistic is: -5.6203 15.8004
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau2 -3.51 -2.89 -2.58
## phi1 6.70 4.71 3.86
Le test de Dickey-Fuller ne détecte aucun drift.On vérifie ensuite l’autocorrélation de la série.
summary(ur.df(donnees_italy$xrusd_growth, type="none"))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression none
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -18.2789 -4.5381 0.0583 7.0367 24.3125
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 -0.8569 0.1551 -5.525 9.29e-07 ***
## z.diff.lag 0.2377 0.1320 1.800 0.0773 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 10.3 on 55 degrees of freedom
## Multiple R-squared: 0.3801, Adjusted R-squared: 0.3575
## F-statistic: 16.86 on 2 and 55 DF, p-value: 1.947e-06
##
##
## Value of test-statistic is: -5.5249
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.6 -1.95 -1.61
Le test de Dickey-Fuller ne détecte aucune autocorrélation significative dans la série puisque sa t-stat est inférieur aux taux critiques. Par définition la série est donc stationnaire en niveaux. Cela confirme les premières que nous avons pu faire avec les graphiques.
regression <- feols(dcpi_growth ~ xrusd_growth, data=donnees_italy)
etable(regression)
On voit ici que le coefficient associé à la variation du taux de change avec le dollars américain n’est pas significatif. Lorsque le taux de change se déprécie, le prix des importants augmente mais trop faiblement pour expliqué de manière significative l’inflation. En Italie, l’inflation importé n’explique pas vraiment l’inflation du pays, qui est dû à d’autres facteurs que la dépréciation ou l’appréciation de sa monnaie vis à vis du dollars. Pour confirmer celà, on peut analyser les résidus. On peut toutefois annoter que les variables sont intégrés d’ordre différent ( I(1) pour l’inflation, et I(0) pour le taux de change)
fitted_val <- regression$fitted.values
residuals <- regression$residuals
donnees_italy_2 <- donnees_italy %>%
cbind(fitted_val)%>%
cbind(residuals)
ggplot(donnees_italy_2, aes(x=year, y=dcpi_growth))+
geom_line(lwd=1)+
geom_line(aes(y=fitted_val), color="red", lty=2, lwd=1)+
theme_bw()
On peut voir que notre modèle, bien qu’il utilise des variables
correctement stationnarisées, ne représente par correctement la
dynamique de la série. Etant donné que les valeurs ajustés que le modèle
a une courbe plate (proche de 0) et ne suit pas du tout les fluctuations
de dcpi_growth. Cela suggère que l’effet de xrusd_growth sur dcpi_growth
est faible. Donc les variations d’appréciations de la monnaie officielle
de l’Italie vis à vis du dollars influe peu sur la croissance des prix,
donc l’inflation. La variation du taux de change n’expliqe pas
l’inflation italienne. Confirmant notre résultats précédents. Par
conséquent, il reste un grand nombre de résidus inexpliqué par la
variable taux de change USD sur l’inflation. On peut également voir que
les résidus change drastiquement durant les années 80-90, indiquant une
potentielle hétéroscédasticité.
require(lmtest)
## Le chargement a nécessité le package : lmtest
## Warning: le package 'lmtest' a été compilé avec la version R 4.5.2
## Le chargement a nécessité le package : zoo
##
## Attachement du package : 'zoo'
## Les objets suivants sont masqués depuis 'package:base':
##
## as.Date, as.Date.numeric
bptest(dcpi_growth ~ xrusd_growth, data=donnees_italy)
##
## studentized Breusch-Pagan test
##
## data: dcpi_growth ~ xrusd_growth
## BP = 0.98709, df = 1, p-value = 0.3205
La p-value n’est pas significative, donc pas de preuve d’hétéroscédasticités contrairement à se qu’on pouvait penser avant. La variance des erreurs peut têtre considérés comme constante, on ne peut pas rejeter l’hypothèse que les résidus de la régression sont homoscédastique.
ggplot(donnees_italy_2, aes(residuals))+geom_density(fill="grey60", bounds=c(-Inf, Inf))+theme_bw()
Les résidus sont bien distribués autour de zéro, et la moyenne est très
proche de zéro.
shapiro.test(donnees_italy_2$residuals)
##
## Shapiro-Wilk normality test
##
## data: donnees_italy_2$residuals
## W = 0.90588, p-value = 0.0002449
Toute fois le test de Shapiro vient contredire la normalité de distribution des résidus.
Box.test(donnees_italy_2$residuals, lag = 10, type = "Ljung-Box")
##
## Box-Ljung test
##
## data: donnees_italy_2$residuals
## X-squared = 11.257, df = 10, p-value = 0.3379
Selon le test d’indépendance de Box-Ljung, la p-value est supérieur 0.1, elle n’est donc pas significative. On en déduis que les résidus sont indépendants dans le temps et ne sont pas issus des résidus passés.
reg_colin <- feols(dcpi_growth ~ xrusd + lag(dcpi_growth), data= donnees_italy)
etable(reg_colin)
## Warning: The VCOV matrix is not positive semi-definite and was 'fixed' (see
## ?vcov).
fitted_val_colin <- reg_colin$fitted.values
residuals_colin <- reg_colin$residuals
donnees_italy_3 <- donnees_italy %>%
cbind(fitted_val_colin)%>%
cbind(residuals_colin)
ggplot(donnees_italy_3, aes(x=year, y=dcpi_growth))+
geom_line(lwd=1)+
geom_line(aes(y=fitted_val_colin), color="red", lty=2, lwd=1)+
theme_bw()
Ici, on pouvait essayer d’ajouter une variable pour expliquer notre
variable. Mias en réalité il y a un problème de collinéarité car
xrusd_growth n’explique pas quasi pas la variable et pas de manière
significative, de telle sorte que lag(dcpi_growth) explique tout et cela
crée de la collinéarité parfaite dans le modèle. Donc pas d’intérêt à
l’utiliser.
Comme la démontré dans les années 1980 Mussa, la hausse de la volatilité des taux de change n’a eu quasiment aucun impact sur l’inflation italienne. La dépréciation de la monnaie n’a pas crée une hausse des prix des importation ni une baisse de manière signification. L’inflation importé ne permet pas d’expliquer l’inflation de l’Italie.