Sélectionner cochez (✓) la meilleure réponse pour chacune des questions suivantes
1. Selon le paradigme fréquentiste, les probabilités sont des propriétés :
2. Quelles sont les qualités souhaitées d’un estimateur dans le paradigme fréquentiste ?
3. Dans le cadre des tests de significativité de Fisher, qu’indique une p-value inférieure à 0,05 ?
4. Quelle est une interprétation correcte d’un intervalle de confiance à 95 % ?
5. Selon le paradigme fréquentiste, les paramètres d’une population sont :
6. Un estimateur est dit sans biais si :
7. Un estimateur est dit convergent si :
8. Quelle est la principale différence entre le test de Fisher et celui de Neyman-Pearson ?
9. Qu’est-ce qu’un processus stochastique ?
10. Que signifie la non-stationnarité dans une série chronologique ?
Utiliser la méthodologie de Box-Jenkins pour modéliser et prévoir le taux de croissance trimestriel du PIB du Niger à partir de données économiques réelles.
Étant donné le jeu de données sur le taux de croissance trimestriel du PIB du Niger (2010T1 à 2023T4), effectuez les étapes suivantes :
Pour faire ce travail, nous utiliserons les packages suivants :
library(readxl)
library(dplyr)
##
## Attachement du package : 'dplyr'
## Les objets suivants sont masqués depuis 'package:stats':
##
## filter, lag
## Les objets suivants sont masqués depuis 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
library(naniar)
library(kableExtra)
##
## Attachement du package : 'kableExtra'
## L'objet suivant est masqué depuis 'package:dplyr':
##
## group_rows
library(tseries)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(urca)
library(knitr)
library(forecast)
library(lmtest)
## 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
library(tseries)
setwd("C:\\Users\\MAINS2\\Desktop\\IPS 4\\2ème Année\\Serie tempo\\Devoir")
data <- read_xlsx("Niger_Quarterly_GDP_Growth.xlsx")
head(data, 10)
## # A tibble: 10 × 2
## Quarter GDP_Growth_Rate
## <dttm> <dbl>
## 1 2010-03-31 00:00:00 1.2
## 2 2010-06-30 00:00:00 0.9
## 3 2010-09-30 00:00:00 1.5
## 4 2010-12-31 00:00:00 1.3
## 5 2011-03-31 00:00:00 0.8
## 6 2011-06-30 00:00:00 0.7
## 7 2011-09-30 00:00:00 1.1
## 8 2011-12-31 00:00:00 1.4
## 9 2012-03-31 00:00:00 1
## 10 2012-06-30 00:00:00 0.6
Valeurs manquantes
missing_summary <- data %>% miss_var_summary()
kable(missing_summary,
format = "markdown",
caption = "Résumé des valeurs manquantes")
| variable | n_miss | pct_miss |
|---|---|---|
| Quarter | 0 | 0 |
| GDP_Growth_Rate | 0 | 0 |
Notre jeu de données ne possedent pas de valeurs manquantes.
Valeurs aberantes
detect_outliers <- function(df) {
# Fonction pour détecter les outliers dans un vecteur numérique
find_outliers <- function(x) {
Q1 <- quantile(x, 0.25, na.rm = TRUE)
Q2 <- quantile(x, 0.50, na.rm = TRUE) # La médiane
Q3 <- quantile(x, 0.75, na.rm = TRUE)
IQR <- Q3 - Q1
lower_bound <- Q1 - 1.5 * IQR
upper_bound <- Q3 + 1.5 * IQR
outliers <- x[x < lower_bound | x > upper_bound]
return(list(
outliers = outliers,
Q1 = Q1,
Q2 = Q2,
Q3 = Q3,
lower_bound = lower_bound,
upper_bound = upper_bound
))
}
# Liste pour stocker les résultats par colonne
results <- list()
# Appliquer la fonction à chaque colonne numérique du data frame
for (colname in names(df)) {
if (is.numeric(df[[colname]])) {
outlier_info <- find_outliers(df[[colname]])
results[[colname]] <- list(
outliers = outlier_info$outliers,
Q1 = outlier_info$Q1,
Q2 = outlier_info$Q2,
Q3 = outlier_info$Q3,
lower_bound = outlier_info$lower_bound,
upper_bound = outlier_info$upper_bound,
outlier_count = length(outlier_info$outliers)
)
}
}
return(results)
}
# Appliquer la fonction au jeu de données
outlier_results <- detect_outliers(data)
# Construire un tableau résumé
summary_table <- do.call(rbind, lapply(names(outlier_results), function(colname) {
res <- outlier_results[[colname]]
if (!is.null(res)) {
data.frame(
Variable = colname,
Q1 = res$Q1,
Q2 = res$Q2,
Q3 = res$Q3,
Borne_inferieure = paste0(round(res$lower_bound, 2), " (Q1 - 1.5 * IQR)"),
Borne_superieure = paste0(round(res$upper_bound, 2), " (Q3 + 1.5 * IQR)"),
Effectifs = res$outlier_count,
Pourcentages = round(res$outlier_count * 100 / nrow(data), 2),
Valeurs_aberantes = ifelse(res$outlier_count > 0,
paste(res$outliers, collapse = ", "),
"Aucune")
)
}
}))
# Afficher les résultats sous forme de tableau
library(knitr)
summary_table %>%
kable("pipe", align = "c", caption = "Détails des valeurs aberrantes par variable")
| Variable | Q1 | Q2 | Q3 | Borne_inferieure | Borne_superieure | Effectifs | Pourcentages | Valeurs_aberantes | |
|---|---|---|---|---|---|---|---|---|---|
| 25% | GDP_Growth_Rate | 1 | 1.3 | 1.5 | 0.25 (Q1 - 1.5 * IQR) | 2.25 (Q3 + 1.5 * IQR) | 0 | 0 | Aucune |
Les données de la variable GDP_Growth_Rate semblent cohérentes et homogènes. Aucun point de données n'est significativement éloigné des autres selon la méthode basée sur l'IQR.
Les valeurs Q1, Q2, et Q3 montrent une distribution relativement concentrée, avec un faible IQR, indiquant une faible variabilité entre le 25ème et le 75ème percentile.
Les bornes inférieure et supérieure (0.25 et 2.25) sont larges par rapport à la gamme des données présentes, ce qui contribue à l'absence de valeurs aberrantes.
variables <- names(data)[-1] # Exclure la colonne Quarter
variables
## [1] "GDP_Growth_Rate"
# Créer le graphique de la série
for (variable in variables) {
p <- ggplot(data, aes(x = Quarter , y = .data[[variable]])) +
geom_line() +
labs(title = paste("Évolution de", variable),
x = "Année",
y = variable) +
theme_minimal()
print(p)
}
# Créer une nouvelle base de données pour stocker
ts_data <- list()
# Définir la période des séries temporelles
start_year <- 2010
start_quarter <- 1
# Transformer chaque colonne en série temporelle
for (var in colnames(data)) {
ts_data[[var]] <- ts(data[[var]], start = c(start_year, start_quarter), frequency = 4)
}
# Afficher la série temporelle de la variable
print((ts_data$GDP_Growth_Rate))
## Qtr1 Qtr2 Qtr3 Qtr4
## 2010 1.2 0.9 1.5 1.3
## 2011 0.8 0.7 1.1 1.4
## 2012 1.0 0.6 1.2 1.5
## 2013 1.1 0.8 1.3 1.4
## 2014 1.0 0.7 1.2 1.5
## 2015 1.2 0.9 1.3 1.6
## 2016 1.1 0.8 1.4 1.7
## 2017 1.2 0.9 1.4 1.8
## 2018 1.3 0.8 1.5 1.7
## 2019 1.2 0.9 1.5 1.8
## 2020 1.4 1.0 1.6 1.9
## 2021 1.3 1.1 1.5 1.7
## 2022 1.4 1.0 1.5 1.8
## 2023 1.3 1.1 1.6 1.9
# Visualiser la série temporelle pour GDP_Growth_Rate
plot.ts(ts_data$GDP_Growth_Rate,
col = "blue", lwd = 2,
xlab = "Année", ylab = "GDP_Growth_Rate",
main = "Évolution de GDP_Growth_Rate")
abline(h = mean(ts_data$GDP_Growth_Rate),
col = "red",
lwd = 2,
lty = 2)
Tests de racine unitaire de Dickey-Fuller (DF)
Les tests de Dickey-Fuller (DF) sont utilisés pour identifier la présence d’une racine unitaire dans une série temporelle, ce qui permet de déterminer si la série est stationnaire. Il existe trois variantes du test, chacune adaptée à des caractéristiques spécifiques des séries temporelles :
Le modèle de Dickey-Fuller sans constante s’écrit :
\(y_{t}\) = \(\rho\) * \(y_{t-1}\) + \(\epsilon_{t}\)
où :
\(y_{t}\) est la série temporelle.
\(\rho\) est le coefficient de \(y_{t-1}\).
\(\epsilon_{t}\) est un terme d’erreur blanc.
L’hypothèse nulle (H0) est que \(\rho =1\) (indiquant une racine unitaire), contre l’hypothèse alternative (H1) que \(\rho <1\) (indiquant que la série est stationnaire).
Le modèle de Dickey-Fuller avec constante s’écrit :
\(y_{t}\) = \(\alpha\) + \(\rho\) * \(y_{t-1}\) + \(\epsilon_{t}\)
où :
Dans ce modèle, la série peut fluctuer autour d’une moyenne non nulle. L’hypothèse nulle (H0) est que \(\rho = 1\), contre l’hypothèse alternative (H1) que \(\rho < 1\).
Le modèle de Dickey-Fuller avec constante et tendance s’écrit :
\(y_{t}\) = \(\alpha\) + \(\beta t\) + \(\rho\) * \(y_{t-1}\) +\(\epsilon_{t}\)
où :
Ce modèle est utilisé pour des séries qui montrent une tendance croissante ou décroissante au fil du temps. L’hypothèse nulle (H0) est que \(\rho = 1\), contre l’hypothèse alternative (H1) que \(\rho < 1\).
Nous allons commencer par mettre en place les trois modèles de base nécessaires pour tester la stationnarité. Nous appliquerons séquentiellement le modèle 3, suivi du modèle 2, puis du modèle 1, afin de déterminer selon quel modèle la variable est stationnaire. Si la variable n’est stationnaire selon aucun de ces modèles, nous procéderons à une différenciation et reprendrons la procédure avec les mêmes modèles. Ce processus sera réitéré jusqu’à ce que toutes les variables deviennent stationnaires à un certain ordre de différenciation.
Implementation des modeles
# Fonction pour tester la stationnarité avec tendance et constante
modele3 <- function(ts_data, variables) {
# Fonction pour ajouter des étoiles basées sur la p-value
add_stars <- function(estimate, p.value) {
stars <- ifelse(p.value < 0.001,
"***",
ifelse(p.value < 0.01,
"**",
ifelse(p.value < 0.05,
"*",
"")))
paste0(round(estimate, 4), stars)
}
# Créer une liste pour stocker les résultats
results <- list()
for (var in variables) {
series <- ts_data[[var]]
adf_trend <- ur.df(series, type = "trend", selectlags = "AIC")
# Extraire les coefficients et les p-values
coef <- summary(adf_trend)@testreg$coefficients
# Vérifier les noms des coefficients disponibles
coef_names <- rownames(coef)
# Trouver les index des coefficients nécessaires
z_lag_1_index <- which(coef_names == "z.lag.1")
trend_index <- which(coef_names == "tt")
z_diff_lag_index <- grep("z.diff.lag", coef_names)[1]
const_index <- which(coef_names == "(Intercept)")
# Stocker les résultats pour chaque variable
results[[var]] <- data.frame(
Variable = var,
z.lag.1 = add_stars(coef[z_lag_1_index, "Estimate"], coef[z_lag_1_index, "Pr(>|t|)"]),
Tendance = add_stars(coef[trend_index, "Estimate"], coef[trend_index, "Pr(>|t|)"]),
z.diff.lag = ifelse(length(z_diff_lag_index) > 0, add_stars(coef[z_diff_lag_index, "Estimate"], coef[z_diff_lag_index, "Pr(>|t|)"]), NA),
Constante = add_stars(coef[const_index, "Estimate"], coef[const_index, "Pr(>|t|)"])
)
}
# Combiner tous les résultats en un seul dataframe
results_df <- bind_rows(results)
# Créer le tableau final
final_table <- results_df %>%
kable(format = "markdown", col.names = c("Variable", "z.lag.1", "Tendance", "z.diff.lag", "Constante"), align = c("l", "r", "r", "r", "r"))
return(final_table)
}
# Application de la fonction
variables <- c("GDP_Growth_Rate")
modele3(ts_data, variables)
| Variable | z.lag.1 | Tendance | z.diff.lag | Constante |
|---|---|---|---|---|
| GDP_Growth_Rate | -1.8587*** | 0.0158*** | 0.9006*** | 1.9085*** |
En conclusion, les fluctuations du taux de croissance du PIB sont stationnaires autour d'une tendance déterministe sur la période analysée.
variables_const <- c("GDP_Growth_Rate")
# Fonction pour tester la stationnarité avec constante
modele2 <- function(ts_data, variables_const) {
# Fonction pour ajouter des étoiles basées sur la p-value
add_stars <- function(estimate, p.value) {
stars <- ifelse(p.value < 0.001, "***",
ifelse(p.value < 0.01, "**",
ifelse(p.value < 0.05, "*",
"")))
paste0(round(estimate, 4), stars)
}
# Créer une liste pour stocker les résultats
results <- list()
for (var in variables_const) {
series <- ts_data[[var]]
adf_drift <- ur.df(series, type = "drift", selectlags = "AIC")
# Extraire les coefficients et les p-values
coef <- summary(adf_drift)@testreg$coefficients
# Vérifier les noms des coefficients disponibles
coef_names <- rownames(coef)
# Trouver les index des coefficients nécessaires
z_lag_1_index <- which(coef_names == "z.lag.1")
z_diff_lag_index <- grep("z.diff.lag", coef_names)[1] # Prend le premier s'il y en a plusieurs
const_index <- which(coef_names == "(Intercept)")
# Stocker les résultats pour chaque variable
results[[var]] <- data.frame(
Variable = var,
z.lag.1 = add_stars(coef[z_lag_1_index, "Estimate"], coef[z_lag_1_index, "Pr(>|t|)"]),
z.diff.lag = ifelse(length(z_diff_lag_index) > 0, add_stars(coef[z_diff_lag_index, "Estimate"], coef[z_diff_lag_index, "Pr(>|t|)"]), NA),
constante = add_stars(coef[const_index, "Estimate"], coef[const_index, "Pr(>|t|)"])
)
}
# Combiner tous les résultats en un seul dataframe
results_df_const <- bind_rows(results)
# Créer le tableau final
final_table_const <- results_df_const %>%
kable(format = "markdown", col.names = c("Variable", "z.lag.1", "z.diff.lag", "constante"), align = c("l", "r", "r", "r"))
return(final_table_const)
}
# Application de la fonction à tes données
modele2(ts_data, variables_const)
| Variable | z.lag.1 | z.diff.lag | constante |
|---|---|---|---|
| GDP_Growth_Rate | -1.3326*** | 0.6475*** | 1.6968*** |
En conclusion, les fluctuations du taux de croissance du PIB sont stationnaires lorsqu'on inclut une constante dans le modèle, sur la période analysée.
# Liste contenant la variable GDP_Growth_Rate
variables_ss <- c("GDP_Growth_Rate")
# Fonction pour tester la stationnarité sans constante
modele1 <- function(ts_data, variables_ss) {
# Fonction pour ajouter des étoiles basées sur la p-value
add_stars <- function(estimate, p.value) {
stars <- ifelse(p.value < 0.001, "***",
ifelse(p.value < 0.01, "**",
ifelse(p.value < 0.05, "*",
"")))
paste0(round(estimate, 4), stars)
}
# Créer une liste pour stocker les résultats
results <- list()
for (var in variables_ss) {
series <- ts_data[[var]]
adf_none <- ur.df(series, type = "none", selectlags = "AIC")
# Extraire les coefficients et les p-values
coef <- summary(adf_none)@testreg$coefficients
# Vérifier les noms des coefficients disponibles
coef_names <- rownames(coef)
# Trouver les index des coefficients nécessaires
z_lag_1_index <- which(coef_names == "z.lag.1")
z_diff_lag_index <- grep("z.diff.lag", coef_names)[1] # Prend le premier s'il y en a plusieurs
# Stocker les résultats pour chaque variable
results[[var]] <- data.frame(
Variable = var,
z.lag.1 = add_stars(coef[z_lag_1_index, "Estimate"], coef[z_lag_1_index, "Pr(>|t|)"]),
z.diff.lag = ifelse(length(z_diff_lag_index) > 0, add_stars(coef[z_diff_lag_index, "Estimate"], coef[z_diff_lag_index, "Pr(>|t|)"]), NA)
)
}
# Combiner tous les résultats en un seul dataframe
results_df_ss <- bind_rows(results)
# Créer le tableau final
final_table_ss <- results_df_ss %>%
kable(format = "markdown", col.names = c("Variable", "z.lag.1", "z.diff.lag"), align = c("l", "r", "r"))
return(final_table_ss)
}
# Application de la fonction à tes données
modele1(ts_data, variables_ss)
| Variable | z.lag.1 | z.diff.lag |
|---|---|---|
| GDP_Growth_Rate | -0.0343 | -0.007 |
En conclusion, le modèle sans constante ne permet pas de conclure que les fluctuations du taux de croissance du PIB sont stationnaires pour la période analysée.
En résumé, les tests de stationnarité montrent que la variable GDP_Growth_Rate présente une stationnarité significative lorsque l’on inclut soit une constante, soit une tendance et une constante dans le modèle. Les fluctuations du taux de croissance du PIB du Niger sont donc stationnaires autour d’une moyenne ou d’une tendance déterministe sur la période analysée.
ARIMA (AutoRegressive Integrated Moving Average) est un modèle de séries temporelles utilisé pour comprendre et prévoir les valeurs futures basées sur les valeurs passées. Le modèle ARIMA se compose de trois parties :
Cette partie du modèle utilise la dépendance linéaire entre les observations passées et les valeurs présentes. Elle est représentée par le paramètre p.
Par exemple, un modèle AR(1) signifie que la valeur actuelle dépend de la valeur précédente.
Formule générale :
yt = c + φ1yt-1 + φ2yt-2 + ... + φpyt-p + εt
Cette partie du modèle représente le nombre de différences nécessaires pour rendre la série temporelle stationnaire. Elle est représentée par le paramètre d.
Si la série est déjà stationnaire, alors d = 0. Si une différenciation est nécessaire, alors d = 1, etc.
Opération de différenciation :
y't = yt - yt-1
Cette partie du modèle utilise la dépendance linéaire entre les valeurs passées des erreurs (résidus) et la valeur présente. Elle est représentée par le paramètre q.
Par exemple, un modèle MA(1) signifie que la valeur actuelle dépend de l'erreur précédente.
Formule générale :
yt = c + εt + θ1εt-1 + θ2εt-2 + ... + θqεt-q
# Charger les données de série temporelle
series <- ts_data$GDP_Growth_Rate
# Identifier la stationnarité et différencier si nécessaire
ndiffs(series) # Nombre de différenciations nécessaires pour rendre la série stationnaire
## [1] 1
# Appliquer la différenciation si nécessaire
diff_series <- diff(series, differences = 1)
# Identifier les paramètres p et q en utilisant les fonctions auto.arima
best_model <- auto.arima(series)
# Afficher le modèle ARIMA sélectionné
print(best_model)
## Series: series
## ARIMA(0,0,1)(1,1,1)[4] with drift
##
## Coefficients:
## ma1 sar1 sma1 drift
## 0.5373 -0.3461 -0.8867 0.0083
## s.e. 0.1341 0.1831 0.2662 0.0010
##
## sigma^2 = 0.008669: log likelihood = 47.14
## AIC=-84.28 AICc=-82.98 BIC=-74.52
# Résumé des résultats du modèle
summary(best_model)
## Series: series
## ARIMA(0,0,1)(1,1,1)[4] with drift
##
## Coefficients:
## ma1 sar1 sma1 drift
## 0.5373 -0.3461 -0.8867 0.0083
## s.e. 0.1341 0.1831 0.2662 0.0010
##
## sigma^2 = 0.008669: log likelihood = 47.14
## AIC=-84.28 AICc=-82.98 BIC=-74.52
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set -0.01212366 0.08619943 0.06564736 -2.109385 5.697404 0.5505908
## ACF1
## Training set -0.102386
Le modèle ARIMA sélectionné pour la série temporelle du taux de croissance du PIB (GDP_Growth_Rate) est ARIMA(0,0,1)(1,1,1)[4] avec dérive. interprétation des résultats obtenus :
ma1 : 0.5373sar1 : -0.3461sma1 : -0.8867drift : 0.0083ma1 : 0.1341sar1 : 0.1831sma1 : 0.2662drift : 0.0010sigma^2 : 0.008669log likelihood : 47.14AIC : -84.28AICc : -82.98BIC : -74.52Ces mesures indiquent que le modèle ARIMA sélectionné s’ajuste bien à la série temporelle du taux de croissance du PIB, avec de faibles erreurs et des critères d’information favorables. Le modèle peut être utilisé pour prévoir les valeurs futures de la série temporelle, en tenant compte des composantes saisonnières et de la dérive.
### Cliquez pour obtenir des informations sur les résultats obtenusCoefficients :
Erreurs standards (s.e.) :
Mesures d'erreur du modèle :
# Charger le modèle ARIMA
best_model <- auto.arima(series)
# Résidus du modèle
residuals <- residuals(best_model)
# Autocorrélation des résidus
acf(residuals)
Le graphique ACF des résidus montre si les résidus sont autocorrélés. Dans un bon modèle ARIMA, les résidus doivent se comporter comme un bruit blanc, c’est-à-dire qu’ils ne doivent pas être autocorrélés. Si les barres d’autocorrélation sont proches de zéro, cela indique que les résidus ne sont pas autocorrélés.
# Test de Ljung-Box
Box.test(residuals, lag=20, type="Ljung-Box")
##
## Box-Ljung test
##
## data: residuals
## X-squared = 15.754, df = 20, p-value = 0.7318
La p-value de 0.7318 est élevée, ce qui indique que nous ne rejetons pas l’hypothèse nulle. Cela signifie que les résidus sont indépendants et qu’il n’y a pas d’autocorrélation significative.
# Test de Shapiro-Wilk
shapiro.test(residuals)
##
## Shapiro-Wilk normality test
##
## data: residuals
## W = 0.97973, p-value = 0.4642
La p-value de 0.4642 est élevée, ce qui indique que nous ne rejetons pas l’hypothèse nulle de normalité. Cela signifie que les résidus suivent une distribution normale.
# Histogramme des résidus
hist(residuals, main="Histogramme des Résidus", xlab="Résidus")
la distribution est symétrique et en forme de cloche, cela indique que les résidus suivent une distribution normale.
# Q-Q Plot des résidus
qqnorm(residuals)
qqline(residuals, col="red")
les points suivent la ligne droite, cela indique que les résidus suivent une distribution normale.
# ADF Test sur les résidus
adf.test(residuals)
##
## Augmented Dickey-Fuller Test
##
## data: residuals
## Dickey-Fuller = -2.8602, Lag order = 3, p-value = 0.2278
## alternative hypothesis: stationary
La p-value de 0.2278 est supérieure à 0.05, ce qui indique que nous ne rejetons pas l’hypothèse nulle de non-stationnarité. Cela signifie que les résidus ne sont pas stationnaires.
# Estimer le modèle ARIMA
fit <- auto.arima(series)
# Prévoir les quatre prochains trimestres
forecast <- forecast(fit, h=4)
# Afficher les prévisions
print(forecast)
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 2024 Q1 1.485431 1.3655576 1.605305 1.3021004 1.668762
## 2024 Q2 1.107629 0.9715886 1.243669 0.8995733 1.315684
## 2024 Q3 1.643679 1.5076386 1.779719 1.4356233 1.851734
## 2024 Q4 1.893268 1.7572564 2.029279 1.6852564 2.101279
plot(forecast)
Interprétation des Prévisions
-Prévisions du PIB : Ces prévisions montrent les valeurs attendues du taux de croissance du PIB pour les quatre prochains trimestres. Par exemple, pour le premier trimestre de 2024, le taux de croissance prévu est de 1.485431.
-Intervalles de Confiance : Les intervalles de confiance indiquent la variabilité des prévisions. Par exemple, pour le premier trimestre de 2024, il y a 80% de chances que le taux de croissance du PIB se situe entre 1.3655576 et 1.605305, et 95% de chances qu’il se situe entre 1.3021004 et 1.668762.
-Tendances : Les prévisions montrent une augmentation générale du taux de croissance du PIB au fil des trimestres en 2024, avec une prévision de 1.485431 au premier trimestre et atteignant 1.893268 au quatrième trimestre.
Vous pouvez accéder aux résultats des prévisions du taux de croissance du PIB pour les quatre prochains trimestres en cliquant sur le lien suivant :