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
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"))
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 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"))
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ä.
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")
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()
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()
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()
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")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.