Indice pour la révision d’un loyer d’habitation

Data - INSEE

Info

source dataset Title .html .rData
insee IRL Indice pour la révision d’un loyer d’habitation 2025-12-25 2025-12-27
insee IPC-2015 Indice des prix à la consommation - Base 2015 2025-12-25 2025-12-27

Données sur l’inflation en France

source dataset Title .html .rData
insee IRL Indice pour la révision d’un loyer d’habitation 2025-12-25 2025-12-27
insee ILC-ILAT-ICC Indices pour la révision d’un bail commercial ou professionnel 2025-12-25 2025-12-27
insee INDICES_LOYERS Indices des loyers - Base 2019 2025-12-25 2025-12-27
insee IPC-1970-1980 Indice des prix à la consommation - Base 1970, 1980 2025-12-25 2025-12-27
insee IPC-1990 Indices des prix à la consommation - Base 1990 2025-12-25 2025-12-27
insee IPC-2015 Indice des prix à la consommation - Base 2015 2025-12-25 2025-12-27
insee IPC-PM-2015 Prix moyens de vente de détail 2025-12-25 2025-12-27
insee IPCH-2015 Indices des prix à la consommation harmonisés 2025-12-25 2025-12-27
insee IPCH-IPC-2015-ensemble Indices des prix à la consommation harmonisés 2025-12-25 2025-12-25
insee IPGD-2015 Indice des prix dans la grande distribution 2025-12-25 2025-12-20
insee IPLA-IPLNA-2015 Indices des prix des logements neufs et Indices Notaires-Insee des prix des logements anciens 2025-12-25 2025-12-27
insee IPPI-2015 Indices de prix de production et d'importation dans l'industrie 2025-12-25 2025-12-27
insee SERIES_LOYERS Variation des loyers 2025-12-25 2025-12-27
insee T_CONSO_EFF_FONCTION Consommation effective des ménages par fonction 2025-12-25 2025-12-22
insee bdf2017 Budget de famille 2017 2025-12-25 2023-11-21
insee echantillon-agglomerations-IPC-2024 Échantillon d’agglomérations enquêtées de l’IPC en 2024 2025-12-25 2025-04-02
insee liste-varietes-IPC-2024 Liste des variétés pour la mesure de l'IPC en 2024 2025-12-25 2025-04-02
insee ponderations-elementaires-IPC-2024 Pondérations élémentaires 2024 intervenant dans le calcul de l’IPC 2025-12-25 2025-04-02

Données sur l’immobilier

source dataset Title .html .rData
insee IRL Indice pour la révision d’un loyer d’habitation 2025-12-25 2025-12-27
acpr as151 Enquête annuelle du SGACPR sur le financement de l'habitat 2022 2025-08-24 2024-04-05
acpr as160 Enquête annuelle du SGACPR sur le financement de l'habitat 2023 2025-08-24 2024-09-26
acpr as174 Enquête annuelle du SGACPR sur le financement de l'habitat 2024 2025-09-29 2025-09-29
bdf BSI1 Agrégats monétaires - France 2025-12-24 2025-12-24
bdf CPP Prix immobilier commercial 2025-12-24 2024-07-01
bdf FM Marché financier, taux 2025-12-24 2025-12-24
bdf MIR Taux d'intérêt - Zone euro 2025-12-24 2025-08-04
bdf MIR1 Taux d'intérêt - France 2025-12-24 2025-08-04
bdf RPP Prix de l'immobilier 2025-12-24 2025-12-24
bdf immobilier Immobilier en France 2025-12-24 2025-12-24
cgedd nombre-vente-maison-appartement-ancien Nombre de ventes de logements anciens cumulé sur 12 mois 2024-09-26 2024-09-26
insee CONSTRUCTION-LOGEMENTS Construction de logements 2025-12-25 2025-12-27
insee ENQ-CONJ-ART-BAT Conjoncture dans l'artisanat du bâtiment 2025-12-25 2025-12-27
insee ENQ-CONJ-IND-BAT Conjoncture dans l'industrie du bâtiment - ENQ-CONJ-IND-BAT 2025-12-25 2025-12-27
insee ENQ-CONJ-PROMO-IMMO Conjoncture dans la promotion immobilière 2025-12-25 2025-12-27
insee ENQ-CONJ-TP Conjoncture dans les travaux publics 2025-12-25 2025-12-27
insee ILC-ILAT-ICC Indices pour la révision d’un bail commercial ou professionnel 2025-12-25 2025-12-27
insee INDICES_LOYERS Indices des loyers - Base 2019 2025-12-25 2025-12-27
insee IPLA-IPLNA-2015 Indices des prix des logements neufs et Indices Notaires-Insee des prix des logements anciens 2025-12-25 2025-12-27
insee PARC-LOGEMENTS Estimations annuelles du parc de logements (EAPL) 2025-12-25 2023-12-03
insee SERIES_LOYERS Variation des loyers 2025-12-25 2025-12-27
insee t_dpe_val Dépenses de consommation des ménages pré-engagées 2025-12-25 2025-12-27
notaires arrdt Prix au m^2 par arrondissement - arrdt 2025-09-29 2025-09-29
notaires dep Prix au m^2 par département 2025-09-29 2025-09-29

LAST_UPDATE

Code
IRL %>%
  group_by(LAST_UPDATE) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(LAST_UPDATE)) %>%
  print_table_conditional()
LAST_UPDATE Nobs
2025-10-15 276
2008-02-04 62

Last

Code
IRL %>%
  group_by(TIME_PERIOD) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(TIME_PERIOD)) %>%
  head(1) %>%
  print_table_conditional()
TIME_PERIOD Nobs
2025-Q3 6

Liens

  • INSEE - La méthodologie de l’IRL. pdf

  • INSEE - méthodologie IRL base 1998. pdf

  • Indice de référence des loyers (IRL). html

  • Dernier indice IRL connu. html

  • Tableau sur le site de l’INSEE. html

Code
i_g("bib/insee/IR95_IRL_1T22/pour-en-savoir-plus.png")

TITLE_FR

Code
`IRL` %>%
  group_by(IDBANK, TITLE_FR) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
IDBANK TITLE_FR Nobs
001515333 Indice de référence des loyers (IRL) 92
001515334 Indice de référence des loyers (IRL) - Variation annuelle 92
000882470 Indice de référence des loyers 2005 (IRL 2005) - Série arrêtée 31
000882473 Indice de référence des loyers 2005 (IRL 2005) - Variation annuelle - Série arrêtée 31
010760507 Indice de référence des loyers dans la collectivité de Corse 23
010760508 Indice de référence des loyers dans la collectivité de Corse - Variation annuelle 23
010760509 Indice de référence des loyers dans les collectivités régies par l’article 73 de la Constitution (régions et départements d’outre-mer) 23
010760510 Indice de référence des loyers dans les collectivités régies par l’article 73 de la Constitution (régions et départements d’outre-mer) - Variation annuelle 23

BASIND

Code
`IRL` %>%
  left_join(BASIND, by = "BASIND") %>%
  group_by(BASIND, Basind) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
BASIND Basind Nobs
SO Sans objet 169
1998-T4 4ème trimestre de 1998 138
2004-T2 2ème trimestre de 2004 31

NATURE

Code
`IRL` %>%
  left_join(NATURE, by = "NATURE") %>%
  group_by(NATURE, Nature) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
NATURE Nature Nobs
INDICE Indice 169
VARIATIONS_A Variations annuelles 169

TIME_PERIOD

Code
`IRL` %>%
  group_by(TIME_PERIOD) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  arrange(desc(TIME_PERIOD)) %>%
  print_table_conditional()

Indice

Linear

Tous

Code
IRL %>%
  filter(NATURE == "INDICE") %>%
  quarter_to_date %>%
  ggplot(.) + theme_minimal() + ylab("") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = TITLE_FR)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.6, 0.7)) +
  scale_x_date(breaks = seq(1950, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 5))

2017-

Code
IRL %>%
  filter(NATURE == "INDICE") %>%
  quarter_to_date %>%
  filter(date >= as.Date("2017-01-01")) %>%
  ggplot(.) + theme_minimal() + ylab("") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = TITLE_FR)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.6, 0.7)) +
  scale_x_date(breaks = seq(1950, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 5))

Indice 100

2017-

Code
IRL %>%
  filter(NATURE == "INDICE",
         IDBANK == "001515333") %>%
  quarter_to_date %>%
  filter(date >= as.Date("2017-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot(.) + theme_minimal() + ylab("") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.7)) +
  scale_x_date(breaks = seq(1950, 2100, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 2))

Linear - 4 quarters rolling

Code
IRL %>%
  filter(NATURE == "INDICE") %>%
  quarter_to_date %>%
  group_by(TITLE_FR) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = OBS_VALUE/lag(OBS_VALUE, 4)-1) %>%
  ggplot(.) + theme_minimal() + ylab("") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = TITLE_FR)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.65, 0.95)) +
  
  scale_x_date(breaks = seq(1950, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 0.5),
                     labels = percent_format(accuracy = .1, prefix = ""))

Log

Code
IRL %>%
  filter(NATURE == "INDICE") %>%
  quarter_to_date %>%
  ggplot(.) + theme_minimal() + ylab("") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = TITLE_FR)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.38, 0.92)) +
  
  scale_x_date(breaks = seq(1950, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 5))

Variation annuelle

Tous

Code
IRL %>%
  filter(NATURE == "VARIATIONS_A") %>%
  quarter_to_date %>%
  ggplot(.) + theme_minimal() + ylab("") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = TITLE_FR)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.5, 0.92)) +
  
  scale_x_date(breaks = seq(1950, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-200, 200, .5),
                     labels = percent_format(acc = .1),
                     limits = 0.01*c(-0.2, 4))

2008-

Code
table1 <- IRL %>%
  filter(NATURE == "VARIATIONS_A") %>%
  quarter_to_date %>%
  filter(date >= as.Date("2008-01-01")) %>%
  select(date, OBS_VALUE, IDBANK, TITLE_FR)

table1 %>%
  ggplot(.) + theme_minimal() + ylab("") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = TITLE_FR)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.5, 0.92)) +
  
  scale_x_date(breaks = seq(1950, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-200, 200, .5),
                     labels = percent_format(acc = .1),
                     limits = 0.01*c(-0.2, 4))

Table

Code
table1 %>%
  print_table_conditional()

Répliquer IRL à partir de l’Ensemble hors loyer hors tabac

Prévisions INSEE

Estimation

Code
i_g("bib/insee/PdC_09-05-22/table5.png")

IRL Juillet

Code
`IPC-2015` %>%
  filter(PRIX_CONSO %in% c("4600"),
         COICOP2016 %in% c("00", "SO"),
         MENAGES_IPC == "ENSEMBLE",
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M") %>%
  select(TIME_PERIOD, OBS_VALUE) %>%
  arrange(desc(TIME_PERIOD))
# # A tibble: 335 × 2
#    TIME_PERIOD OBS_VALUE
#    <chr>           <dbl>
#  1 2025-11          120.
#  2 2025-10          121.
#  3 2025-09          121.
#  4 2025-08          122.
#  5 2025-07          121.
#  6 2025-06          121.
#  7 2025-05          120.
#  8 2025-04          121.
#  9 2025-03          120.
# 10 2025-02          120.
# # ℹ 325 more rows

Ensemble

Trimestriel

All

Code
`IPC-2015` %>%
  filter(PRIX_CONSO %in% c("4600"),
         COICOP2016 %in% c("SO"),
         MENAGES_IPC == "ENSEMBLE",
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M") %>%
  month_to_date %>%
  arrange(date) %>%
  transmute(date,
            `Inflation Indice des loyers (IRL): Variation sur 12 mois de la moyenne sur 12 mois de l'IPC hors loyers, hors tabac` = zoo::rollmean(OBS_VALUE, 12, fill = NA, align = "right"),
            `Inflation IPC hors loyers, hors tabac: Variation sur 12 mois de l'IPC hors loyers, hors tabac` = OBS_VALUE) %>%
  filter(month(date) %in% c(12, 3, 6, 9)) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  mutate(value_d12 = value/lag(value, 4) - 1) %>%
  ggplot() + ylab("Indice des loyers (simulé)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = value_d12, color = variable)) +
  scale_color_manual(values = c("blue", "red")) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.5, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 0.5),
                     labels = percent_format(accuracy = .1, prefix = ""))

2006-

Code
`IPC-2015` %>%
  filter(PRIX_CONSO %in% c("4600"),
         COICOP2016 %in% c("00", "SO"),
         MENAGES_IPC == "ENSEMBLE",
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M") %>%
  month_to_date %>%
  filter(date >= as.Date("2006-01-01")) %>%
  arrange(date) %>%
  transmute(date,
            `Inflation Indice des loyers (IRL):\nVariation sur 12 mois de la moyenne sur 12 mois de l'IPC hors loyers, hors tabac` = zoo::rollmean(OBS_VALUE, 12, fill = NA, align = "right"),
            `Inflation Indice des Prix à la Consommation (IPC-) hors loyers, hors tabac: \nVariation sur 12 mois de l'IPC hors loyers, hors tabac` = OBS_VALUE) %>%
  filter(month(date) %in% c(12, 3, 6, 9)) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  mutate(value_d12 = value/lag(value, 4) - 1) %>%
  na.omit %>%
  filter(date >= as.Date("2008-01-01")) %>%
  ggplot() + ylab("Indice des loyers (simulé)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = value_d12, color = variable)) +
  scale_color_manual(values = c("blue", "red")) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.45, 0.9),
        legend.title = element_blank(),
        legend.key.size= unit(1.0, 'cm')) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 0.5),
                     labels = percent_format(accuracy = .1, prefix = ""))

2008-

Code
table2 <- `IPC-2015` %>%
  filter(PRIX_CONSO %in% c("4600"),
         COICOP2016 %in% c("00", "SO"),
         MENAGES_IPC == "ENSEMBLE",
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M") %>%
  month_to_date %>%
  filter(date >= as.Date("2006-01-01")) %>%
  arrange(date) %>%
  transmute(date,
            `Inflation Indice des loyers (IRL):\nVariation sur 12 mois de la moyenne sur 12 mois de l'IPC hors loyers, hors tabac` = zoo::rollmean(OBS_VALUE, 12, fill = NA, align = "right"),
            `Inflation Indice des Prix à la Consommation (IPC-) hors loyers, hors tabac: \nVariation sur 12 mois de l'IPC hors loyers, hors tabac` = OBS_VALUE) %>%
  filter(month(date) %in% c(12, 3, 6, 9)) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  mutate(value_d12 = value/lag(value, 4) - 1) %>%
  na.omit %>%
  filter(date >= as.Date("2008-01-01"))
  

table2 %>%
  ggplot() + ylab("Indice des loyers (simulé)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = value_d12, color = variable)) +
  scale_color_manual(values = c("blue", "red")) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.45, 0.9),
        legend.title = element_blank(),
        legend.key.size= unit(1.0, 'cm')) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 0.5),
                     labels = percent_format(accuracy = .1, prefix = ""))

Mensuel

Code
`IPC-2015` %>%
  filter(PRIX_CONSO %in% c("4600"),
         COICOP2016 %in% c("00", "SO"),
         MENAGES_IPC == "ENSEMBLE",
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M") %>%
  month_to_date %>%
  arrange(date) %>%
  transmute(date,
            `Inflation Indice des loyers (IRL): Variation sur 12 mois de la moyenne sur 12 mois de l'IPC hors loyers, hors tabac` = zoo::rollmean(OBS_VALUE, 12, fill = NA, align = "right"),
            `Inflation IPC hors loyers, hors tabac: Variation sur 12 mois de l'IPC hors loyers, hors tabac` = OBS_VALUE) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  mutate(value_d12 = value/lag(value, 12) - 1) %>%
  ggplot() + ylab("Indice des loyers (simulé)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = value_d12, color = variable)) +
  scale_color_manual(values = c("blue", "red")) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.5, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 0.5),
                     labels = percent_format(accuracy = .1, prefix = ""))

Glissement annuel, Trimestriel

Tous

Code
`IPC-2015` %>%
  filter(PRIX_CONSO %in% c("4600", "SO"),
         COICOP2016 %in% c("00", "SO"),
         MENAGES_IPC == "ENSEMBLE",
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M") %>%
  select_if(~ n_distinct(.) > 1) %>%
  month_to_date %>%
  arrange(date) %>%
  left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
  left_join(COICOP2016, by = "COICOP2016") %>%
  group_by(Prix_conso) %>%
  filter(month(date) %in% c(12, 3, 6, 9)) %>%
  mutate(OBS_VALUE = OBS_VALUE/lag(OBS_VALUE, 4)-1,
         Prix_conso = ifelse(PRIX_CONSO == "SO", "Ensemble", Prix_conso)) %>%
  na.omit %>%
  ggplot() + ylab("Inflation sur un an (IPC, IPCH)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.35, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 0.5),
                     labels = percent_format(accuracy = .1, prefix = ""))

1998-

Code
`IPC-2015` %>%
  filter(PRIX_CONSO %in% c("4600", "SO"),
         COICOP2016 %in% c("00", "SO"),
         MENAGES_IPC == "ENSEMBLE",
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M") %>%
  select_if(~ n_distinct(.) > 1) %>%
  month_to_date %>%
  arrange(date) %>%
  left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
  group_by(Prix_conso) %>%
  filter(month(date) %in% c(12, 3, 6, 9)) %>%
  mutate(OBS_VALUE = OBS_VALUE/lag(OBS_VALUE, 4)-1,
         Prix_conso = ifelse(PRIX_CONSO == "SO", "Ensemble", Prix_conso)) %>%
  filter(date >= as.Date("1998-01-01")) %>%
  na.omit %>%
  ggplot() + ylab("Glissement annuel") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 0.5),
                     labels = percent_format(accuracy = .1, prefix = ""))

2018-

Code
`IPC-2015` %>%
  filter(PRIX_CONSO %in% c("4600", "SO"),
         COICOP2016 %in% c("00", "SO"),
         MENAGES_IPC == "ENSEMBLE",
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M") %>%
  select_if(~ n_distinct(.) > 1) %>%
  month_to_date %>%
  arrange(date) %>%
  left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
  group_by(Prix_conso) %>%
  filter(month(date) %in% c(12, 3, 6, 9)) %>%
  mutate(OBS_VALUE = OBS_VALUE/lag(OBS_VALUE, 4)-1,
         Prix_conso = ifelse(PRIX_CONSO == "SO", "Ensemble", Prix_conso)) %>%
  filter(date >= as.Date("2018-01-01")) %>%
  na.omit %>%
  ggplot() + ylab("Glissement annuel") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  
  scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.35, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 0.5),
                     labels = percent_format(accuracy = .1, prefix = ""))

Evolution entre deux périodes de la moyenne sur 12 mois de l’indice des prix à la consommation

Il se déduit de l’indice du même trimestre de l’année précédente en lui appliquant l’évolution entre ces deux périodes de la moyenne sur douze mois consécutifs de l’indice des prix à la consommation hors tabac et hors loyers (IPC).

All

Code
`IPC-2015` %>%
  filter(PRIX_CONSO %in% c("4600", "SO"),
         COICOP2016 %in% c("00", "SO"),
         MENAGES_IPC == "ENSEMBLE",
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M") %>%
  select_if(~ n_distinct(.) > 1) %>%
  month_to_date %>%
  arrange(date) %>%
  left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
  group_by(Prix_conso) %>%
  filter(date >= as.Date("2000-01-01")) %>%
  mutate(OBS_VALUE_mean = zoo::rollmean(OBS_VALUE, 12, fill = NA, align = "right"),
         Prix_conso = ifelse(PRIX_CONSO == "SO", "Ensemble", Prix_conso)) %>%
  filter(month(date) %in% c(12, 3, 6, 9)) %>%
  mutate(OBS_VALUE_mean_d1 = OBS_VALUE_mean/lag(OBS_VALUE_mean, 4)-1,
         OBS_VALUE_d1 = OBS_VALUE/lag(OBS_VALUE, 4)-1) %>%
  na.omit %>%
  ggplot() + ylab("Indice des loyers (simulé)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE_d1, color = Prix_conso)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.8, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 0.5),
                     labels = percent_format(accuracy = .1, prefix = ""))

2017-

Code
`IPC-2015` %>%
  filter(PRIX_CONSO %in% c("4600", "SO"),
         COICOP2016 %in% c("00", "SO"),
         MENAGES_IPC == "ENSEMBLE",
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M") %>%
  select_if(~ n_distinct(.) > 1) %>%
  month_to_date %>%
  arrange(date) %>%
  left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
  group_by(Prix_conso) %>%
  filter(date >= as.Date("2000-01-01")) %>%
  mutate(OBS_VALUE_mean = zoo::rollmean(OBS_VALUE, 12, fill = NA, align = "right"),
         Prix_conso = ifelse(PRIX_CONSO == "SO", "Ensemble", Prix_conso)) %>%
  filter(month(date) %in% c(12, 3, 6, 9)) %>%
  mutate(OBS_VALUE_mean_d1 = OBS_VALUE_mean/lag(OBS_VALUE_mean, 4)-1,
         OBS_VALUE_d1 = OBS_VALUE/lag(OBS_VALUE, 4)-1) %>%
  na.omit %>%
  filter(date >= as.Date("2017-01-01")) %>%
  ggplot() + ylab("Indice des loyers (simulé)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE_d1, color = Prix_conso)) +
  
  scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 0.5),
                     labels = percent_format(accuracy = .1, prefix = ""))

Ensemble

All

Code
`IPC-2015` %>%
  filter(PRIX_CONSO %in% c("4600", "SO"),
         COICOP2016 %in% c("00", "SO"),
         MENAGES_IPC == "ENSEMBLE",
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M") %>%
  select_if(~ n_distinct(.) > 1) %>%
  month_to_date %>%
  arrange(date) %>%
  left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
  group_by(Prix_conso) %>%
  filter(date >= as.Date("2000-01-01")) %>%
  mutate(OBS_VALUE_mean = zoo::rollmean(OBS_VALUE, 12, fill = NA, align = "right"),
         Prix_conso = ifelse(PRIX_CONSO == "SO", "Ensemble", Prix_conso)) %>%
  filter(month(date) %in% c(12, 3, 6, 9)) %>%
  transmute(date, 
            OBS_VALUE_mean_d1 = OBS_VALUE_mean/lag(OBS_VALUE_mean, 4)-1,
            OBS_VALUE_d1 = OBS_VALUE/lag(OBS_VALUE, 4)-1,
            Prix_conso) %>%
  na.omit %>%
  gather(variable, value, -date, -Prix_conso) %>%
  mutate(variable = case_when(variable == "OBS_VALUE_mean_d1" ~ "Inflation de l'IRL (Indice de Référence des Loyers) - Moyenne 12 mois",
                              variable == "OBS_VALUE_d1" ~ "Inflation de l'IPC (Indice des Prix à la Consommation) - Instantanée")) %>%
  ggplot() + ylab("Indice des loyers (simulé)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = value, color = Prix_conso, linetype = variable)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.4, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 0.5),
                     labels = percent_format(accuracy = .1, prefix = ""))

2017-

Code
`IPC-2015` %>%
  filter(PRIX_CONSO %in% c("4600", "SO"),
         COICOP2016 %in% c("00", "SO"),
         MENAGES_IPC == "ENSEMBLE",
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M") %>%
  select_if(~ n_distinct(.) > 1) %>%
  month_to_date %>%
  arrange(date) %>%
  left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
  group_by(Prix_conso) %>%
  filter(date >= as.Date("2000-01-01")) %>%
  mutate(OBS_VALUE_mean = zoo::rollmean(OBS_VALUE, 12, fill = NA, align = "right"),
         Prix_conso = ifelse(PRIX_CONSO == "SO", "Ensemble", Prix_conso)) %>%
  filter(month(date) %in% c(12, 3, 6, 9)) %>%
  transmute(date, 
            OBS_VALUE_mean_d1 = OBS_VALUE_mean/lag(OBS_VALUE_mean, 4)-1,
            OBS_VALUE_d1 = OBS_VALUE/lag(OBS_VALUE, 4)-1,
            Prix_conso) %>%
  na.omit %>%
  filter(date >= as.Date("2017-01-01")) %>%
  gather(variable, value, -date, -Prix_conso) %>%
  mutate(variable = case_when(variable == "OBS_VALUE_mean_d1" ~ "Inflation de l'IRL (Indice de Référence des Loyers) - Moyenne 12 mois",
                              variable == "OBS_VALUE_d1" ~ "Inflation de l'IPC (Indice des Prix à la Consommation) - Instantanée")) %>%
  ggplot() + ylab("Indice des loyers (simulé)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = value, color = Prix_conso, linetype = variable)) +
  
  scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.4, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 0.5),
                     labels = percent_format(accuracy = .1, prefix = ""))