Pouvoir d’achat et ratios des comptes des ménages

Data - Insee

Info

source dataset .html .RData
insee t_pouvachat_val 2024-12-22 2024-12-21

Données

  • Comptes nationaux trimestriels au 3ème trimestre 2023. [html] / [xls]
  • Comptes nationaux trimestriels au 2ème trimestre 2023. [html] / [xls]
  • Comptes nationaux trimestriels au 4ème trimestre 2022. [html] / [xls]
  • Comptes nationaux trimestriels au 4ème trimestre 2021. [html]

Données sur le pouvoir d’achat

source dataset .html .RData
insee CNA-2014-RDB 2024-12-22 2024-12-22
insee CNT-2014-CSI 2024-12-22 2024-12-22
insee conso-eff-fonction 2024-12-22 2022-06-14
insee econ-gen-revenu-dispo-pouv-achat-2 2024-12-22 2024-07-05
insee reve-conso-evo-dep-pa 2024-12-22 2024-12-11
insee reve-niv-vie-individu-activite 2024-12-22 NA
insee reve-niv-vie-pouv-achat-trim 2024-12-22 2024-12-11
insee T_7401 2024-12-22 2024-10-18
insee t_men_val 2024-12-22 2024-12-21
insee t_pouvachat_val 2024-12-22 2024-12-21
insee t_recapAgent_val 2024-12-21 2024-12-21
insee t_salaire_val 2024-12-21 2024-12-21
oecd HH_DASH 2024-09-15 2023-09-09

Bibliographie en lien

Français

  • “Mesurer”le” pouvoir d’achat”, F. Geerolf, Document de travail, Juillet 2024. [pdf]

  • “Inflation en France: IPC ou IPCH ?”, F. Geerolf, Document de travail, Juillet 2024. [pdf]

  • “La taxe inflationniste, le pouvoir d’achat, le taux d’épargne et le déficit public”, F. Geerolf, Document de travail, Juillet 2024. [pdf]

Données sur l’épargne

source dataset .html .RData
bdf CFT 2024-12-22 2024-12-09
insee bdf2017 2024-12-22 2023-11-21
insee ip1815 2024-12-22 2023-10-05
insee T_7401 2024-12-22 2024-10-18
insee t_men_val 2024-12-22 2024-12-21
insee t_pouvachat_val 2024-12-22 2024-12-21
insee t_recapAgent_val 2024-12-21 2024-12-21

LAST_COMPILE

LAST_COMPILE
2024-12-22

date

Code
t_pouvachat_val %>%
  group_by(date) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(date)) %>%
  print_table_conditional

variable

Code
t_pouvachat_val %>%
  left_join(variable, by = "variable") %>%
  group_by(variable, Variable) %>%
  summarise(Nobs = n()) %>%
  print_table_conditional(.)
variable Variable Nobs
(B6/P3prix)/UC Pouvoir d'achat du RDB par unité de consommation 302
(B7/P4prix)/UC Pouvoir d'achat du RDB ajusté par unité de consommation 302
B6 RDB 302
B6 / P3prix Pouvoir d'achat du RDB 302
B6/UC RDB par unité de consommation (UC) 302
B7 RDB ajusté 302
B7/P4prix Pouvoir d'achat du RDB ajusté 302
B7/UC RDB ajusté par unité de consommation 302
B8/(B6+D8) Taux d'épargne 302
B9NF Épargne financière 302
B9NF/(B6+D8) Taux d'épargne financière 302
P3prix Prix de la dépense de consommation finale 302

2017T2-

Table

Code
t_pouvachat_val %>%
  left_join(variable, by = "variable") %>%
  filter(date %in% c(as.Date("2017-04-01"), max(date))) %>%
  spread(date, value) %>%
  print_table_conditional(.)
variable Variable 2017-04-01 2024-07-01
(B6/P3prix)/UC Pouvoir d'achat du RDB par unité de consommation 0.4194388 0.7280995
(B7/P4prix)/UC Pouvoir d'achat du RDB ajusté par unité de consommation 0.3810685 0.6233407
B6 RDB 0.5743289 0.9145433
B6 / P3prix Pouvoir d'achat du RDB 0.5645627 0.8572846
B6/UC RDB par unité de consommation (UC) 0.4291910 0.7852848
B7 RDB ajusté 0.6272417 0.9227031
B7/P4prix Pouvoir d'achat du RDB ajusté 0.5261369 0.7523915
B7/UC RDB ajusté par unité de consommation 0.4820274 0.7934342
B8/(B6+D8) Taux d'épargne 14.0892012 18.1588308
B9NF Épargne financière -2.1964789 4.5788920
B9NF/(B6+D8) Taux d'épargne financière 4.0861522 8.8043221
P3prix Prix de la dépense de consommation finale 0.0097114 0.0567720

Pouvoir d’achat du RDB - (B6/P3prix)/UC

Tous

Code
t_pouvachat_val %>%
  filter(variable %in% c("(B6/P3prix)/UC", "B6 / P3prix")) %>%
  left_join(variable, by = "variable") %>%
  group_by(variable, Variable) %>%
  arrange(date) %>%
  mutate(index = c(100, 100*cumprod(1 + value[-1]/100))) %>%
  ggplot() + geom_line(aes(x = date, y = index, color = Variable)) +
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(100, 3000, 100))

1980-

Code
t_pouvachat_val %>%
  filter(variable %in% c("(B6/P3prix)/UC", "B6 / P3prix")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("1980-01-01")) %>%
  group_by(variable, Variable) %>%
  arrange(date) %>%
  mutate(index = c(100, 100*cumprod(1 + value[-1]/100))) %>%
  ggplot() + geom_line(aes(x = date, y = index, color = Variable)) +
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1980, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(100, 300, 5))

1990-

Code
t_pouvachat_val %>%
  filter(variable %in% c("(B6/P3prix)/UC", "B6 / P3prix")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("1990-01-01")) %>%
  group_by(variable, Variable) %>%
  arrange(date) %>%
  mutate(index = c(100, 100*cumprod(1 + value[-1]/100))) %>%
  ggplot() + geom_line(aes(x = date, y = index, color = Variable)) +
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1990, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(100, 300, 5))

1999-

Code
t_pouvachat_val %>%
  filter(variable %in% c("(B6/P3prix)/UC", "B6 / P3prix")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("1999-01-01")) %>%
  group_by(variable, Variable) %>%
  arrange(date) %>%
  mutate(index = c(100, 100*cumprod(1 + value[-1]/100))) %>%
  ggplot() + geom_line(aes(x = date, y = index, color = Variable)) +
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1999, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(100, 150, 5))

2017T2-

Code
t_pouvachat_val %>%
  filter(variable %in% c("(B6/P3prix)/UC", "B6 / P3prix")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("2017-04-01")) %>%
  group_by(variable, Variable) %>%
  arrange(date) %>%
  mutate(index = c(100, 100*cumprod(1 + value[-1]/100))) %>%
  ggplot() + geom_line(aes(x = date, y = index, color = Variable)) +
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1999, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(100, 150, 1))

2021T2-

Code
t_pouvachat_val %>%
  filter(variable %in% c("(B6/P3prix)/UC", "B6 / P3prix")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("2021-04-01")) %>%
  group_by(variable, Variable) %>%
  arrange(date) %>%
  mutate(index = c(100, 100*cumprod(1 + value[-1]/100))) %>%
  ggplot() + geom_line(aes(x = date, y = index, color = Variable)) +
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1999, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(1, 150, 1))

Prix de la dépense de consommation finale - P3prix

Tous

Code
t_pouvachat_val %>%
  filter(variable %in% c("P3prix", "B6", "B7")) %>%
  left_join(variable, by = "variable") %>%
  group_by(variable, Variable) %>%
  arrange(date) %>%
  mutate(index = c(100, 100*cumprod(1 + value[-1]/100))) %>%
  ggplot() + geom_line(aes(x = date, y = index, color = Variable)) +
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(100, 100000, 100))

1999-

Code
t_pouvachat_val %>%
  filter(variable %in% c("P3prix", "B6", "B7")) %>%
  left_join(variable, by = "variable") %>%
  group_by(variable, Variable) %>%
  arrange(date) %>%
  filter(date >= as.Date("1999-01-01")) %>%
  mutate(index = c(100, 100*cumprod(1 + value[-1]/100))) %>%
  ggplot() + geom_line(aes(x = date, y = index, color = Variable)) +
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1999, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(100, 100000, 10)) +
  geom_label_repel(data = . %>% filter(date == max(date)),
             aes(x = date, y = index, color = Variable, label = round(index, 1)))

Evolution Prix de la dépense de consommation finale - P3prix

Tous

Code
t_pouvachat_val %>%
  filter(variable %in% c("P3prix", "B6", "B7")) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 2),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.4, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical")

Glissement sur 1 an

Tous

Code
t_pouvachat_val %>%
  filter(variable %in% c("P3prix", "B6", "B7")) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  group_by(variable) %>%
  arrange(date) %>%
  mutate(value = value/100,
         ga = (1+value)*(1+lag(value,1))*(1+lag(value,2))*(1+lag(value,3))-1) %>%
  ggplot + geom_line(aes(x = date, y = ga, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 2),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.4, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical")

1990-

Code
t_pouvachat_val %>%
  filter(variable %in% c("P3prix", "B6", "B7")) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  group_by(variable) %>%
  arrange(date) %>%
  mutate(value = value/100,
         ga = (1+value)*(1+lag(value,1))*(1+lag(value,2))*(1+lag(value,3))-1) %>%
  filter(date >= as.Date("1990-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = ga, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.4, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical")

1999-

Code
t_pouvachat_val %>%
  filter(variable %in% c("P3prix", "B6", "B7")) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  group_by(variable) %>%
  arrange(date) %>%
  mutate(value = value/100,
         ga = (1+value)*(1+lag(value,1))*(1+lag(value,2))*(1+lag(value,3))-1) %>%
  filter(date >= as.Date("1999-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = ga, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "2 years"),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.4, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical")

2010-

Code
t_pouvachat_val %>%
  filter(variable %in% c("P3prix", "B6", "B7")) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  group_by(variable) %>%
  arrange(date) %>%
  mutate(value = value/100,
         ga = (1+value)*(1+lag(value,1))*(1+lag(value,2))*(1+lag(value,3))-1) %>%
  filter(date >= as.Date("2010-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = ga, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "2 years"),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.4, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical")

2015-

Code
t_pouvachat_val %>%
  filter(variable %in% c("P3prix", "B6", "B7")) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  group_by(variable) %>%
  arrange(date) %>%
  mutate(value = value/100,
         ga = (1+value)*(1+lag(value,1))*(1+lag(value,2))*(1+lag(value,3))-1) %>%
  filter(date >= as.Date("2015-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = ga, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "1 year"),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.4, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical")

Glissement sur 2 ans

B6, B7

Code
t_pouvachat_val %>%
  filter(variable %in% c("P3prix", "B6", "B7")) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  group_by(variable) %>%
  arrange(date) %>%
  mutate(value = value/100,
         ga = ((1+value)*(1+lag(value,1))*(1+lag(value,2))*(1+lag(value,3))*(1+lag(value,4))*(1+lag(value,5))*(1+lag(value,6))*(1+lag(value,7)))^(1/2)-1) %>%
  ggplot + geom_line(aes(x = date, y = ga, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 2),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.4, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical")

B6, B7, B6/UC

Code
t_pouvachat_val %>%
  filter(variable %in% c("P3prix", "B6", "B7", "B6/UC")) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  group_by(variable) %>%
  arrange(date) %>%
  mutate(value = value/100,
         ga = ((1+value)*(1+lag(value,1))*(1+lag(value,2))*(1+lag(value,3))*(1+lag(value,4))*(1+lag(value,5))*(1+lag(value,6))*(1+lag(value,7)))^(1/2)-1) %>%
  ggplot + geom_line(aes(x = date, y = ga, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 2),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.4, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical")

Pouvoir d’achat

Tous

Trimestriel

Code
t_pouvachat_val %>%
  filter(variable %in% c("(B6/P3prix)/UC", "(B7/P4prix)/UC")) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 2),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.4, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical")

Glissement sur 1 an

Code
t_pouvachat_val %>%
  filter(variable %in% c("(B6/P3prix)/UC", "(B7/P4prix)/UC")) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  group_by(variable) %>%
  arrange(date) %>%
  mutate(value = value/100,
         ga = (1+value)*(1+lag(value,1))*(1+lag(value,2))*(1+lag(value,3))-1) %>%
  ggplot + geom_line(aes(x = date, y = ga, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 2),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.4, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical")

Glissement sur 2 ans

Code
t_pouvachat_val %>%
  filter(variable %in% c("(B6/P3prix)/UC", "(B7/P4prix)/UC")) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  group_by(variable) %>%
  arrange(date) %>%
  mutate(value = value/100,
         ga = ((1+value)*(1+lag(value,1))*(1+lag(value,2))*(1+lag(value,3))*(1+lag(value,4))*(1+lag(value,5))*(1+lag(value,6))*(1+lag(value,7)))^(1/2)-1) %>%
  ggplot + geom_line(aes(x = date, y = ga, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.4, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical")

Glissement sur 3 ans

Code
t_pouvachat_val %>%
  filter(variable %in% c("(B6/P3prix)/UC", "(B7/P4prix)/UC")) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  group_by(variable) %>%
  arrange(date) %>%
  mutate(value = value/100,
         ga = ((1+value)*(1+lag(value,1))*(1+lag(value,2))*(1+lag(value,3))*(1+lag(value,4))*(1+lag(value,5))*(1+lag(value,6))*(1+lag(value,7))*(1+lag(value,8))*(1+lag(value,9))*(1+lag(value,10))*(1+lag(value,11)))^(1/3)-1) %>%
  ggplot + geom_line(aes(x = date, y = ga, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.4, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical")

Glissement sur 4 ans

Code
t_pouvachat_val %>%
  filter(variable %in% c("(B6/P3prix)/UC", "(B7/P4prix)/UC")) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  group_by(variable) %>%
  arrange(date) %>%
  mutate(value = value/100,
         ga = ((1+value)*(1+lag(value,1))*(1+lag(value,2))*(1+lag(value,3))*(1+lag(value,4))*(1+lag(value,5))*(1+lag(value,6))*(1+lag(value,7))*(1+lag(value,8))*(1+lag(value,9))*(1+lag(value,10))*(1+lag(value,11))*(1+lag(value,12))*(1+lag(value,13))*(1+lag(value,14))*(1+lag(value,15)))^(1/4)-1) %>%
  ggplot + geom_line(aes(x = date, y = ga, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.4, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical")

Glissement sur 5 ans

Code
t_pouvachat_val %>%
  filter(variable %in% c("(B6/P3prix)/UC", "(B7/P4prix)/UC")) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  group_by(variable) %>%
  arrange(date) %>%
  mutate(value = value/100,
         ga = ((1+value)*(1+lag(value,1))*(1+lag(value,2))*(1+lag(value,3))*(1+lag(value,4))*(1+lag(value,5))*(1+lag(value,6))*(1+lag(value,7))*(1+lag(value,8))*(1+lag(value,9))*(1+lag(value,10))*(1+lag(value,11))*(1+lag(value,12))*(1+lag(value,13))*(1+lag(value,14))*(1+lag(value,15))*(1+lag(value,16))*(1+lag(value,17))*(1+lag(value,18))*(1+lag(value,19)))^(1/5)-1) %>%
  ggplot + geom_line(aes(x = date, y = ga, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.4, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical")

2017T2-

Code
t_pouvachat_val %>%
  filter(variable %in% c("(B6/P3prix)/UC", "(B7/P4prix)/UC", "B6 / P3prix", "B7/P4prix"),
         date >= as.Date("2017-04-01")) %>%
  mutate(date = zoo::as.yearqtr(date)) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  zoo::scale_x_yearqtr(labels = date_format("%YT%q"),
                       breaks = expand.grid(2017:2100, c(2, 4)) %>%
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) %>%
                         pull(breaks)) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.4, 0.8),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

3 years

Code
t_pouvachat_val %>%
  filter(variable %in% c("(B6/P3prix)/UC", "(B7/P4prix)/UC", "B6 / P3prix", "B7/P4prix"),
         date >= max(date) - years(3)) %>%
  mutate(date = zoo::as.yearqtr(date)) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  zoo::scale_x_yearqtr(labels = date_format("%YT%q"),
                       breaks = expand.grid(2017:2100, 1:4) %>%
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) %>%
                         pull(breaks)) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.4, 0.8),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

2 years

Trimestriel

Code
t_pouvachat_val %>%
  filter(variable %in% c("(B6/P3prix)/UC", "(B7/P4prix)/UC", "B6 / P3prix", "B7/P4prix"),
         date >= max(date) - years(2)) %>%
  mutate(date = zoo::as.yearqtr(date)) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  zoo::scale_x_yearqtr(labels = date_format("%YT%q"),
                       breaks = expand.grid(2017:2100, 1:4) %>%
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) %>%
                         pull(breaks)) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.4, 0.8),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

Glissement sur 1 an

Code
t_pouvachat_val %>%
  filter(variable %in% c("(B6/P3prix)/UC", "(B7/P4prix)/UC", "B6 / P3prix", "B7/P4prix")) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  group_by(variable) %>%
  arrange(date) %>%
  mutate(value = value/100,
         ga = (1+value)*(1+lag(value,1))*(1+lag(value,2))*(1+lag(value,3))-1) %>%
  filter(date >= max(date) - years(2)) %>%
  ggplot + geom_line(aes(x = date, y = ga, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq.Date(from = as.Date("1990-01-01"), to = as.Date("2100-10-01"), by = "3 months"),
               labels = date_format("%b %Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.7, 0.85),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

Taux d’épargne vs. d’épargne financière

Tous

Code
t_pouvachat_val %>%
  filter(variable %in% c("B9NF/(B6+D8)", "B8/(B6+D8)")) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 2),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.2, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical")

1995-

Code
t_pouvachat_val %>%
  filter(variable %in% c("B9NF/(B6+D8)", "B8/(B6+D8)"),
         date >= as.Date("1995-01-01")) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  mutate(date = zoo::as.yearqtr(date, format = "%YT%q")) %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  scale_x_yearqtr() +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 2),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.2, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical")

2005-

Code
t_pouvachat_val %>%
  filter(variable %in% c("B9NF/(B6+D8)", "B8/(B6+D8)"),
         date >= as.Date("2005-01-01")) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  mutate(date = zoo::as.yearqtr(date, format = "%YT%q")) %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  scale_x_yearqtr() +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 2),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.2, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical")

2012-

Code
t_pouvachat_val %>%
  filter(variable %in% c("B9NF/(B6+D8)", "B8/(B6+D8)"),
         date >= as.Date("2012-01-01")) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  mutate(date = zoo::as.yearqtr(date, format = "%YT%q")) %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  scale_x_yearqtr() +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 2),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.2, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical")

2017T2-

Code
t_pouvachat_val %>%
  filter(variable %in% c("B9NF/(B6+D8)", "B8/(B6+D8)"),
         date >= as.Date("2017-04-01")) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  mutate(date = zoo::as.yearqtr(date, format = "%YT%q")) %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  scale_x_yearqtr(labels = date_format("%Y-T%q"),
                       breaks = expand.grid(2017:2100, c(2, 4)) %>%
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) %>%
                         pull(breaks)) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 2),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.2, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical",
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

Taux d’épargne

2012-

Code
t_pouvachat_val %>%
  filter(variable %in% c("B8/(B6+D8)"),
         date >= as.Date("2014-01-01")) %>%
  left_join(variable, by = "variable") %>%
  na.omit %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) + 
  xlab("") + ylab("Taux d'épargne (%)") + theme_minimal() +
  scale_x_date(breaks = seq.Date(from = as.Date("1995-01-01"), to = as.Date("2100-10-01"), by = "1 year"),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.2, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical")