HICP (2015 = 100) - annual data (average index and rate of change)

Data - Eurostat

Info

source dataset .html .RData
eurostat nama_10_co3_p3 2024-11-08 2024-10-09
eurostat prc_hicp_aind 2024-11-05 2024-11-21
eurostat prc_hicp_cow 2024-11-05 2024-10-08
eurostat prc_hicp_manr 2024-11-21 2024-11-21

Data on inflation

source dataset .html .RData
bis CPI 2024-07-01 2022-01-20
ecb CES 2024-11-21 2024-11-21
eurostat nama_10_co3_p3 2024-11-08 2024-10-09
eurostat prc_hicp_cow 2024-11-05 2024-10-08
eurostat prc_hicp_ctrb 2024-11-05 2024-10-08
eurostat prc_hicp_inw 2024-11-05 2024-11-21
eurostat prc_hicp_manr 2024-11-21 2024-11-21
eurostat prc_hicp_midx 2024-11-01 2024-11-21
eurostat prc_hicp_mmor 2024-11-05 2024-11-21
eurostat prc_ppp_ind 2024-11-05 2024-10-08
eurostat sts_inpp_m 2024-06-24 2024-11-21
eurostat sts_inppd_m 2024-11-21 2024-11-21
eurostat sts_inppnd_m 2024-06-24 2024-11-21
fred cpi 2024-11-21 2024-11-21
fred inflation 2024-11-21 2024-11-21
imf CPI 2024-06-20 2020-03-13
oecd MEI_PRICES_PPI 2024-09-15 2024-04-15
oecd PPP2017 2024-04-16 2023-07-25
oecd PRICES_CPI 2024-04-16 2024-04-15
wdi FP.CPI.TOTL.ZG 2023-01-15 2024-09-18
wdi NY.GDP.DEFL.KD.ZG 2024-09-18 2024-09-18

LAST_COMPILE

LAST_COMPILE
2024-11-22

Last

Code
prc_hicp_aind %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  head(2) %>%
  print_table_conditional()
time Nobs
2023 32544
2022 32567

unit

Code
prc_hicp_aind %>%
  left_join(unit, by = "unit") %>%
  group_by(unit, Unit) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
unit Unit Nobs
INX_A_AVG Annual average index 278034
RCH_A_AVG Annual average rate of change 262188
CID_EA NA 638

coicop

Code
prc_hicp_aind %>%
  left_join(coicop, by = "coicop") %>%
  group_by(coicop, Coicop) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

geo

Code
prc_hicp_aind %>%
  left_join(geo, by = "geo") %>%
  group_by(geo, Geo) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(Geo)),
         Flag = paste0('<img src="../../bib/flags/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

time

Code
prc_hicp_aind %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Quality

Code
compare_coicop <- function(CPname, legend.position = c(0.2, 0.2)){
  
  inflation <- prc_hicp_aind %>%
  filter(unit == "INX_A_AVG",
          coicop == CPname,
         geo %in% c("DE", "FR", "IT", "ES", "NL")) %>%
  left_join(geo, by = "geo") %>%
  select(geo, Geo, coicop, time, values) %>%
  arrange(time) %>%
  year_to_date %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  group_by(Geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  ungroup %>%
  mutate(variable = "Price index")
  
  cons <- nama_10_co3_p3 %>%
  filter(unit == "PD15_EUR",
         geo %in% c("FR", "NL", "IT", "DE", "ES"),
         coicop == CPname) %>%
  left_join(geo, by = "geo") %>%
  year_to_date %>%
  filter(date >= as.Date("1996-01-01")) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  group_by(Geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  ungroup %>%
  mutate(variable = "Consumption Deflator")
  
  cons %>%
  bind_rows(inflation) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color, linetype = variable)) +
  theme_minimal()  + 
  scale_color_identity() + xlab("") + ylab(CPname) +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = legend.position,
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 10))
}


compare_coicop2 <- function(CPname, CPname2){
  
  inflation <- prc_hicp_aind %>%
  filter(unit == "INX_A_AVG",
          coicop == CPname,
         geo %in% c("DE", "FR", "IT", "ES", "NL")) %>%
  left_join(geo, by = "geo") %>%
  select(geo, Geo, coicop, time, values) %>%
  arrange(time) %>%
  year_to_date %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  group_by(Geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  ungroup %>%
  mutate(variable = "Price index")
  
  cons <- nama_10_co3_p3 %>%
  filter(unit == "PD15_EUR",
         geo %in% c("FR", "NL", "IT", "DE", "ES"),
         coicop == CPname2) %>%
  left_join(geo, by = "geo") %>%
  year_to_date %>%
  filter(date >= as.Date("1996-01-01")) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  group_by(Geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  ungroup %>%
  mutate(variable = "Consumption Deflator")
  
  cons %>%
  bind_rows(inflation) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color, linetype = variable)) +
  theme_minimal()  + 
  scale_color_identity() + xlab("") + ylab(CPname) +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 10))
}

CP00

Code
compare_coicop2("CP00", "TOTAL")

CP09

Code
prc_hicp_aind %>%
  filter(unit == "INX_A_AVG",
         coicop %in% c("CP09"),
         geo %in% c("DE", "FR", "IT", "ES", "NL")) %>%
  left_join(geo, by = "geo") %>%
  select(geo, Geo, coicop, time, values) %>%
  arrange(time) %>%
  year_to_date %>%
  group_by(Geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot(.) + geom_line(aes(x = date, y = values, color = color)) + 
  theme_minimal() + xlab("") + ylab("CP09") +
  scale_x_date(breaks = seq(1960, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(seq(0, 200, 10), 2, 3, 5, 15, 8, 4)) +
  scale_color_identity() + add_5flags +
  theme(legend.position = "none")

CP08 - Communications

Annual Inflation

Code
inflation_CP08 <- prc_hicp_aind %>%
  filter(unit == "INX_A_AVG",
         coicop %in% c("CP08"),
         geo %in% c("DE", "FR", "IT", "ES", "NL")) %>%
  left_join(geo, by = "geo") %>%
  select(geo, Geo, coicop, time, values) %>%
  arrange(time) %>%
  year_to_date %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  group_by(Geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  ungroup %>%
  mutate(variable = "Price index")

inflation_CP08 %>%
  ggplot(.) + geom_line(aes(x = date, y = values, color = color)) + 
  theme_minimal() + xlab("") + ylab("CP08") +
  scale_x_date(breaks = seq(1960, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(seq(0, 200, 10), 2, 3, 5, 15, 8, 4)) +
  scale_color_identity() + add_5flags +
  theme(legend.position = "none")

Annual Consumption Deflator Inflation

Code
cons_CP08 <- nama_10_co3_p3 %>%
  filter(unit == "PD15_EUR",
         geo %in% c("FR", "NL", "IT", "DE", "ES"),
         coicop == "CP08") %>%
  left_join(geo, by = "geo") %>%
  year_to_date %>%
  filter(date >= as.Date("1996-01-01")) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  group_by(Geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  ungroup %>%
  mutate(variable = "Consumption Deflator")

cons_CP08 %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  theme_minimal()  + add_5flags +
  scale_color_identity() + xlab("") + ylab("Communications (08)") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 10))

Bind

Code
compare_coicop("CP08")

CP041

Bind

Code
compare_coicop("CP041", legend.position = c(0.2, 0.8))

CP041

Bind

Code
compare_coicop("CP04", legend.position = c(0.2, 0.8))

CP09

Bind

Code
compare_coicop("CP09")

CP091

Bind

Code
compare_coicop("CP091")

CP10

Bind

Code
compare_coicop("CP10", legend.position = c(0.2, 0.8))

CP11

Bind

Code
compare_coicop("CP11", legend.position = c(0.2, 0.8))

CP12

Bind

Code
compare_coicop("CP12", legend.position = c(0.2, 0.8))

CP082_083 - Telephone and telefax equipment

Code
prc_hicp_aind %>%
  filter(unit == "INX_A_AVG",
         coicop %in% c("CP082_083"),
         geo %in% c("DE", "FR", "IT", "ES", "NL")) %>%
  left_join(geo, by = "geo") %>%
  select(geo, Geo, coicop, time, values) %>%
  arrange(time) %>%
  year_to_date %>%
  group_by(Geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot(.) + geom_line(aes(x = date, y = values, color = color)) + 
  theme_minimal() + xlab("") + ylab("CP082_083") +
  scale_x_date(breaks = seq(1960, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(seq(0, 200, 10), 2, 3, 5, 15, 8, 4)) +
  scale_color_identity() + add_5flags +
  theme(legend.position = "none")

CP0820 - Telephone and telefax equipment

Code
prc_hicp_aind %>%
  filter(unit == "INX_A_AVG",
         coicop %in% c("CP0820"),
         geo %in% c("DE", "FR", "IT", "ES", "NL")) %>%
  left_join(geo, by = "geo") %>%
  select(geo, Geo, coicop, time, values) %>%
  arrange(time) %>%
  year_to_date %>%
  group_by(Geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot(.) + geom_line(aes(x = date, y = values, color = color)) + 
  theme_minimal() + xlab("") + ylab("CP0820 - Telephone and telefax equipment") +
  scale_x_date(breaks = seq(1960, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(seq(0, 200, 10), 2, 3, 5, 15, 8, 4)) +
  scale_color_identity() + add_3flags +
  theme(legend.position = "none")

CP091

Code
prc_hicp_aind %>%
  filter(unit == "INX_A_AVG",
         coicop %in% c("CP091"),
         geo %in% c("DE", "FR", "IT", "ES", "NL")) %>%
  left_join(geo, by = "geo") %>%
  select(geo, Geo, coicop, time, values) %>%
  arrange(time) %>%
  year_to_date %>%
  group_by(Geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot(.) + geom_line(aes(x = date, y = values, color = color)) + 
  theme_minimal() + xlab("") + ylab("CP091") +
  scale_x_date(breaks = seq(1960, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(seq(0, 200, 10), 2, 3, 5, 15, 8, 4)) +
  scale_color_identity() + add_5flags +
  theme(legend.position = "none")

CP08202 - Mobile Telephone equipment

Code
prc_hicp_aind %>%
  filter(unit == "INX_A_AVG",
         coicop %in% c("CP08202"),
         geo %in% c("DE", "FR", "IT", "ES", "NL")) %>%
  left_join(geo, by = "geo") %>%
  select(geo, Geo, coicop, time, values) %>%
  arrange(time) %>%
  year_to_date %>%
  group_by(Geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot(.) + geom_line(aes(x = date, y = values, color = color)) + 
  theme_minimal() + xlab("") + ylab("CP08202 - Mobile Telephone equipment") +
  scale_x_date(breaks = seq(1960, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(seq(0, 200, 10), 2, 3, 5, 15, 8, 4)) +
  scale_color_identity() + add_5flags +
  theme(legend.position = "none")

Greece, Europe, France, Spain, Italy, Germany

2011-2013 -

HICP

Code
prc_hicp_aind %>%
  filter(unit == "INX_A_AVG",
         coicop == "CP00",
         geo %in% c("EL", "FR", "ES", "IT", "DE")) %>%
  year_to_date %>%
  group_by(geo) %>%
  mutate(values = 100*values/values[date == as.Date("2011-01-01")]) %>%
  filter(date >= as.Date("2009-01-01"),
         date <= as.Date("2016-01-01")) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA", "Europe", Geo),
         Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot(.) + geom_line(aes(x = date, y = values, color = color)) + 
  theme_minimal() + xlab("") + ylab("100 = Janv. 2011") +
  scale_x_date(breaks = seq(1960, 2021, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_color_identity() + add_5flags +
  scale_y_log10(breaks = seq(0, 200, 2)) +
  theme(legend.position = "none",
        legend.title = element_blank())

Rents

Code
prc_hicp_aind %>%
  filter(unit == "INX_A_AVG",
         coicop == "CP041",
         geo %in% c("EL", "FR", "ES", "IT", "DE")) %>%
  year_to_date %>%
  group_by(geo) %>%
  mutate(values = 100*values/values[date == as.Date("2011-01-01")]) %>%
  filter(date >= as.Date("2009-01-01"),
         date <= as.Date("2016-01-01")) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA", "Europe", Geo),
         Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot(.) + geom_line(aes(x = date, y = values, color = color)) + 
  theme_minimal() + xlab("") + ylab("100 = Janv. 2011") +
  scale_x_date(breaks = seq(1960, 2021, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_color_identity() + add_5flags +
  scale_y_log10(breaks = seq(0, 200, 2)) +
  theme(legend.position = "none",
        legend.title = element_blank())

Real Rents

Code
prc_hicp_aind %>%
  filter(unit == "INX_A_AVG",
         coicop %in% c("CP041", "CP00"),
         geo %in% c("EL", "FR", "ES", "IT", "DE")) %>%
  left_join(geo, by = "geo") %>%
  select(geo, Geo, coicop, time, values) %>%
  spread(coicop, values) %>%
  mutate(values = 100*CP041/CP00) %>%
  year_to_date %>%
  group_by(geo) %>%
  mutate(values = 100*values/values[date == as.Date("2011-01-01")]) %>%
  filter(date >= as.Date("2009-01-01"),
         date <= as.Date("2016-01-01")) %>%
  mutate(Geo = ifelse(geo == "EA", "Europe", Geo),
         Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot(.) + geom_line(aes(x = date, y = values, color = color)) + 
  theme_minimal() + xlab("") + ylab("Real Rents (100 = Janv. 2011)") +
  scale_x_date(breaks = seq(1960, 2021, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_color_identity() + add_5flags +
  scale_y_log10(breaks = seq(0, 200, 2)) +
  theme(legend.position = "none",
        legend.title = element_blank())

Europe - Real Rents

Value

Code
prc_hicp_aind %>%
  filter(unit == "INX_A_AVG",
         coicop %in% c("CP041", "CP00"),
         geo %in% c("EA")) %>%
  left_join(tibble(geo = c("EA", "EA18", "EA19"),
                   Geo = c("Euro Area (time-dep geography)")), 
            by = "geo") %>%
  select(geo, Geo, coicop, time, values) %>%
  spread(coicop, values) %>%
  mutate(values = 100*CP041/CP00) %>%
  year_to_date %>%
  ggplot(.) + geom_line(aes(x = date, y = values)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1960, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 1)) +
  scale_color_manual(values = viridis(5)[1:4]) +
  theme(legend.position = c(0.5, 0.85),
        legend.title = element_blank())