knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>", 
  fig.height = 6,
  fig.width = 8,
  fig.path = "Finnish_ind/", 
  echo = FALSE, message = FALSE, warning = FALSE
)


# library(ficomp)

devtools::load_all()

library(dplyr)
library(forcats)
library(ggplot2)
library(eurostat)
library(tidyr)
library(ggptt)
library(glue)

set_proj_theme()

data("data_ilc", data_main_groups_a, ert_eff_ic_q, q_dat_oecd_ulc)

tukuseto_data <- read.csv2(here::here("data-raw/tukuseto_data.csv")) %>% 
  mutate_at(vars(-time), ~rebase(1/., time, base_year)) %>% 
  gather(nace0, tukuseto, -time)


geos <- tuku_geos

Tukuseto

Koko talouden nimelliset yksikkötyökustannukset

data_main_groups_a %>% 
  filter(nace0 == "total") %>% 
  left_join(data_ameco, by = c("geo", "time"), suffix = c("", "_ameco")) %>% 
  filter(geo == "FI") %>% 
  select(geo, time, nulc_aper, nulc_hw_va) %>% 
  gather(vars, values, -geo, -time) %>% 
  group_by(geo, vars) %>% 
  mutate(values = rebase(values, time, 2010)) %>% 
  ungroup() %>% 
  ggplot(aes(time, values, color = vars)) +
  geom_line() +
  the_title_blank(c("x", "l")) +
  labs(y = glue("Indeksi, {base_year} = 100"))
data_ameco %>% 
  filter(geo %in% geos, time >= 1998) %>%
  select(geo, time, nulc_aper) %>% 
  gather(vars, values, -geo, -time) %>% 
  group_by(geo, vars) %>% 
  mutate(values = rebase(values, time, base_year)) %>% 
  ungroup() %>% 
  translate(geo, setNames(names(geos), geos)) %>% 
  ggplot(aes(time, values, color = geo)) +
  geom_line() +
  the_title_blank(c("x", "l")) +
  labs(y = glue("Indeksi, {base_year} = 100"))

save_fig("nulc_tuku")
data_main_annual %>% 
  filter(geo %in% tuku_geos) %>%
  select(geo, time, nulc_aper) %>% 
  gather(vars, values, -geo, -time) %>% 
  group_by(geo, vars) %>% 
  mutate(values = rebase(values, time, base_year)) %>% 
  ungroup() %>% 
  translate(geo, setNames(names(geos), geos)) %>% 
  ggplot(aes(time, values, color = geo)) +
  geom_line() +
  the_title_blank(c("x", "l")) +
  labs(y = glue("Indeksi, {base_year} = 100"))

save_fig("nulc_tuku_like")
vars_rel <- c(nulc_aper_rel_ameco24 = "omassa valuutassa", nulc_aper_usd_rel_ameco24 = "samassa valuutassa")

data_ameco %>% 
  filter(geo == "FI", time >= 1998) %>%
  select(geo, time, names(vars_rel)) %>% 
  gather(vars, values, -geo, -time) %>% 
  group_by(geo, vars) %>% 
  mutate(values = rebase(values, time, base_year)) %>% 
  ungroup() %>% 
  translate(vars, vars_rel) %>% 
  ggplot(aes(time, values, color = vars)) +
  geom_line() +
  the_title_blank(c("x", "l")) +
  labs(y = glue("Indeksi, {base_year} = 100")) +
  the_legend_bot()

save_fig("nulc_rel_tuku")
data_main_annual %>% 
  filter(geo == "FI") %>% 
  select(geo, time, nulc_aper, lp_ind, d1_per_ind) %>% 
  gather(vars, values, -geo, -time) %>% 
  ggplot(aes(time, values, color = vars)) +
  geom_line() +
  the_title_blank(c("x", "l")) +
  labs(y = glue("Indeksi, {base_year} = 100"))
pdata_nulc <- 
  data_main_annual %>% 
  filter(geo == "FI") %>% 
  select(geo, time, nulc_aper, lp_ind, d1_per_ind) %>% 
  mutate(lp_ind = 1/lp_ind) %>% 
  gather(vars, values, -geo, -time) %>% 
  group_by(geo, vars) %>% 
  mutate(change = 100 * (values / lag(values, 1, order_by = time) -1)) 

ggplot(data = filter(pdata_nulc, vars != "nulc_aper"),
       aes(time, change, fill = vars)) +
  geom_col()+
  geom_line(data = filter(pdata_nulc, vars == "nulc_aper"),
            aes(color = vars)) +
  the_legend_bot() +
  scale_color_manual(values = ptt_pal(3)[3], guide = "none") +
  the_title_blank(c("x", "l")) +
  scale_fill_discrete(labels = simple_lab(var_labels_fi)) +
  labs(y = "%, muutos")

save_fig("nulc_change")
data_main_annual %>% 
  filter(geo == "FI") %>% 
  select(geo, time, nulc_aper_rel_ecfin37, lp_ind_rel_ecfin37, d1_per_ind_rel_ecfin37) %>%
  mutate_at(vars(lp_ind_rel_ecfin37),  ~(100 + 100 - .)) %>% 
  gather(vars, values, -geo, -time) %>% 
  ggplot(aes(time, values, color = vars)) +
  geom_line() +
  the_title_blank(c("x", "l")) +
  labs(y = glue("Indeksi, {base_year} = 100"))

Tehdasteollisuuden kilpailukykyindikaattori

Tukuseton kuvio 8 sisältää tehdasteollisuuden nimeliset yksikkötyökustannukset samassa valuutassa suhteutettuna BIS:n painoilla. Laskennassa näyttäisi olevan kuitenkin virheitä sekä painoissa että varsinkin euroaikaa edeltävissä valuuttakursseissa.

Tukuseton tiedot perustuvat Conference Boardin [https://www.conference-board.org/ilcprogram/index.cfm?id=30139] ILC-tietokannan tietoihin. Alkuperäisillä tiedoilla sarjat poikkeavat Tukuseton julkaisun tiedoista. Alla itse lasketut verrattuna tukuseton sarjoihin perusvuodella 2010 ja käänteisesti kuin tukuseton julkaisussa.

pdat_tuku <- 
  data_ilc %>% 
  filter(geo == "FI") %>% 
  select(geo, time, nace0, ilc = nulc_va_eur_rel_tuku16) %>% 
  left_join(tukuseto_data, by = c("time", "nace0"))

pdat_tuku %>% 
  gather(vars, values, -geo, -time, -nace0) %>% 
  translate(nace0, nace_labels_fi) %>% 
  translate(vars, c(ilc = "laskettu", tukuseto = "TUKUSETO")) %>% 
  ggplot(aes(time, values, color = vars)) +
  facet_wrap(~nace0) +
  geom_line() +
  the_title_blank(c("x", "l")) +
  labs(y = glue("Indeksi, {base_year} = 100")) +
  the_legend_bot()

save_fig("tukuseto_ilc")  

ILC, tukuseto ja data_main_groups_a sarjat teollisuudelle.

data_main_groups_a %>% 
  select(geo, time, nace0, data_main = nulc_va_eur_rel_ecfin37) %>% 
  mutate(nace0 = recode(nace0, manu_ex26 = "namu_ex26_27")) %>% 
  right_join(pdat_tuku, by = c("time", "geo", "nace0")) %>% 
  filter(nace0 == "manu") %>% 
  gather(vars, values, -geo, -time, -nace0) %>% 
  ggplot(aes(time, values, color = vars)) +
  facet_wrap(~nace0) +
  geom_line()

Koko talouden kilpailukykyindikaattori

Koko talouden kilpailukykyindikaattori on Komission hinta- ja kilpailukykyindikaattoreista reaalinen efektiivinen valuuttakurssi yksikkötyökustannuksilla eli nimellinen efektiivinen valuuttakurssi deflatoituna suhteellisilla yksikkötyökustannuksilla.

(https://ec.europa.eu/info/business-economy-euro/indicators-statistics/economic-databases/price-and-cost-competitiveness_en)

Komission indikaattoreissa on nimellinen ja reaalinen efektiivinen valuuttakurssi. Niistä on laskettu suhtelliset yksikkötyökustannukset, jotka ovat AMECOn vuositiedoista spline-metodilla estimoidut neljännesvuositiedot.

Indikaattorina käytetään 37 teollisuusmaan kauppapainoilla painotettuja tietoja.

pdata_ulc_reer <- 
  ert_eff_ic_q %>% 
  select(geo, time, exch_rt, values) %>% 
  filter(geo == "FI", exch_rt %in% c("NEER_IC37", "REER_IC37_ULCT")) %>% 
  spread(exch_rt, values) %>% 
  mutate(ulct = 100 * REER_IC37_ULCT / NEER_IC37) %>% 
  gather(vars, values, -geo, -time)

pdata_ulc_reer %>% 
  ggplot(aes(time, values, colour = vars)) +
  geom_line() +
  # geom_point(aes(x = time_a), data = filter(pdata_ulc_reer, vars == "nulc_aper_rel_ameco37")) +
  the_legend_bot() +
  the_title_blank(c("x", "l")) +
  labs(y = glue("Indeksi"))

Sama muutoksina. Vastaa Tukuseton kuviota 10 neljännesvuosimuutoksina.

pdata_ulc_reer_change <- pdata_ulc_reer %>% 
  filter(time >= "2004-01-01") %>%
  group_by(geo, vars) %>% 
  mutate(change = 100 * (values / lag(values, 4, order_by = time) -1))

ggplot(data = 
         filter(pdata_ulc_reer_change, 
                vars != "REER_IC37_ULCT"),
       aes(time, change, fill = vars)) +
  geom_col() +
  geom_line(data = 
              filter(pdata_ulc_reer_change, 
                     vars == "REER_IC37_ULCT"),
            aes(color = vars)) +
  the_legend_bot() +
  scale_color_manual(values = ptt_pal(2)[2], guide = "none") +
  scale_fill_discrete(
    labels = c(ulct = "Suhteellinen yksikkötyökustannus",
               NEER_IC37 = "Nimellinen efektiivinen valuuttakurssi",
               REER_IC37_ULCT = "Reaalinen efektiivinen valuuttakurssi")) +
  lims(x = c(as.Date("2005-01-01"), NA)) +
  the_title_blank(c("x", "l")) +
  guides(fill = guide_legend(nrow = 2)) +
  labs(y = "%, muutos vuoden takaa")

save_fig("reer_ulc")

Neljännesvuosittainen yksikkötyökustannus on siis interpoloitu spline-menetelmällä vuositiedosta. Estimointiin on nähtävästi käytetty myös komission ennustetta. Alla estimointi ilman ennustetta. Myös vuoden 1994 on vähän arvoitus, koska vuositiedossa ei 37-indikaattorissa ole tietoja vuodelle.

Mukana myös aito neljännesvuosi sarja OECD:n ULC-tietokannasta. Siinä tosin ei ihan kaikkia maita.

dat_oecd_ulc37 <- ulc_oecd_dat %>%
  filter(time >= "1996-01-01", geo %in% setdiff(unique(weights_ecfin37$geo), c("CH", "TR", "PL"))) %>%
  spread(na_item, values) %>%
  group_by(geo) %>%
  transmute(
    time = time,
    nulc_aper = rebase(NULC_APER, time = time, baseyear = base_year)
  ) %>%
  group_by(time) %>%
  mutate(nulc_aper_rel_ecfin37 = weight_index(nulc_aper, geo, lubridate::year(time), weight_df = weights_ecfin37)) %>%
  ungroup()

pdat_ameco_q <- data_ameco %>% 
  filter(geo == "FI", time >= 1995) %>% 
  mutate(time = lubridate::ymd(paste0(time, "-07-01")),
         time_a = time) %>%
  select(geo, time, time_a, nulc_aper_rel_ameco37) %>% 
  mutate(nulc_aper_rel_ameco37 = rebase(nulc_aper_rel_ameco37, time, base_year)) %>% 
  right_join(distinct(filter(ert_eff_ic_q, geo == "FI"), geo, time)) %>% 
  filter(time <= max(time_a, na.rm = TRUE) + months(0),
         time >= min(time_a, na.rm = TRUE) - months(0)) %>% 
  mutate(nulc_aper_rel_ameco37_s = stats::spline(time, nulc_aper_rel_ameco37, 
                   xout = time)$y)


pdata_ulc_smooth <- ert_eff_ic_q %>% 
  select(geo, time, exch_rt, values) %>% 
  filter(geo == "FI", exch_rt %in% c("NEER_IC37", "REER_IC37_ULCT")) %>% 
  spread(exch_rt, values) %>% 
  mutate(ulct = 100 * REER_IC37_ULCT / NEER_IC37) %>% 
  select(-REER_IC37_ULCT, - NEER_IC37) %>% 
  left_join(select(dat_oecd_ulc37, geo, time, oecd_ulc = nulc_aper_rel_ecfin37), by = c("geo", "time")) %>%
  left_join(select(pdat_ameco_q, geo, time, time_a, 
                   "ilman ennustetta" = nulc_aper_rel_ameco37_s), by = c("geo", "time")) %>% 
  gather(vars, values, -geo, -time, -time_a)

pdata_ulc_smooth %>% 
  mutate(vars = fct_relevel(vars, "ulct")) %>% 
  ggplot(aes(time, values, colour = vars)) +
  geom_line() +
  # geom_point(aes(x = time_a), data = filter(pdata_ulc_reer, vars == "nulc_aper_rel_ameco37")) +
  the_legend_bot() +
  the_title_blank(c("x", "l")) 

Komission vaihtoehtoiset kilpailukykyindikaattorit eri maaryhmillä, 37 sisältää ainoana EU:n ulkopuolisia maita. Sen takia sen vaihtelut suuremmat.

ert_eff_ic_q %>% 
  filter(geo == "FI", grepl("REER.*ULCT", exch_rt)) %>% 
  mutate(exch_rt = simple_lab(exch_rt, 2, "_")) %>% 
  ggplot(aes(time, values, colour = exch_rt)) +
  geom_line() +
  # geom_point(aes(x = time_a), data = filter(pdata_ulc_reer, vars == "nulc_aper_rel_ameco37")) +
  the_legend_bot() +
  the_title_blank(c("x", "l")) +
  labs(y = glue("Indeksi, 2010 = 100"))

save_fig("REER_comp")

EU:n kilpailukykyindikaattori eli reaalinen efektiivinen valuuttakurssi, jossa deflaattorina on käytetty nimellisiä yksikkötyökustannuksia omassa valuutassa on sama asia kuin suhteelliset yksikkötyökustannukset samassa valuutassa. Kuviossa ero tulee siitä, että siinä vuosi nulc_aper_usd_rel_ameco37 on muunnettu suoraan neljännesvuositiedoksi ja REER on laskettu muunnetun yksikkötyökustannuksen ja valuuttakurssin kautta.

pdat_ameco_q_rel <- data_ameco %>% 
  filter(geo == "FI", time >= 1995) %>% 
  mutate(time = lubridate::ymd(paste0(time, "-07-01")),
         time_a = time) %>%
  select(geo, time, time_a, nulc_aper_usd_rel_ameco37) %>% 
  mutate(nulc_aper_usd_rel_ameco37 = rebase(nulc_aper_usd_rel_ameco37, time, base_year)) %>% 
  right_join(distinct(filter(ert_eff_ic_q, geo == "FI"), geo, time)) %>% 
  filter(time <= max(time_a, na.rm = TRUE) + months(0),
         time >= min(time_a, na.rm = TRUE) - months(0)) %>% 
  mutate(nulc_aper_usd_rel_ameco37_s = stats::spline(time, nulc_aper_usd_rel_ameco37, 
                   xout = time)$y) %>% 
  select(geo, time, nulc_aper_usd_rel_ameco37_s)

ert_eff_ic_q %>% 
  filter(geo == "FI", grepl("REER_IC37.*ULCT", exch_rt)) %>% 
  select(geo, time, exch_rt, values) %>% 
  spread(exch_rt, values) %>% 
  left_join(pdat_ameco_q_rel, by = c("geo", "time")) %>% 
  gather(vars, values, -geo, -time) %>% 
  ggplot(aes(time, values, colour = vars)) +
  geom_line() +
  the_legend_bot() +
  the_title_blank(c("x", "l")) +
  labs(y = glue("Indeksi"))

Suomen pankki

Koko talouden vaihtosuhdekorjatut yksikkötyökustannukset

Vaihtosuhdekorjautut yksikkötyökustannukset ovat kehittyneet viime vuosina saman suuntaisesti kuin yksikkötyökustannukset ylipäätään. Koska vaihtosuhde ei ole juuri muuttunut. Nokia aikaan korjauksella oli jonkin verran merkitystä.

Taso

trans_vars <- c(nulc_aper = "normaali",
                nulc_aper_atot = "vaihtosuhdekorjattu")

data_main_annual %>% 
  select(geo, time, nulc_aper_atot, nulc_aper, nulc_aper_atot_rel_ecfin37, nulc_aper_rel_ecfin37) %>%
  filter(geo == "FI") %>% 
  # mutate_at(vars(nulc_aper_atot, nulc_aper), ~rebase(., time, baseyear = 2005)) %>% 
  gather(vars, values, -time, - geo) %>% 
  separate(vars, into = c("vars", "rel"), sep = "_rel_") %>% 
  mutate(rel = if_else(is.na(rel), "indeksi", "suhteessa")) %>% 
  translate(vars, trans_vars) %>% 
  ggplot(aes(time, values, color = vars)) +
  geom_line() +
  facet_wrap(~ rel) +
  scale_x_continuous(labels = no_century) +
  the_title_blank(c("x", "l")) +
  the_legend_bot() +
  labs(y = glue("indeksi, {base_year} = 100"))

save_fig("nulc_atot_pan")

Muutos

data_main_annual %>% 
  select(geo, time, nulc_aper_atot, nulc_aper) %>%
  filter(geo == "FI") %>% 
  gather(vars, taso, -time, - geo) %>% 
  group_by(vars, geo) %>% 
  mutate(muutos = 100 * (taso / lag(taso, 1, order_by = time) - 1)) %>% 
  ungroup() %>% 
  translate(vars, trans_vars) %>% 
  ggplot(aes(time, muutos, color = vars)) +
  geom_line() +
  the_title_blank(c("x", "l")) +
  labs(y = "%") +
  geom_h0()

Suhteessa

Suhteelliset yksikkötyökustannukset omassa valuutassa, r length(unique(data_main_groups_a$geo)) kilpailijamaata.

data_main_annual %>% 
  select(geo, time, nulc_aper_atot_rel_ecfin37, nulc_aper_rel_ecfin37) %>%
  filter(geo == "FI") %>% 
  # mutate_at(vars(nulc_aper_atot_rel_ecfin37, nulc_aper_rel_ecfin37), ~rebase(., time, baseyear = 2005)) %>% 
  gather(vars, values, -time, - geo) %>% 
  mutate(vars = gsub("_rel_ecfin37", "", vars)) %>% 
  translate(vars, trans_vars) %>% 
  ggplot(aes(time, values, color = vars)) +

  geom_line()

Suhteellisen indikaattorin muutos

data_main_annual %>% 
  select(geo, time,nulc_aper_atot_rel_ecfin37, nulc_aper_rel_ecfin37) %>%
  filter(geo == "FI") %>% 
  gather(vars, taso, -time, - geo) %>% 
  group_by(vars, geo) %>% 
  mutate(muutos = 100 * (taso / lag(taso, 1, order_by = time) - 1)) %>% 
  ungroup() %>% 
  mutate(vars = gsub("_rel_ecfin37", "", vars)) %>% 
  translate(vars, trans_vars) %>% 
  ggplot(aes(time, muutos, color = vars)) +
  geom_line() +
  the_title_blank(c("x", "l")) +
  labs(y = "%") +
  geom_h0()

Tehdasteollisuuden reaaliset yksikötyökustannukset

data_main_groups_a %>%
  filter(geo == "FI",
         nace0 == "manu") %>% 
  select(geo, time, nace0, nulc_hw_va, nulc_hw_va_rel_ecfin37,  rulc_hw_va, rulc_hw_va_rel_ecfin37) %>% 
  gather(vars, values, nulc_hw_va, nulc_hw_va_rel_ecfin37,  rulc_hw_va, rulc_hw_va_rel_ecfin37) %>% 
  separate(vars, into = c("vars", "rel"), sep = "_rel_") %>% 
  mutate(rel = if_else(is.na(rel), "indeksi", "suhteessa")) %>% 
  translate(vars, var_labels_fi, simple = TRUE, parts = 2) %>%
  ggplot(aes(time, values, colour = vars)) +

  geom_line() +
  facet_wrap(~ rel) +
  the_title_blank(c("x", "l")) +
  labs(y = "indeksi, 2010 = 100") +
  the_legend_bot()

save_fig("rulc_comp_manu")
data_main_groups_a %>%
  filter(geo == "FI",
         nace0 == "total") %>% 
  select(geo, time, nace0, nulc_hw_va, nulc_hw_va_rel_ecfin37,  rulc_hw_va, rulc_hw_va_rel_ecfin37) %>% 
  gather(vars, values, nulc_hw_va, nulc_hw_va_rel_ecfin37,  rulc_hw_va, rulc_hw_va_rel_ecfin37) %>% 
  separate(vars, into = c("vars", "rel"), sep = "_rel_") %>% 
  mutate(rel = if_else(is.na(rel), "indeksi", "suhteessa")) %>% 
  translate(vars, var_labels_fi, simple = TRUE, parts = 2) %>%
  ggplot(aes(time, values, colour = vars)) +
  geom_line() +
  facet_wrap(~ rel) +
  the_title_blank(c("x", "l")) +
  labs(y = "indeksi, 2010 = 100") +
  the_legend_bot()

save_fig("rulc_comp_total")

Kotimarkkinatoimialojen yksikkötyökustan-nukset tai yksikkötyökustannukset tehdas-teollisuudelle välituotteita tuottavilla toi-mialoilla.



pttry/ficomp documentation built on June 11, 2024, 9:53 p.m.