Nous étudions les données du taux d’investissement aux Etats-Unis
afin de faire de la prévision.
Le taux d’investissement aux États-Unis est généralement mesuré par
la formation brute de capital fixe (FBCF). La FBCF mesure la valeur
totale des biens durables, tels que les équipements, les bâtiments et
les machines, achetés par les entreprises, les gouvernements et les
particuliers sur une période donnée.
Les données sur la FBCF sont publiées chaque trimestre par le Bureau
of Economic Analysis (BEA) du département du Commerce des États-Unis. Le
BEA recueille des données auprès des entreprises, des gouvernements et
des particuliers pour calculer la FBCF.
Les données que nous avons récupérées constituent donc une série
temporelle. Car une série temporelle se caractérise par un ensemble
d’observations mesurées sur des temps distincts à des dates
d’observations souvent équidistantes. Dans notre cas nous avons une
série annuelle.
L’objectif de ce projet est de prévoir les taux d’investissement des
Etats-Unis. Pour faire de la prévision, nous aurons besoin que,le
Processus Générateur de Données (PGD), i.e. l’équation qui a générénos
données soit stationnaire.
Il existe plusieurs types de PGD comme on peut le voir sur la figure ci-dessous :
Un PGD est stationnaire si :
• si son espérance et son autocovaraince ne dépendent pas du
temps
• si sa variance est finie
Un PGD est TS(Trend
Stationary) si :
• son espérance dépend du temps
• sa
variance ne dépend pas du temps
Un PGD est DS (Difference
Stationary) si :
• on espérance dépend du temps
• sa
variance dépend du temps
Pour identifier la nature de notre PGD
nous réaliserons des tests de racine unitaire. Si nous concluons qu’il
n’est pas stationnaire nous devrons le transformer en un processus
stationnaire avant de faire la prévision.
Comme nous pouvons le voir, nous avons les taux d’investissement des
Etats-Unis de 1972 jusqu’à 2021.
Nous avons donc 50
observations.
library(ggplot2)
# Créer un data frame avec les données de votre série temporelle
df <- data.frame(
année = c(1972:2021),
taux_investissement = Y)
ggplot(df, aes(x = année, y = taux_investissement)) +
geom_bar(stat = "identity", fill = "steelblue4") +
labs(title = "Taux d'investissement annuel de 1972 à 2021 au USA",
x = "Année",
y = "Taux d'investissement (%)") +
theme_minimal()
# Convertir la colonne de la série temporelle en une série temporelle de R
ts_data <- Y
# Calculer les statistiques descriptives
mean_value <- mean(ts_data)
median_value <- median(ts_data)
sd_value <- sd(ts_data)
min_value <- min(ts_data)
max_value <- max(ts_data)
q1 <- quantile(ts_data, probs = 0.25)
q2 <- quantile(ts_data, probs = 0.5)
q3 <- quantile(ts_data, probs = 0.75)
skewness <- moments::skewness(ts_data)
kurtosis <- moments::kurtosis(ts_data)
# Créer un data frame avec les statistiques descriptives
stats_df <- data.frame(
Statistique = c("Moyenne", "Médiane", "Écart-type", "Minimum", "Maximum", "Q1", "Q2", "Q3", "Skewness", "Kurtosis"),
Valeur = c(mean_value, median_value, sd_value, min_value, max_value, q1, q2, q3, skewness, kurtosis)
)
# Afficher le tableau
knitr::kable(stats_df, caption = "Statistiques descriptives de la série temporelle du taux d'investissement")
| Statistique | Valeur |
|---|---|
| Moyenne | 21.6138966 |
| Médiane | 21.6027209 |
| Écart-type | 1.4211751 |
| Minimum | 18.3139378 |
| Maximum | 24.4266334 |
| Q1 | 20.6483143 |
| Q2 | 21.6027209 |
| Q3 | 22.5329075 |
| Skewness | -0.2595319 |
| Kurtosis | 2.4884793 |
Nos taux d’investissement oscillent entre 18.31% et 24.43% avec une moyenne à 21.61%et une médiane à 21.60%.
Le coefficient de skewness est de -0,26, ce qui indique que la
distribution des valeurs de la série est légèrement asymétrique vers la
gauche.
Le coefficient d’aplatissement est de 2,49, ce qui indique
que la distribution des valeurs de la série est plus aplatie (moins
pointue) que la distribution normale.
Le chronogramme est une représentation graphique où l’on place notre
série en ordonnée et le temps en abscisse. Il nous permettra de voir
:
• l’évolution de la série dans le temps
• si la série a une
tendance (croissante ou décroissante)
• si la série fluctue autour
d’une valeur nulle ou non nulle
• si il y a des effets saisonniers
dons notre série
plot(Y,main= "Taux d'investissement annuels des Etats−Unis de 1972 à 2021" ,xlab="années" ,ylab="tx d'investissement en %",type="l")
points(Y, col = "grey38", pch = 19)
box(lwd = 3, col = "black", bty = "l")
abline(h = mean(Y), col = "grey", lty = 3)
text(x = 1981, y = mean(Y), labels = "Valeur moyenne", pos = 1, col = "grey",cex=0.75)
abline(v = c("1975"), col = "red", lty = 3)
text(x = 1973, y = 24, labels = "1975", pos = 1, col = "firebrick4",cex=0.75)
text(x = 1982, y = 22.2, labels = "1982-1983", pos = 1, col = "firebrick4",cex=0.75)
symbols(x = 1982.5,
y = 22.5,
circles = rep(1.8, 1),
add = TRUE,
inches = FALSE,
fg = "red",
lwd = 2)
abline(v = c("1992"), col = "red", lty = 3)
text(x = 1994, y = 20, labels = "1992 ", pos = 1, col = "firebrick4",cex=0.75)
text(x = 2003, y = 21, labels = "2002-2003", pos = 1, col = "firebrick4",cex=0.75)
symbols(x = 2002.5,
y = 21.5,
circles = rep(2, 1),
add = TRUE,
inches = FALSE,
fg = "red",
lwd = 2)
abline(v = c("2010"), col = "red", lty = 3)
text(x = 2012, y = 18.6, labels = "2010 ", pos = 1, col = "firebrick4",cex=0.75)
NB : La droite grise horizontale représente la moyenne de nos données.
Il n’y a pas de tendance globale : ni croissante ni décroissante. La série ne semble pas fluctuer autour d’une valeur nulle ni autour d’une valeur non nulle. Il ne semble pas y avoir de saisonnalité, les écarts entre les différents pics ne sont pas égaux. Il ne semble pas y avoir d’hétéroscédasticité.
Quelques faits historiques qui pourraient avoir eu une influence sur nos données :
• 1974 : choc pétrolier et dépôt de bilan de la
banque allemande Herstatt
• 1979 : 2ème
choc pétrolier et mise en place d’une politique
monétaire restrictive aux États-Unis
• 1982 : récession
brutale aux Etats-Unis
• 1987 : Krach d’octobre
1987
• 1989 : “Junk Bonds”, Bulle
spéculative Japonaise
• 1990 : Invasion du
Koweit (pétrol)
• 2001 : Krach boursier de
2001-2002 (“éclatement de la bulle internet”),
Attentats du 11 septembre
• 2008 : crise des
Subprimes
• 2020 : crise liée au
Covid-19
Remarquons que souvent une crise n’a pas d’impact directement sur l’année en cours, elle peut se voir quelques années après.
Fonction d’autocorrélation (ACF) et d’autocorrélation partielle(PACF)
sur la série originale.
Avant de réaliser les tests on regarde l’ACF et le PACF de la série originale afin d’avoir une idée sur l’autocorrélation.
acfY=acf(Y,main="ACF sur la série orginale")
pacfY=pacf(Y,main="PACF sur la série orginale")
D’après l’ACF \(𝜌(1)\), \(𝜌(2)\),\(𝜌(3)\),\(𝜌(4)\) sont significatifs .Mais d’après le PACF il n’y a que \(𝑎(1)\) et \(𝑎(2)\) qui sont significatifs donc il semble y avoir de l’autocorrélation jusqu’à l’ordre 2.
Les tests de racine unitaire permettent d’identifier la nature de notre Processus Générateur de Données (PGD).Ils vont donc nous permettre d’identifier si notre PGD est stationnaire ou non. Si il n’est pas stationnaire, il a une tendance et il est donc TS(Trend Stationnary) ou DS(Difference Stationnary).
A la vue de notre chronogramme, notre série ne semble pas stationnaire. Les conclusions de nos tests devraient alors nous dire que notre Processus Générateur de Données est soit DS soit TS.
Dans les 4 tests que nous allons réaliser nous prendrons un risque de
première espèce : 𝛼 = 0, 05.
Le risque de 1ère
espèce représente la probabilité de rejeter à tort\(𝐻_0\).
La règle de décision est la suivante : si la p-value est inférieure à 𝛼 on rejette l’hypothèse nulle \((H_0)\). La p-value représente donc la probabilité de rejeter à tort l’hypothese nulle.
Nous réaliserons 4 tests :
• le test de Dickey-Fuller (DF)
• le test de
Dickey-Fuller augmenté (ADF)
• le test de Zivot et Andrews
(ZA)
• le test de Lee et Strazicich (LS)
Dans un premier temps nous réaliserons le test de Dickey-Fuller et le test de Dickey-Fuller augmenté.
Dans ces deux tests il y a trois spécifications :
• la spécification trend
• la spécification drift
• la
spécification none
La spécification drift et trend ne sont pas les bonnes(voir annexe) donc je
continue avec None.
On estime :
Et on teste :
summary(ur.df(Y,type="none",lag=0))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression none
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.4005 -0.4742 0.1729 0.4801 1.3538
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 -0.001168 0.004695 -0.249 0.805
##
## Residual standard error: 0.7121 on 48 degrees of freedom
## Multiple R-squared: 0.001288, Adjusted R-squared: -0.01952
## F-statistic: 0.06192 on 1 and 48 DF, p-value: 0.8046
##
##
## Value of test-statistic is: -0.2488
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.62 -1.95 -1.61
On teste alors :
La règle de décision est : si la statistique t calculé pour \((𝜌 − 1)\) est supérieur à la valeur critique donnée à l’intersection de la ligne tau1 et de la colonne 5%, on accepte \(𝐻_0\)
plot(ur.df(Y,type= "none",lag=0))
D’après l’ACF et le PACF sur nos résidus il y a de l’autocorrélation dans les aléas \((𝜖_𝑡)\) donc les conclusions du test DF ne sont pas valables.
On réalise donc le test ADF.
Le test ADF correspond à un test DF avec des variables explicatives en plus qui représentent la variable retardée jusqu’à l’ordre P.
Pour l’instant on garde la spécification None (comme dans le test DF)
On estimera alors :
\[Δ𝑋_𝑡 = (𝜌 − 1)𝑋_𝑡−1 + 𝛽_0 + 𝛽_1𝑡𝑒𝑛𝑑𝑎𝑛𝑐𝑒_𝑡 + 𝜖𝑡 +\sum_{p=1}^{P} 𝛾𝑝Δ𝑋_{t-p}\] Avant de réaliser le test nous devons trouver la valeur de P qui correspond au nombre de retard que l’on doit ajouter à notre régression pour tenir compte de l’autocorrélation dans les aléas.
On commence par calculer la valeur maximale de P avec la formule de Schwert : \(12∗ \left( \frac{T}{100} \right)^{0.25}\) (où l’on prend uniquement la partie entière et où T correspond à la taille de notre échantillon.)
T = length(Y)
#taille=50
pmax<-as.integer(12*(T/100)^(0.25))
#pmax=10
On minimise maintenant le MAIC(p), qui est calculé pour les différentes valeurs de p (de 0 à pmax).
library(CADFtest)
summary(CADFtest(Y,criterion="MAIC",type="none",max.lag.y=pmax))
## Augmented DF test
## ADF test
## t-test statistic: -0.342703
## p-value: 0.555133
## Max lag of the diff. dependent variable: 2.000000
##
## Call:
## dynlm(formula = formula(model), start = obs.1, end = obs.T)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.86565 -0.29418 0.07373 0.33936 0.89112
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## L(y, 1) -0.001389 0.004053 -0.343 0.5551
## L(d(y), 1) 0.719266 0.152841 4.706 3.68e-05 ***
## L(d(y), 2) -0.352419 0.153219 -2.300 0.0273 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.5411 on 36 degrees of freedom
## Multiple R-squared: 0.3846, Adjusted R-squared: 0.3334
## F-statistic: 11.12 on 2 and 36 DF, p-value: 0.000174
On trouve “Max lag of the diff.dependent variable” = 2 on doit ajouter au maximum 2 variables explicatives pour prendre en compte l’autocorrélation.
Comme la valeur que l’on trouve est ≠ 0 on garde P=2 et on ne fait pas le BIC.
Dans un premier temps on va tester les coefficients 𝛾 pour savoir combien de variables explicatives que l’on doit rajouter à notre modèle. La règle de décision est : si la valeur absolue de la statistique t de \(𝛾\) est supérieure à 1.64, alors \(𝛾\) est significatif. On commence donc par tester \(𝛾_2\) :
summary(ur.df(Y,type="none",lag=2))
##
## ###############################################
## # 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
## -1.91617 -0.35172 0.06866 0.40465 1.12578
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 -0.0008118 0.0039853 -0.204 0.8395
## z.diff.lag1 0.6913182 0.1391323 4.969 1.07e-05 ***
## z.diff.lag2 -0.3634306 0.1391050 -2.613 0.0122 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.5915 on 44 degrees of freedom
## Multiple R-squared: 0.3603, Adjusted R-squared: 0.3167
## F-statistic: 8.262 on 3 and 44 DF, p-value: 0.0001804
##
##
## Value of test-statistic is: -0.2037
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.62 -1.95 -1.61
En valeur absolue, la statistique t de \(𝛾_2\) = -2.613 est supérieur à 1,64. \(𝛾_2\) est donc significatif.
et on teste :
La règle de décision est : si la statistique t calculé pour \((𝜌 − 1)\) est supérieur à la valeur critique donnée à l’intersection de la ligne tau1 et de la colonne 5%, on accepte H0.
Dans notre cas, la statistique t calculé vaut -0,2037 et est supérieur à -1.95. Donc on on accepte \(𝐻_0\) et on conclut que notre PGD est DS. Donc selon le test ADF il y a une présence de racine unitaire.
Nous allons réaliser le test de Zivot et Andrews et le test de Lee et Strazicich qui permettent de prendre en compte les changements structurels car nous savons que la dynamique d’un processus économique particulier peut être affectée par des changements structurels qui engendrent une instabilité dans le temps de cette dynamique . Nous allons donc introduire des variables pour modéliser ces changements.
Soit \(𝑇_𝐵\) la date du changement structurel,\(𝐷𝑈_𝑡\)(= \(𝛽_0\)) la variable à ajouter pour modéliser un changement dans le niveau de la partie déterministe de la série et \(𝐷𝑇_𝑡\) (= \(𝛽_1\)) la variable à ajouter pour modéliser un changement dans la pente de la partie déterministe de la série.
Il y a deux spécifications dans le test de Zivot et Andrews :
• la spécification crash (où le niveau de la série est touché) :
• la spécification both (où le niveau de la série et son taux de croissance sont touchés) :
avec \(𝜖_𝑡\ i.i.d (0, 𝜎2_𝜖)\)
La spécification “both” n’est pas appropriée et “trend” est exclue donc je fais “intercept”.
summary(ur.za(Y, model="intercept",lag=pmax-3))
##
## ################################
## # Zivot-Andrews Unit Root Test #
## ################################
##
##
## Call:
## lm(formula = testmat)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.23138 -0.15416 0.04002 0.19797 0.73466
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 10.62483 3.03665 3.499 0.001437 **
## y.l1 0.50086 0.13060 3.835 0.000577 ***
## trend -0.03281 0.01115 -2.943 0.006114 **
## y.dl1 0.76760 0.15680 4.895 2.9e-05 ***
## y.dl2 0.24125 0.18834 1.281 0.209717
## y.dl3 0.23152 0.18944 1.222 0.230862
## y.dl4 0.05954 0.17369 0.343 0.734065
## y.dl5 0.24145 0.16397 1.473 0.150943
## y.dl6 0.08707 0.16045 0.543 0.591254
## y.dl7 0.29979 0.14906 2.011 0.053077 .
## du 1.13284 0.58541 1.935 0.062143 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4863 on 31 degrees of freedom
## (8 observations effacées parce que manquantes)
## Multiple R-squared: 0.9122, Adjusted R-squared: 0.8839
## F-statistic: 32.22 on 10 and 31 DF, p-value: 1.287e-13
##
##
## Teststatistic: -3.8218
## Critical values: 0.01= -5.34 0.05= -4.8 0.1= -4.58
##
## Potential break point at position: 9
Je passe donc au modèle intercept avec lequel j’optient une
p-value de 0.062 pour \(𝛿_2(dt)\) ,légèrement supérieur à la valeur
critique 5% , je suppose que j’accepte le modèle intercept. (sachant
que le modèle trend est exclue)
La statistique t calculée = -3.82 est supérieur à -4.8 donc on accepte - 𝐻0.
\(𝛽_1\) est significatif car sa
p-value = 0.006114 < 0,05.
Nous concluons donc avec le test ZA que notre PGD est DS sans changement structurel, ce qui peut être expliqué par le fait que notre série est exposée à des crises brutales.
En effet, le test de ZA est approprié pour détecter des crises graduelles et non-abruptes.
plot(ur.za(Y,model="intercept",lag=pmax-3))
Pas de date de rupture d’après ZA
Le modèle est le suivant : \[𝑦_𝑡 = 𝛾′𝑍_𝑡 + 𝑒_𝑡\] avec \[𝑒_𝑡 = 𝛽𝑒_{𝑡−1} + 𝜖_𝑡, 𝜖 ∼ 𝒩(0, 𝜎2)\]
et Z la matrice des variables exogènes.
Il y a deux spécifications dans le test de Lee et Strazicich
:
• la spécification crash :
Comme nous avons moins de 50 observations il faut utiliser “bootstrap” dans le test de Lee et Strazicich.
Pour “crash”, nous testons :
\[H_0: y_t=\mu_0+d1B{1t}+d2B{2t}+y{t-1}+v{1t}\]
\[VS\] \[H_a: y_t=\mu_1+\gamma \times trend_t+d1D{1t}+d2D{2t}+v_{2t}\]
Règle de décision : si la valeur critique du 𝜆 estimé (au seuil de 5%) est supérieur à la statistique calculée, alors on rejette \(𝐻_0\).
source("C:/Users/Bekim/Desktop/R_USA/LeeStrazicichUnitRootTest.R", encoding = 'UTF-8')
source("C:/Users/Bekim/Desktop/R_USA/LeeStrazicichUnitRootTestParallelization.R", encoding = 'UTF-8')
library(parallel)
library(doSNOW)
myBreaks = 1
myModel = "crash"
myLags <- 5
cl <- makeCluster(max(1, detectCores() - 1))
registerDoSNOW(cl)
myParallel_LS <- ur.ls.bootstrap(y=Y , model = myModel, breaks = myBreaks, lags = myLags, method = "Fixed",pn = 0.1, critval = "bootstrap", print.results = "print")
## [[1]]
## [1] -2.848235
##
## [1] "First possible structural break at position: 41"
## [1] "The location of the first break - lambda_1: 0.8 , with the number of total observations: 50"
## Critical values - Crash model:
## 1% 5% 10%
## [1,] -4.239 -3.566 -3.211
## [1] "Number of lags used: 5"
## Runtime:
## Time difference of 0.003524748 mins
Le \(\lambda\) estimé est 0,8 ce qui donne \(T_B=41\) donc la date de rupture correspond à 2013.
On compare donc la statistique = -2.848235 à -3.566. Comme -2.848235 > -3.566, on accepte \(𝐻_0\)et il y a une présence de racine unitaire.
Donc la conclusion du test LS est que le PGD qui a généré notre série est DS avec une date de rupture
Test de ru pour la série différenciée à l’odre 1 dans l’annexe
On reprend les tests de racine unitaire pour définir le PGD de la série différenciée à l’ordre 2.
ydiff=diff(Y)
yd2=diff(ydiff)
plot(yd2, main="Chronogramme sur la série différenciée(2)",ylab="Diff(2) Invest USA",xlab="année")
fit2 = lm(yd2 ~ c(1974:2021))
abline(fit2, col="red")
- Tendance constante comme nous le montre la régression en
rouge
- Homoscédasticité (pas de forme
d’entonoir)
Les hypothèses, conditions d’acceptation et formules de test sont les mêmes que celles utilisées plus haut dans les tests sur la série du taux épargne.
summary(ur.df(yd2,type="none",lag=0))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression none
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.56989 -0.43907 -0.07189 0.38787 1.96649
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 -0.9721 0.1462 -6.649 3.07e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7169 on 46 degrees of freedom
## Multiple R-squared: 0.4901, Adjusted R-squared: 0.479
## F-statistic: 44.21 on 1 and 46 DF, p-value: 3.065e-08
##
##
## Value of test-statistic is: -6.6492
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.62 -1.95 -1.61
La statistique t calculée pour \((ρ−1)\) = -6.6492 < -1,95 , on rejette \(H_0\) et le processus qui a généré nos données est stationnaire.
Cependant, les résultats sont à nouveau valables uniquement si les aléas ϵt ne sont pas autocorrélés.
Testons cela avec l’ACF et le PACF des résidus des régressions DF.
plot(ur.df(yd2,type="none",lag=0))
Nous constatons, dans le \(PACF\),
qu’il y a de l’autocorrélation des aléas puisque \(a(4)\) est significatif. La conclusion de
notre test DF n’est donc pas valide. Nous allons alors faire le test
Dickey-Fuller Augmenté puisque celui-ci tient compte de
l’autocorrélation.
On garde généralement la même spécification que DF pour ADF.
Dans notre cas, la spécification à garder est none que voici :
Pour déterminer le nombre P de variables explicatives à ajouter, on va commencer par calculer pmax en reprenant la formule de Schwert, décrite plus haut dans le test de Zivot et Andrews. Puis nous allons minimiser le critère d’information de Ng et Perron (2001), le \(MAIC(p)\), calculé pour différentes valeurs de p allant de 0 à \(pmax\).
T_2= length(yd2)#48
pmax3 = as.integer(12*(T_2/100)^(0.25))
summary(CADFtest(yd2, criterion='MAIC', type='none', max.lag.y=pmax3))
## Augmented DF test
## ADF test
## t-test statistic: -5.757707e+00
## p-value: 2.969035e-07
## Max lag of the diff. dependent variable: 0.000000e+00
##
## Call:
## dynlm(formula = formula(model), start = obs.1, end = obs.T)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.31368 -0.39115 -0.09644 0.33756 2.01578
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## L(y, 1) -0.9352 0.1624 -5.758 2.97e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6457 on 37 degrees of freedom
## Multiple R-squared: 0.4726, Adjusted R-squared: 0.4583
## F-statistic: NA on NA and NA DF, p-value: NA
On trouve “Max lag of the diff.dependent variable” = 0 on fait donc le BIC.
BIc:
Ce test a pour hypothèses :
Le critère est que si la valeur de la statistique t de \(\gamma_1\) soit suppérieure au seuil de 1,64 en valeur absolue, alors on rejette \(H_0\)
summary(ur.df(yd2,type="none",lag=pmax3,selectlag="BIC"))
##
## ###############################################
## # 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
## -1.61161 -0.36228 -0.05454 0.34075 1.31396
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 -1.8926 0.3412 -5.546 3.35e-06 ***
## z.diff.lag1 0.8257 0.2673 3.089 0.00399 **
## z.diff.lag2 0.5816 0.2145 2.711 0.01044 *
## z.diff.lag3 0.3582 0.1413 2.535 0.01601 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.5915 on 34 degrees of freedom
## Multiple R-squared: 0.5933, Adjusted R-squared: 0.5454
## F-statistic: 12.4 on 4 and 34 DF, p-value: 2.528e-06
##
##
## Value of test-statistic is: -5.5463
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.62 -1.95 -1.61
Le critère de minimisation de BIC nous donne 0 variable à ajouter.
La statistique t calculée pour \(\gamma_3\) = 2.535 >
1,64 , on rejette \(H_0\) et
le critère de minimisation de \(BIC\)
nous donne alors 3 variables à ajouter.
On a donc :
summary(ur.df(yd2,type="none",lag=3))
##
## ###############################################
## # 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
## -1.63538 -0.38352 -0.01749 0.33877 1.37404
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 -2.0569 0.3041 -6.765 3.99e-08 ***
## z.diff.lag1 0.8764 0.2355 3.722 0.000607 ***
## z.diff.lag2 0.6877 0.1827 3.763 0.000539 ***
## z.diff.lag3 0.4058 0.1315 3.087 0.003667 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.5983 on 40 degrees of freedom
## Multiple R-squared: 0.6452, Adjusted R-squared: 0.6097
## F-statistic: 18.18 on 4 and 40 DF, p-value: 1.392e-08
##
##
## Value of test-statistic is: -6.7647
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.62 -1.95 -1.61
La statistique t de \(𝛾_3\) = 3.087 est supérieur à 1,64 . \(𝛾_3\) est donc significatif.
Dans ce cas, la statistique t calculé vaut -6.7647 et est inférieure à -1.95. Donc on on rejette \(𝐻_0\) et on conclut que le PGD de notre série différenciée à l’odre 2 est stationnaire.
On commence à nouveau par la spécification both
et on applique la procédure de Perron.
summary(ur.za(yd2, model="both",lag=pmax3))
##
## ################################
## # Zivot-Andrews Unit Root Test #
## ################################
##
##
## Call:
## lm(formula = testmat)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.22890 -0.23785 -0.01839 0.33049 0.98710
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.64626 0.52154 -1.239 0.22727
## y.l1 -4.58354 1.54813 -2.961 0.00681 **
## trend 0.03095 0.02339 1.323 0.19828
## y.dl1 4.22137 1.43056 2.951 0.00697 **
## y.dl2 3.76759 1.33504 2.822 0.00943 **
## y.dl3 3.29584 1.22286 2.695 0.01265 *
## y.dl4 2.59334 1.05848 2.450 0.02196 *
## y.dl5 1.97270 0.86033 2.293 0.03091 *
## y.dl6 1.39246 0.64190 2.169 0.04019 *
## y.dl7 1.00274 0.45810 2.189 0.03857 *
## y.dl8 0.70513 0.32241 2.187 0.03872 *
## y.dl9 0.28123 0.19327 1.455 0.15860
## du -1.08514 0.53218 -2.039 0.05260 .
## dt 0.05470 0.04280 1.278 0.21348
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.611 on 24 degrees of freedom
## (10 observations effacées parce que manquantes)
## Multiple R-squared: 0.4217, Adjusted R-squared: 0.1085
## F-statistic: 1.346 on 13 and 24 DF, p-value: 0.255
##
##
## Teststatistic: -3.6066
## Critical values: 0.01= -5.57 0.05= -5.08 0.1= -4.82
##
## Potential break point at position: 32
En valeur absolue, la statistique t de \(γ_9\) = 1.455 est inférieure à 1,64. \(γ_9\) n’est donc pas significatif. On diminue donc la valeur de lag.
summary(ur.za(yd2, model="both",lag=pmax3-8))
##
## ################################
## # Zivot-Andrews Unit Root Test #
## ################################
##
##
## Call:
## lm(formula = testmat)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.55294 -0.43657 -0.04653 0.35823 1.79182
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.0831 0.8352 2.494 0.0169 *
## y.l1 -0.2889 0.2010 -1.437 0.1585
## trend -0.3470 0.1327 -2.615 0.0125 *
## y.dl1 0.2498 0.1430 1.747 0.0882 .
## du 1.1460 0.5306 2.160 0.0368 *
## dt 0.3429 0.1330 2.577 0.0137 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6879 on 40 degrees of freedom
## (2 observations effacées parce que manquantes)
## Multiple R-squared: 0.1816, Adjusted R-squared: 0.07933
## F-statistic: 1.775 on 5 and 40 DF, p-value: 0.14
##
##
## Teststatistic: -6.411
## Critical values: 0.01= -5.57 0.05= -5.08 0.1= -4.82
##
## Potential break point at position: 9
Je refais la même opération plusieurs fois(8fois) pour arriver à la statistique t de \(γ_1\) = 1.747est supérieur à 1,64. \(γ_1\) est donc significatif.
Nous voyons que \(δ_1\)(du) et \(δ_2\)(dt) sont significatifs car la p-value de \(δ_1\)= 0.0368 < 0,05 et la p-value de \(δ_2\)= 0.0137 < 0,05.
Le modèle both est donc correcte.
\(𝛽_1\) est significatif car sa p-value = 0.0125 < 0,05.
De plus, la statistique t calculée = -6.411 est inférieure à -5,08 donc on rejette - \(𝐻_0\).
“Potential break point at position: 9”.
La date de rupture est donc : \(T_B\)=1982
Nous concluons donc avec le test ZA que notre PGD (sur série diff x2) est TS avec changement structurel (mais possiblement DS avec changement structurel). La date de rupture proposé par le test ZA est \(T_B\) = 1982 ce qui correspond à une récession brutale aux Etats-Unis.
plot(ur.za(yd2,model="both",lag=1))
Nous allons passer au test de Lee et Strazicich qui est plus performant et qui sera celui dont on tirera la conclusion sur le PGD de notre série différenciée à l’odre 2.
Le modèle final que l’on va conserver est le modèle break avec 1 rupture (car on avait δ1 et δ2 significatifs dans notre test de ZA).
source("C:/Users/Bekim/Desktop/R_USA/LeeStrazicichUnitRootTest.R", encoding = 'UTF-8')
source("C:/Users/Bekim/Desktop/R_USA/LeeStrazicichUnitRootTestParallelization.R", encoding = 'UTF-8')
library(parallel)
library(doSNOW)
myBreaks = 1
myModel = "break"
myLags <- 4
cl <- makeCluster(max(1, detectCores() - 1))
registerDoSNOW(cl)
myParallel_LS <- ur.ls.bootstrap(y=yd2 , model = myModel, breaks = myBreaks, lags = myLags, method = "Fixed",pn = 0.1, critval = "bootstrap", print.results = "print")
## [[1]]
## [1] -5.562816
##
## [1] "First possible structural break at position: 8"
## [1] "The location of the first break - lambda_1: 0.2 , with the number of total observations: 48"
## Critical values - Break model:
## lambda 1% 5% 10%
## [1,] 0.1 -5.11 -4.50 -4.21
## [2,] 0.2 -5.07 -4.47 -4.20
## [3,] 0.3 -5.15 -4.45 -4.18
## [4,] 0.4 -5.05 -4.50 -4.18
## [5,] 0.5 -5.11 -4.51 -4.17
## [1] "Number of lags used: 4"
## Runtime:
## Time difference of 0.003486701 mins
La valeur de la statistique de test est
-5.562816.
Le \(\lambda\) estimé est 0,2 ce qui
donne \(T_B=8\) donc la date de rupture
correspond à 1981
La valeur critique au seuil de risque de 5% vaut
-4.47.
On a -5.562816 < -4.47.
On
rejette donc \(H_0\), il y n’a pas de
racine unitaire.
La conclusion est que le PGD qui a généré la série
différenciée à l’ordre 2 est stationnaire.
Nous cherchons à savoir si la série différenciée à l’ordre 2 a de l’autocorrélation.
Fonction d’autocorrélation (ACF) et d’autocorrélation partielle (PACF) sur la série différenciée
• ACF
library(forecast)
Acf(yd2, main="ACF sur la série différenciée à l'ordre 2")
• PACF
library(forecast)
Pacf(yd2, main="ACF sur la série différenciée à l'ordre 2")
D’après l’ACF \(ρ(4)\) est significatif et d’après le PACF il n’y a que \(a(4)\) qui est significatif donc il semble y avoir de l’autocorrélation jusqu’à l’ordre 4.
• Test de Ljung-Box sur la série différenciée à l’ordre 2
Statistique de Ljung-Box :
\[QK = T
\times (T+2) \sum{k=1}^{K} \frac{\hat \rho (k)^2}{T-K}\]
On teste les hypothèses suivantes (à l’ordre k) :
• \(𝐻_0\)∶ \(𝜌_1\) = $𝜌_$2 = \(𝜌_3\) = … =\(𝜌_𝑘\) = 0 : il n’y a pas autocorrélation (jusqu’à l’ordre k).
• \(𝐻_𝑎\): au moins un \(𝜌_𝑖\) ≠ 0 : il y a de l’autocorrélation
La règle de décision est : si la p-value est inférieure à 0.05 on rejette \(𝐻_0\).
Box.test(yd2, lag=1,type="Ljung-Box")
##
## Box-Ljung test
##
## data: yd2
## X-squared = 0.039995, df = 1, p-value = 0.8415
D’après le test de Ljung Box il y a de l’autocorrélation. On a rejette \(𝐻_0\) à l’ordre 1.
• EACF
L’EACF permet de déterminer les valeurs de départ de p et de q pour le modèle ARMA(p,q).
library(TSA)
eacf(yd2)
## AR/MA
## 0 1 2 3 4 5 6 7 8 9 10 11 12 13
## 0 o o o x o o o o o o o o o o
## 1 o o o x o o o o o o o o o o
## 2 x o o x o o o o o o o o o o
## 3 x o o o o o o o o o o o o o
## 4 o x o o o o o o o o o o o o
## 5 x x o o x o o o o o o o o o
## 6 o o o o o o o o o o o o o o
## 7 x o x o o o o o o o o o o o
L’EACF nous donne (3,1) comme valeurs de départ de p et q.
Nous estimons :
• ARMA(3,1)
library(forecast)
library(lmtest)
reg<-Arima(Y,order=c(3,2,1), include.constant=TRUE)
coeftest(reg)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.610652 0.140297 4.3526 1.346e-05 ***
## ar2 -0.197974 0.161266 -1.2276 0.2196
## ar3 -0.219477 0.141437 -1.5518 0.1207
## ma1 -1.000000 0.068979 -14.4972 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
On regarde si les coefficients sont significatifs.
On a le coefficient \(ar(3)\) non significatif donc je l’enlève.
• ARMA(2,1)
reg2<-Arima(Y,order=c(2,2,1), include.constant=TRUE)
coeftest(reg2)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.691610 0.135153 5.1173 3.1e-07 ***
## ar2 -0.345629 0.133945 -2.5804 0.009869 **
## ma1 -0.999999 0.059531 -16.7979 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
En retirant ar(3) tous nos coefficients sont significatifs.
Avec
un BIC de :
BIC(reg2)
## [1] 102.0285
Nous allons essayer de trouver un meilleur modèle en regardant l’eacf.
• ARMA(0,2)
reg3<-Arima(Y,order=c(0,2,2), include.constant=TRUE)
coeftest(reg3)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ma1 -0.41882 0.12494 -3.3520 0.0008022 ***
## ma2 -0.58118 0.11581 -5.0182 5.216e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
BIC(reg3)
## [1] 101.928
Avec le modèle ARMA(0,2) on a un BIC très légèrement inférieur , cependant je privilégie le ARMA(2,1).
L’étude des aléas permet de vérifier que les aléas du modèle ARMA que nous avons retenus sont des bruits blancs gaussiens.
Un Bruit Blanc (BB) est une séquence de variables aléatoires iid de moyenne nulle, de variance constante et non autocorrélées.
Nous réaliserons quatre tests :
• le test de Jarque-Bera
• le test de
Student
• le test de Ljung-Box
• le test
d’Engle
Le test de Jarque-Bera nous permet de savoir les aléas
sont gaussiens et les autres si ils sont des bruits blancs.
Si les
tests ne sont pas concluant on passera au modèle suivant (i.e. celui qui
minimise le BIC parmi les modèles restants).
— la statistique de test s’écrit:
\[JB= \frac{T-k}{6} (S^{2}+\frac{(K-3)}{4}\]
On cherche à savoir si les aléas sont normalement distribués.
On
teste :
• \(𝐻_0\)∶ les \(𝜖\) suivent une Loi Normale
• \(𝐻_𝑎\)∶ les \(𝜖\) ne suivent pas une Loi Normale
La règle de décision est : si la p-value est inférieure à 0.05 on
rejette \(𝐻_0\).
On effectue le
test de Jarque-Bera sur les résidus du modèle ARMA() :
library(tseries)
jarque.bera.test(reg2$res)
##
## Jarque Bera Test
##
## data: reg2$res
## X-squared = 5.6937, df = 2, p-value = 0.05803
La p-value = 0.05803 est supérieur à 0,05 donc on accepte \(H_0\). On conclut dont que les aléas sont normalement distribuées i.e. ils sont gaussiens.
La formule de la statistique t est:
\[\frac{|m(e)|}{σ_e}*\sqrt{T} \]
On cherche à savoir si l’espérance des aléas est nulle.
On teste
:
• \(𝐻_0\)∶ \(𝐸(𝜖)\) = 0
• \(H_𝑎\)∶ \(𝐸(𝜖)\) ≠ 0
La règle de décision est : si la p-value est inférieure à 0.05 on rejette \(𝐻_0\).
t.test(reg2$res)
##
## One Sample t-test
##
## data: reg2$res
## t = -0.50274, df = 49, p-value = 0.6174
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## -0.2013642 0.1207740
## sample estimates:
## mean of x
## -0.04029509
La p-value = 0.6174 est supérieur à 0,05 donc on accepte \(H_0\). On conclut dont que l’espérance des aléas est nulle.
On cherche à savoir si il y a de l’autocorrélation dans les
aléas.
On commence par calculés les résidus centrés-réduits
:
Sres = (reg2$res-mean(reg2$res))/sd(reg2$res)
On teste les hypothèses suivantes (à l’ordre k) :
• \(𝐻_0\)∶ 𝜌1 = 𝜌2 = 𝜌3 = … = 𝜌𝑘 = 0 : il n’y a
pas d’autocorrélation (jusqu’à l’ordre k).
• \(𝐻_𝑎\): au moins un \(𝜌\)𝑖 ≠ 0 : il y a de l’autocorrélation
La règle de décision est : si la p-value est inférieure à 0.05 on
rejette \(𝐻_0\) .
Box.test(Sres, lag=12, type="Ljung-Box")
##
## Box-Ljung test
##
## data: Sres
## X-squared = 8.6371, df = 12, p-value = 0.7336
La \(p-value\) est de 0.7336 ce qui est supérieur à 0,05 donc nous ne rejetons pas \(H_0\). Il n’y a pas d’autocorrélation dans les aléas jusqu’a l’ordre 12.
On cherche à savoir si il existe des clusters de volatilité dans les
données.
Le test ARCH(p) consiste à estimer par MCO l’équation suivante :
\[e^{2}_t=a+c_1e^{2}_{t−1}+c_2e^{2}_{t−2}+⋯+c_pe^{2}_{t−p}+erreur_t\]
\(e\) les résidus de la régression et \(a\) une constante.
Statistique de test:
\[LM=T×R^{2}\] On teste :
•
\(𝐻_0\)∶ \(a_1\) = \(a_2=\) = \(a_3\) = … = \(𝛼_𝑝\) = 0 : il n’y a pas d’effets ARCH et
pas de clusters de volatilité
• \(𝐻_𝑎\): au moins un \(𝛼_𝑖\) ≠ 0 : il y a des effets ARCH et des clusters de volatilité
Si \(H_0\) est vrai :
-σ2t=α0
-non existence de cluster de
volatilité
-pas d’effet ARCH
-homoscédasticité
conditionnelle
Si \(H_a\) est vrai :
-σ2t=α0+α1e2t−1
-existence de cluster de
volatilité
-présence d’effet ARCH
-hétéroscédasticité conditionnelle
-Sous \(H_0\), \(LM∼χ2(p)\)
La règle de décision est : si la p-value est inférieure à 0.05 on rejette \(𝐻_0\).
On effectue le test sur les résidus standardisés.
library(FinTS)
ArchTest(Sres, lag=12)
##
## ARCH LM-test; Null hypothesis: no ARCH effects
##
## data: Sres
## Chi-squared = 4.7552, df = 12, p-value = 0.9657
La p−valueest de 0.9657 ce qui est supérieur à 0,05 donc on accepte \(H_0\) . Il n’y a donc pas d’effet ARCH ni de cluster de volatilité.
On peut alors en conclure que les aléas sont des bruits blancs.
Le modèle ARMA(2,1) est celui qui minimise le critère d’information BIC (il vaut 102.0285) c’est donc celui que l’on va utiliser pour la prévision.
BIC(reg2)
## [1] 102.0285
Prévision :
prev = forecast(reg2, h=4, level=0.95)
prev
## Point Forecast Lo 95 Hi 95
## 2022 20.97294 19.79903 22.14686
## 2023 20.86341 18.53645 23.19037
## 2024 20.85444 17.64948 24.05941
## 2025 20.87919 17.06277 24.69560
De 2022 à 2024 les valeurs de la prévision passent de 20.97%à 20.85% et de 2024 à 2025 la prévision augmente légérement à 20.87%.
plot(prev, lwd=1, main="Prévision sur quatre ans du taux d'investissement américain", ylab="Taux d'investissement USA", xlab="Années")
Puisque les aléas sont normalement distribués, on peut également définir un intervalle de confiance à 95% pour les prévisions. On a donc, à 5% de chances de se tromper, un taux d’épargne compris :
entre 19.79% et 22.14% en 2022.
entre 18.53% et 23.19% en 2023.
entre 17.64% et 24.05% en 2024.
entre 17.06% et 24.69% en 2025.
L’intervalle de confiance s’élargit avec le temps pour prendre en
compte l’ incertitude accrue.
On remarque avec le temps, que il y a d’incertitude dans la prédiction, car il peut y avoir des facteurs imprévus qui influencent la série.
•Test sur la série originel
On avait commencé par la spécification trend :
On estime :
Et on teste :
La règle de décision est : si la p-value de \(𝛽_1\) < \(𝛼\) on rejette\(H_0\)
summary(ur.df(Y,type="trend",lag=0))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression trend
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.3656 -0.3670 0.1051 0.4255 1.2598
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.913309 1.886278 2.075 0.0436 *
## z.lag.1 -0.170842 0.081815 -2.088 0.0423 *
## tt -0.009327 0.008214 -1.136 0.2620
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6955 on 46 degrees of freedom
## Multiple R-squared: 0.08665, Adjusted R-squared: 0.04694
## F-statistic: 2.182 on 2 and 46 DF, p-value: 0.1243
##
##
## Value of test-statistic is: -2.0881 1.4613 2.1821
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau3 -4.15 -3.50 -3.18
## phi2 7.02 5.13 4.31
## phi3 9.31 6.73 5.61
La p-value de \(𝛽_1\) = 0.2620 est supérieur à \(𝛼\) = 0,05 donc on accepte \(H_0\) et \(𝛽_1\) n’est pas significatif.
La spécification trend n’est pas la bonne je continue avec Drift.
On estime :
Et on teste :
summary(ur.df(Y,type="drift",lag=0))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression drift
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.45892 -0.39576 0.06371 0.37661 1.39704
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.63937 1.52105 1.735 0.0893 .
## z.lag.1 -0.12271 0.07019 -1.748 0.0870 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6977 on 47 degrees of freedom
## Multiple R-squared: 0.06105, Adjusted R-squared: 0.04107
## F-statistic: 3.056 on 1 and 47 DF, p-value: 0.08697
##
##
## Value of test-statistic is: -1.7481 1.5378
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau2 -3.58 -2.93 -2.60
## phi1 7.06 4.86 3.94
La p-value de \(𝛽_0\) = 0.0893 est supérieur à \(𝛼\) = 0,05 donc on accepte \(H_0\) et \(𝛽_0\) n’est pas significatif.
Versus
Règle de décision : si la statistique t calculé qui dépend de la date de rupture est supérieure à la valeur critique à 5%, on est enclin à accepter \(𝐻_0\).
On prend une valeur de pmax pour le lag puis on diminue le nombre de γ de tel sorte que le dernier ait une statistique t en valeur absolue > 1.64 .
summary(ur.za(Y, model="both",lag=pmax))
##
## ################################
## # Zivot-Andrews Unit Root Test #
## ################################
##
##
## Call:
## lm(formula = testmat)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.15024 -0.17848 0.06542 0.19871 0.51427
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 25.89381 5.01529 5.163 2.75e-05 ***
## y.l1 -0.06586 0.20592 -0.320 0.751858
## trend -0.10757 0.02828 -3.804 0.000864 ***
## y.dl1 1.23695 0.18326 6.750 5.56e-07 ***
## y.dl2 0.64514 0.22261 2.898 0.007896 **
## y.dl3 0.65935 0.21114 3.123 0.004626 **
## y.dl4 0.44917 0.19601 2.292 0.031010 *
## y.dl5 0.49467 0.17415 2.841 0.009035 **
## y.dl6 0.43539 0.17221 2.528 0.018454 *
## y.dl7 0.38785 0.15832 2.450 0.021966 *
## y.dl8 0.24413 0.15893 1.536 0.137588
## y.dl9 0.06901 0.14760 0.468 0.644334
## y.dl10 0.21968 0.14834 1.481 0.151648
## du 1.13772 0.41631 2.733 0.011597 *
## dt -0.01442 0.02459 -0.586 0.563134
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4218 on 24 degrees of freedom
## (11 observations effacées parce que manquantes)
## Multiple R-squared: 0.9425, Adjusted R-squared: 0.9089
## F-statistic: 28.08 on 14 and 24 DF, p-value: 1.765e-11
##
##
## Teststatistic: -5.176
## Critical values: 0.01= -5.57 0.05= -5.08 0.1= -4.82
##
## Potential break point at position: 31
En valeur absolue, la statistique t de \(𝛾_{10}\) = 1,481 est inférieure à 1,64. \(𝛾_{10}\) n’est donc pas significatif. On diminue donc la valeur de lag.
summary(ur.za(Y, model="both",lag=pmax-3))
##
## ################################
## # Zivot-Andrews Unit Root Test #
## ################################
##
##
## Call:
## lm(formula = testmat)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.23138 -0.15416 0.04002 0.19797 0.73466
##
## Coefficients: (1 not defined because of singularities)
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 10.62483 3.03665 3.499 0.001437 **
## y.l1 0.50086 0.13060 3.835 0.000577 ***
## trend -0.03281 0.01115 -2.943 0.006114 **
## y.dl1 0.76760 0.15680 4.895 2.9e-05 ***
## y.dl2 0.24125 0.18834 1.281 0.209717
## y.dl3 0.23152 0.18944 1.222 0.230862
## y.dl4 0.05954 0.17369 0.343 0.734065
## y.dl5 0.24145 0.16397 1.473 0.150943
## y.dl6 0.08707 0.16045 0.543 0.591254
## y.dl7 0.29979 0.14906 2.011 0.053077 .
## du 1.13284 0.58541 1.935 0.062143 .
## dt NA NA NA NA
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4863 on 31 degrees of freedom
## (8 observations effacées parce que manquantes)
## Multiple R-squared: 0.9122, Adjusted R-squared: 0.8839
## F-statistic: 32.22 on 10 and 31 DF, p-value: 1.287e-13
##
##
## Teststatistic: -3.8218
## Critical values: 0.01= -5.57 0.05= -5.08 0.1= -4.82
##
## Potential break point at position: 9
Je refais la même opération plusieurs fois(3fois) pour arriver à la statistique t de \(𝛾_7\) = 2.011 est supérieur à 1,64. \(𝛾_7\)est donc significatif.
Dans notre sortie, la valeur de “dt” est “NA”, ce qui signifie que le test n’a pas détecté de rupture structurelle dans la série temporelle. Cela peut être interprété comme une indication que la série est stationnaire ou qu’elle possède une racine unitaire sans rupture structurelle.
Nous voyons que \(𝛿_1(du)\) et \(𝛿_2(dt)\) ne sont pas significatif car la
p-value de 𝛿1 = 0,062 > 0,05 et la
p-value de \(𝛿_2\)=NA.
Le modèle
both n’est donc pas approprié.
On commence par un lag égal à 5 et la méthode break.
• \(𝐻_0 ∶ 𝑦_𝑡 = 𝜇_0 + 𝑑_1𝐵_{1𝑡} + 𝑑_2𝐵_{2𝑡}
+ 𝑑_3𝐷_{1𝑡} + 𝑑_4𝐷_{2𝑡} + 𝑦_{𝑡−1} + 𝑣_{1𝑡}\)
• \(𝐻_𝑎 ∶ 𝑦_𝑡 = 𝜇_1 + 𝛾 × 𝑡𝑟𝑒𝑛𝑑_𝑡 +𝑑_1D_{1𝑡} + 𝑑_2D_{2𝑡} + 𝑑_3𝐷T_{1𝑡} + 𝑑_4𝐷T_{2𝑡} + 𝑣_{2t}\)
On teste alors :
• \(𝐻_0\): présence de racine
unitaire dans le PGD
• \(H_𝑎\): pas de présence de racine unitaire dans le PGD
Règle de décision : si la valeur critique du 𝜆 estimé (au seuil de 5%) est supérieur à la statistique calculée, alors on rejette \(𝐻_0\).
Les tests de racine unitaire nous on mené à la conclusion d’un PGD DS. Nous allons donc différencier notre série une première fois.
•Différenciation
ydiff=diff(Y)
plot(ydiff, main="Chronogramme sur la série différenciée",ylab="Diff Invest USA",xlab="année")
fit1 = lm(ydiff ~ c(1973:2021))
abline(fit1, col="green")
- Tendance constante comme nous le montre la régression en
vert
- Homoscédasticité
Les hypothèses, conditions d’acceptation et formules de test sont les même que celles utilisées plus haut dans les tests sur la série du taux épargne.
summary(ur.df(ydiff,type="trend",lag=0))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression trend
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.87313 -0.34202 0.09263 0.43851 1.14056
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.0298777 0.1862583 -0.160 0.873276
## z.lag.1 -0.5006169 0.1287174 -3.889 0.000329 ***
## tt 0.0005769 0.0066176 0.087 0.930918
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6352 on 45 degrees of freedom
## Multiple R-squared: 0.2517, Adjusted R-squared: 0.2184
## F-statistic: 7.568 on 2 and 45 DF, p-value: 0.001468
##
##
## Value of test-statistic is: -3.8893 5.0494 7.5682
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau3 -4.15 -3.50 -3.18
## phi2 7.02 5.13 4.31
## phi3 9.31 6.73 5.61
La p-value de \(𝛽_1\) = 0.93 est supérieur à \(𝛼\) = 0,05 donc on accepte \(H_0\) et \(𝛽_1\) n’est pas significatif.
summary(ur.df(ydiff,type="drift",lag=0))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression drift
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.86653 -0.34891 0.08805 0.43750 1.13277
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.01574 0.09069 -0.174 0.862947
## z.lag.1 -0.50065 0.12732 -3.932 0.000282 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6283 on 46 degrees of freedom
## Multiple R-squared: 0.2516, Adjusted R-squared: 0.2353
## F-statistic: 15.46 on 1 and 46 DF, p-value: 0.0002815
##
##
## Value of test-statistic is: -3.9322 7.7372
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau2 -3.58 -2.93 -2.60
## phi1 7.06 4.86 3.94
La p-value de \(𝛽_0\) = 0.862947 est supérieur à 𝛼 = 0,05 donc on accepte \(H_0\) et \(𝛽_0\) n’est pas significatif.
On commence à nouveau par la spécification trend. Après l’avoir testée et rejetée, on teste la spécification drift qui elle aussi est rejetée (cf. annexe). On passe alors à la spécification none.
On estime :
Et on teste :
Si la statistique t calculée pour \((\rho-1)\) est inférieure à la valeur critique donnée à l’intersection de la ligne tau1 et de la colonne 5%, alors on rejette \(H_0\).
Dans notre cas :
summary(ur.df(ydiff,type="none",lag=0))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression none
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.88189 -0.36493 0.07198 0.42182 1.11706
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 -0.5003 0.1260 -3.971 0.000244 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6217 on 47 degrees of freedom
## Multiple R-squared: 0.2512, Adjusted R-squared: 0.2353
## F-statistic: 15.77 on 1 and 47 DF, p-value: 0.000244
##
##
## Value of test-statistic is: -3.9711
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.62 -1.95 -1.61
La statistique t calculée pour \((\rho-1)\) = -3.971 < -1,95 , on rejette \(H_0\) et le processus qui a généré nos données est stationnaire.
Cependant, les résultats sont à nouveau valables uniquement si les aléas \(\epsilon_t\) ne sont pas autocorrélés.
Testons cela avec l’ACF et le PACF des résidus des régressions DF.
plot(ur.df(ydiff,type="none",lag=0))
Nous constatons, dans le PACF, qu’il y a de l’autocorrélation des aléas
puisque \(a(4)\) et\(a(13)\) sont significatif. La conclusion de
notre test DF n’est donc pas valide. Nous allons alors faire le test
Dickey-Fuller Augmenté puisque celui-ci tient compte de
l’autocorrélation.
Le test de Dickey-Fuller Augmenté (ADF) est un test de Dickey-Fuller
(DF) avec des variables explicatives en plus qui sont la variable
dépendante retardée jusqu’à l’ordre P.
P étant le nombre de retards
que nous ajoutons dans les régressions pour tenir compte de
l’autocorrélation des aléas.
On garde généralement la même
spécification que DF pour ADF.
Dans notre cas, la spécification à garder est none que voici :
Pour déterminer le nombre P de variables explicatives à ajouter, on va commencer par calculer \(pmax\) en reprenant la formule de Schwert, décrite plus haut dans le test de Zivot et Andrews. Puis nous allons minimiser le critère d’information de Ng et Perron (2001), le \(MAIC(p)\), calculé pour différentes valeurs de p allant de 0 à \(pmax\).
T_dep= length(ydiff)
pmax2 = as.integer(12*(T_dep/100)^(0.25))
summary(CADFtest(ydiff, criterion='MAIC', type='none', max.lag.y=pmax2))
## Augmented DF test
## ADF test
## t-test statistic: -3.288869517
## p-value: 0.001647139
## Max lag of the diff. dependent variable: 0.000000000
##
## Call:
## dynlm(formula = formula(model), start = obs.1, end = obs.T)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.83001 -0.33223 0.04011 0.40366 1.12206
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## L(y, 1) -0.4526 0.1376 -3.289 0.00165 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.5692 on 37 degrees of freedom
## Multiple R-squared: 0.2262, Adjusted R-squared: 0.2053
## F-statistic: NA on NA and NA DF, p-value: NA
On trouve “Max lag of the diff.dependent variable” = 0 on fait donc le \(BIC\).
• Méthode 1:
summary(CADFtest(ydiff,criterion="BIC",type="none",max.lag.y=pmax2))
## Augmented DF test
## ADF test
## t-test statistic: -4.183801
## p-value: 0.000100
## Max lag of the diff. dependent variable: 1.000000
##
## Call:
## dynlm(formula = formula(model), start = obs.1, end = obs.T)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.87015 -0.34936 0.02842 0.30840 0.92455
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## L(y, 1) -0.6127 0.1465 -4.184 0.0001 ***
## L(d(y), 1) 0.3599 0.1524 2.362 0.0237 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.537 on 36 degrees of freedom
## Multiple R-squared: 0.33, Adjusted R-squared: 0.2928
## F-statistic: NA on NA and NA DF, p-value: NA
• Méthode 2:
summary(ur.df(ydiff,type="none",lag=pmax,selectlag="BIC"))
##
## ###############################################
## # 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
## -1.87015 -0.34936 0.02842 0.30840 0.92455
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 -0.6127 0.1465 -4.184 0.000176 ***
## z.diff.lag 0.3599 0.1524 2.362 0.023707 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.537 on 36 degrees of freedom
## Multiple R-squared: 0.33, Adjusted R-squared: 0.2928
## F-statistic: 8.867 on 2 and 36 DF, p-value: 0.0007395
##
##
## Value of test-statistic is: -4.1838
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.62 -1.95 -1.61
Dans la méthode 1 on trouve le lag dans “Max lag of the diff. dependent variable” et dans la méthode 2 on voit la statistique t calculée pour \(\gamma_1\) = 2.362 > 1,64 , on rejette \(H_0\) et le critère de minimisation de BIC nous donne alors 1 variable à ajouter.
Comme la valeur que l’on trouve est ≠ 0 on prend P=1.(et dernière valeur significatif )
summary(ur.df(ydiff,type="none",lag=1))
Dans notre cas, la statistique t calculé vaut -4.9031 et est inférieure à -1.95. Donc on on rejette 𝐻0 et on conclut que le PGD de notre série différenciée est stationnaire.
On va maintenant passer aux tests prenant en compte des changements structurels, en commençant par Zivot et Andrews.
On commence à nouveau par la spécification both et on applique la procédure de Perron.
summary(ur.za(ydiff, model="both",lag=pmax2))
##
## ################################
## # Zivot-Andrews Unit Root Test #
## ################################
##
##
## Call:
## lm(formula = testmat)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.24707 -0.28615 0.02902 0.24724 0.82136
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.351351 0.454427 -0.773 0.447
## y.l1 -0.575062 0.591847 -0.972 0.341
## trend 0.012958 0.018459 0.702 0.490
## y.dl1 1.073460 0.533392 2.013 0.056 .
## y.dl2 0.781625 0.476593 1.640 0.115
## y.dl3 0.660763 0.459597 1.438 0.164
## y.dl4 0.382851 0.422280 0.907 0.374
## y.dl5 0.382812 0.371714 1.030 0.314
## y.dl6 0.278136 0.333184 0.835 0.412
## y.dl7 0.252551 0.280516 0.900 0.377
## y.dl8 0.188034 0.231244 0.813 0.424
## y.dl9 -0.003125 0.203874 -0.015 0.988
## y.dl10 0.047242 0.185050 0.255 0.801
## du -0.848585 0.528820 -1.605 0.122
## dt 0.064864 0.050562 1.283 0.212
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.5857 on 23 degrees of freedom
## (11 observations effacées parce que manquantes)
## Multiple R-squared: 0.5379, Adjusted R-squared: 0.2567
## F-statistic: 1.913 on 14 and 23 DF, p-value: 0.08114
##
##
## Teststatistic: -2.6613
## Critical values: 0.01= -5.57 0.05= -5.08 0.1= -4.82
##
## Potential break point at position: 35
En valeur absolue, la statistique t de \(γ_10\) = 0.255 est inférieure à 1,64.\(γ_10\) n’est donc pas significatif. On diminue donc la valeur de lag.
summary(ur.za(ydiff, model="both",lag=pmax2-8))
##
## ################################
## # Zivot-Andrews Unit Root Test #
## ################################
##
##
## Call:
## lm(formula = testmat)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.97555 -0.20640 0.06932 0.26356 1.00278
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.08020 0.36879 2.929 0.00565 **
## y.l1 0.05496 0.15991 0.344 0.73294
## trend -0.09469 0.02990 -3.166 0.00299 **
## y.dl1 0.42835 0.13376 3.202 0.00271 **
## y.dl2 0.28984 0.13680 2.119 0.04053 *
## du 0.78688 0.32721 2.405 0.02103 *
## dt 0.09129 0.03216 2.838 0.00716 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.5337 on 39 degrees of freedom
## (3 observations effacées parce que manquantes)
## Multiple R-squared: 0.512, Adjusted R-squared: 0.4369
## F-statistic: 6.819 on 6 and 39 DF, p-value: 5.325e-05
##
##
## Teststatistic: -5.9098
## Critical values: 0.01= -5.57 0.05= -5.08 0.1= -4.82
##
## Potential break point at position: 19
Je refais la même opération plusieurs fois(8fois) pour arriver à la statistique t de \(γ_2\) = 2.119 est supérieur à 1,64. \(γ_2\) est donc significatif.
La \(p-value\) de \(\delta_1\) et \(\delta_2\) sont significatif car leur p-value(0.02103 et 0.00716) sont < 0.05 .
De plus, On a pour \(\beta_1\), une p-value 0.00299 < 0,05 : \(\beta_1\) est significatif.
La statistique de test est -5.9098 <
-5.08 la valeur critique à 5% . On rejette donc \(H_0\) :\(|\rho|
< 1\).
En ce qui concerne la date de rupture, on a
“Potential break point at position: 19”. La date de rupture est
donc : \(T_B=1991\)
Nous concluons donc avec le test ZA que notre PGD (sur série diff) est TS avec changement structurel (mais possiblement DS avec changement structurel). La date de rupture proposée par le test ZA est \(𝑇_𝐵\) = 1991 ce qui correspondrait à l’invasion du Koweit.
plot(ur.za(ydiff,model="both",lag=pmax2-8))
Nous allons passer au test de Lee et Strazicich qui est plus performant et qui sera celui dont on tirera la conclusion sur le PGD de notre série diférencié à l’odre 1.
Le modèle final que l’on va conserver est le modèle break avec 1
rupture (car on avait δ1 et δ2 significatifs dans ZA).
Je n’ai pas
réalisé le test LS à deux dates de ruptures car cela affecte la
puissance de calcul.
source("C:/Users/Bekim/Desktop/R_USA/LeeStrazicichUnitRootTest.R", encoding = 'UTF-8')
source("C:/Users/Bekim/Desktop/R_USA/LeeStrazicichUnitRootTestParallelization.R", encoding = 'UTF-8')
library(parallel)
library(doSNOW)
myBreaks = 1
myModel = "break"
myLags <- 4
cl <- makeCluster(max(1, detectCores() - 1))
registerDoSNOW(cl)
myParallel_LS <- ur.ls.bootstrap(y=ydiff , model = myModel, breaks = myBreaks, lags = myLags, method = "Fixed",pn = 0.1, critval = "bootstrap", print.results = "print")
## [[1]]
## [1] -3.556002
##
## [1] "First possible structural break at position: 40"
## [1] "The location of the first break - lambda_1: 0.8 , with the number of total observations: 49"
## Critical values - Break model:
## lambda 1% 5% 10%
## [1,] 0.1 -5.11 -4.50 -4.21
## [2,] 0.2 -5.07 -4.47 -4.20
## [3,] 0.3 -5.15 -4.45 -4.18
## [4,] 0.4 -5.05 -4.50 -4.18
## [5,] 0.5 -5.11 -4.51 -4.17
## [1] "Number of lags used: 4"
## Runtime:
## Time difference of 0.003393765 mins
Le \(𝜆\) estimé est 0.8. On compare donc la statistique =-3.556002 à -4,51. Comme -3.556002 > -4,51, on accepte \(𝐻_0\) et il y a une présence de racine unitaire. Donc la conclusion du test LS est que le PGD qui a généré notre série est DS avec une date de rupture dans la constante et dans la tendance en 2012.
Pour conclure cette partie sur les tests de racine unitaire, nous retenons le fait que le PGD qui a généré la série différenciée à l’ordre 1 est DS avec une date de rupture.
• Trend
summary(ur.df(yd2,type="trend",lag=0))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression trend
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.6024 -0.4432 -0.1089 0.3976 1.9794
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.042035 0.217321 0.193 0.848
## z.lag.1 -0.971023 0.149518 -6.494 6.32e-08 ***
## tt -0.001487 0.007884 -0.189 0.851
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7327 on 44 degrees of freedom
## Multiple R-squared: 0.4905, Adjusted R-squared: 0.4674
## F-statistic: 21.18 on 2 and 44 DF, p-value: 3.604e-07
##
##
## Value of test-statistic is: -6.4943 14.1221 21.1813
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau3 -4.15 -3.50 -3.18
## phi2 7.02 5.13 4.31
## phi3 9.31 6.73 5.61
La p-value de 𝛽1 = 0.851 est supérieur à 𝛼 = 0,05 donc on accepte \(H_0\) et \(𝛽_1\) n’est pas significatif.(on passe à drift)
• Drift
summary(ur.df(yd2,type="drift",lag=0))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression drift
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.57624 -0.44543 -0.07825 0.38151 1.96014
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.006357 0.105722 0.060 0.952
## z.lag.1 -0.972076 0.147804 -6.577 4.33e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7248 on 45 degrees of freedom
## Multiple R-squared: 0.4901, Adjusted R-squared: 0.4788
## F-statistic: 43.25 on 1 and 45 DF, p-value: 4.334e-08
##
##
## Value of test-statistic is: -6.5768 21.629
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau2 -3.58 -2.93 -2.60
## phi1 7.06 4.86 3.94
La p-value de \(𝛽_0\) = 0.952 est supérieur à 𝛼 = 0,05 donc on accepte \(H_0\) et \(𝛽_0\) n’est pas significatif.(on passe à none)
#Prendre les valeurs de 1972 a 2021
PIBusa= slice(PIBusa, -c(1:2))
#diviser valeur d'inv par pib * 100 pour l'avoir en taux
Y=ts((Iusa$Value/PIBusa$Value)*100,freq=1,start=1972,end=2021)
Y # vérifie les valeurs
## Time Series:
## Start = 1972
## End = 2021
## Frequency = 1
## [1] 18.10227 18.79561 17.97266 16.71187 16.82914 17.79188 19.53423
## [8] 20.01125 20.10827 20.60408 18.64693 18.77015 20.69743 21.16697
## [15] 20.63735 19.84664 19.73593 20.17562 19.46639 18.06257 17.74055
## [22] 18.03587 18.41757 18.58343 18.99204 19.22174 19.67576 20.74027
## [29] 21.71004 20.81805 19.26890 18.99797 19.56768 20.66081 21.54968
## [36] 22.31710 20.84163 17.45763 16.95622 17.35371 18.07093 18.24608
## [43] 19.05729 19.11441 18.54922 18.80977 20.39429 19.23850 290.52091
## [50] 293.16679
Bureau of Economic Analysisl pour comprendre le taux d’investissement.
Cours Econométrie des séries temporelles M1