knitr::opts_chunk$set(echo = TRUE, message = FALSE)


library(robonomistClient)
library(pttrobo)
library(tidyverse)
library(lubridate)
library(pttdatahaku)
library(statfitools)


# devtools::load_all(path = '../pttrobo/')
devtools::load_all()

read_ennuste_data <- function(ennuste_data_file) {
  readxl::read_excel(ennuste_data_file)
}

# ennuste_data <-
  # read_ennuste_data("/Documents and Settings/PekkaKinnunen/OneDrive - Pellervon Taloustutkimus PTT ry/ME/Taulut ME/Ennuste kokoomataulukko_kevät_2022.xlsx")
ennuste_data <-
  read_ennuste_data("~/../Pellervon Taloustutkimus PTT ry/Ennuste - Taulut Metsä/ptt_ennusteet_MA_2022_1.xlsx")|> 
  separate(col = sarja_nmi, sep = "_", into = c("sarja_nmi", "luokka"))

# colnames(ennuste_data)
start_time <- "2014-01-01"

data_kv_hinta <- purrr::map(purrr::set_names(c("kuusitukki", "mäntykuitu", "kuusikuitu", "mäntytukki")), 
                     ~readxl::read_xlsx(
                       "~/../Pellervon Taloustutkimus PTT ry/Ennuste - Taulut Metsä/kv_puunhinta.xlsx", 
                       sheet = .x, skip = 1)|> 
  mutate(time = lubridate::ym(time)) |> 
    gather(geo, value, -time)|>
    mutate(geo = as_factor(geo)) |> 
  group_by(geo) |> 
  mutate(value = rebase(value, time, 2020)) |> 
  ungroup()) 

PTT Kevät 2022 ennustekuvat

ptt_data_robo(
  "tulli/uljas_sitc",
  dl_filter = list(
    "Tavaraluokitus SITC2" = c("25", "63", "64"),
    "Maa" = c("AA", "RU"),
    "Suunta" = c("Vienti määrämaittain"),
    "Indikaattorit" = "Tilastoarvo (euro)"
  )
) |> 
  filter(time >= start_time) |> 
  filter_recode(
    suunta = c("Vieni" = "Vienti määrämaittain"),
    tavaraluokitus_sitc2 = c(
     "Massa" = "25 (2002--.) Paperimassa",
     "Puutuotteet" = "63 (2002--.) Puu- ja korkkituotteet",
     "Paperi, kartonki ja tuotteet" = "64 (2002--.) Paperi ja pahvi sekä tuotteet niistä"
    )
  ) |> 
  mutate(maa = statfitools::extract_code(maa)) |> 
  spread(maa, value) |> 
  mutate(value = 100 * RU / AA) |> 
  ptt_plot(
    grouping = tavaraluokitus_sitc2,
              title = "Venäjän osuus viennistä",
              subtitle = "%",
              caption = "Lähde: Tulli, PTT") |> 
   ptt_plot_create_widget()

Metsäteollisuuden viennin arvo

ptt_data_robo("luke/04_Metsa/04_Talous/06_Metsateollisuuden_ulkomaankauppa/02_Tuonti_ja_vienti_kuukausittain.px") |> 
  filter(time >= start_time) |> 
  filter_recode(
    kauppasuunta = "Vienti",
    muuttuja = "Arvo, milj. e",
    nimike = c(
      "Massa" = "....Massa",
      "Paperi" = "....Paperi",
      "Kartonki" = "....Kartonki",
      "Puutuotteet" = "...PUUTUOTETEOLLISUUS"
    )
  )|>
  group_by(across(!c(time, value))) |> 
  mutate(value = 12 * trend_series(value, time, x11="") / 1000) |>
  ungroup() |> 
  ptt_plot(
    grouping = nimike,
    title = "Metsäteollisuuden viennin arvo",
    subtitle = "Mrd. euroa, trendi vuositasolle korottettuna",
    caption =  "Lähde: Luke ja PTT",
    rangeslider = FALSE,
    zeroline = T,
    hovertext =  list(rounding = 1, unit = "mrd €", extra = "")
  ) |>
  ptt_plot_add_prediction(filter(ennuste_data, luokka == "vientiarvo")) |>
  ptt_plot_create_widget()

Kemiallisen hinnat

ptt_data_robo("luke/04_Metsa/04_Talous/06_Metsateollisuuden_ulkomaankauppa/02_Tuonti_ja_vienti_kuukausittain.px") |> 
  filter(time >= start_time) |> 
  filter_recode(
    kauppasuunta = "Vienti",
    muuttuja = "Yksikköarvo, e/yksikkö",
    nimike = c(
      "Massa" = "....Massa",
      "Paperi" = "....Paperi",
      "Kartonki" = "....Kartonki"
    )
  )|>
  group_by(across(!c(time, value))) |> 
  # mutate(value = 12 * trend_series(value, time, x11="") / 1000) |> 
  ungroup() |> 
  ptt_plot(
    grouping = nimike,
    title = "Kemiallisen metsäteollisuuden vientihinnat",
    subtitle = "euroa / tonni",
    caption =  "Lähde: Luke ja PTT",
    rangeslider = FALSE,
    zeroline = F,
    hovertext =  list(rounding = 1, unit = "€/t", extra = "")
  ) |>
  ptt_plot_add_prediction(filter(ennuste_data, luokka == "vientihinta")) |>
  ptt_plot_create_widget()

Kartongin vientihinta

ptt_data_robo("luke/04_Metsa/04_Talous/06_Metsateollisuuden_ulkomaankauppa/02_Tuonti_ja_vienti_kuukausittain.px") |> 
  filter(time >= start_time) |> 
  filter_recode(
    kauppasuunta = "Vienti",
    muuttuja = "Yksikköarvo, e/yksikkö",
    nimike = c(
      "Kartonki" = "....Kartonki"
    )
  )|>
  group_by(across(!c(time, value))) |> 
  # mutate(value = 12 * trend_series(value, time, x11="") / 1000) |> 
  ungroup() |> 
  ptt_plot(
    grouping = nimike,
    title = "Kartongin vientihinta",
    subtitle = "euroa / tonni",
    caption =  "Lähde: Luke ja PTT",
    rangeslider = FALSE,
    zeroline = F,
    hovertext =  list(rounding = 1, unit = "€/t", extra = "")
  ) |>
  ptt_plot_add_prediction(filter(ennuste_data, luokka == "vientihinta")) |>
  ptt_plot_create_widget()

Massan vientihinta

ptt_data_robo("luke/04_Metsa/04_Talous/06_Metsateollisuuden_ulkomaankauppa/02_Tuonti_ja_vienti_kuukausittain.px") |> 
  filter(time >= start_time) |> 
  filter_recode(
    kauppasuunta = "Vienti",
    muuttuja = "Yksikköarvo, e/yksikkö",
    nimike = c(
      "Massa" = "....Massa"
    )
  )|>
  group_by(across(!c(time, value))) |> 
  # mutate(value = 12 * trend_series(value, time, x11="") / 1000) |> 
  ungroup() |> 
  ptt_plot(
    grouping = nimike,
    title = "Massan vientihinta",
    subtitle = "euroa / tonni",
    caption =  "Lähde: Luke ja PTT",
    rangeslider = FALSE,
    zeroline = F,
    hovertext =  list(rounding = 1, unit = "€/t", extra = "")
  ) |>
  ptt_plot_add_prediction(filter(ennuste_data, luokka == "vientihinta")) |>
  ptt_plot_create_widget()

Kemiallisen metsäteollisuuden vientimäärä

ptt_data_robo("luke/04_Metsa/04_Talous/06_Metsateollisuuden_ulkomaankauppa/02_Tuonti_ja_vienti_kuukausittain.px") |> 
  filter(time >= start_time) |> 
  filter_recode(
    kauppasuunta = "Vienti",
    muuttuja = "Määrä, yksikköä",
    nimike = c(
      "Massa" = "....Massa",
      "Paperi" = "....Paperi",
      "Kartonki" = "....Kartonki"
    )
  )|>
  group_by(across(!c(time, value))) |> 
  mutate(value = 12 * trend_series(value, time, x11="") ) |>
  ungroup() |> 
  ptt_plot(
    grouping = nimike,
    title = "Kemiallisen metsäteollisuuden vientimäärä",
    subtitle = "1000 tonni",
    caption =  "Lähde: Luke ja PTT",
    rangeslider = FALSE,
    zeroline = F,
    hovertext =  list(rounding = 1, unit = "", extra = "")
  ) |>
  ptt_plot_add_prediction(filter(ennuste_data, luokka == "vientimaara")) |>
  ptt_plot_create_widget()

Paperin vientimäärä

ptt_data_robo("luke/04_Metsa/04_Talous/06_Metsateollisuuden_ulkomaankauppa/02_Tuonti_ja_vienti_kuukausittain.px") |> 
  filter(time >= start_time) |> 
  filter_recode(
    kauppasuunta = "Vienti",
    muuttuja = "Määrä, yksikköä",
    nimike = c(
      "Paperi" = "....Paperi"
    )
  )|>
  group_by(across(!c(time, value))) |> 
  mutate(value = 12 * trend_series(value, time, x11="") ) |>
  ungroup() |> 
  ptt_plot(
    grouping = nimike,
    title = "Paperin vientimäärä",
    subtitle = "1000 tonni",
    caption =  "Lähde: Luke ja PTT",
    rangeslider = FALSE,
    zeroline = F,
    hovertext =  list(rounding = 1, unit = "", extra = "")
  ) |>
  ptt_plot_add_prediction(filter(ennuste_data, luokka == "vientimaara")) |>
  ptt_plot_create_widget()

Mekaaninen metsäteollisuus

Sahatavaran vientimäärä

ptt_data_robo("luke/04_Metsa/04_Talous/06_Metsateollisuuden_ulkomaankauppa/02_Tuonti_ja_vienti_kuukausittain.px") |>
  filter(time >= start_time) |> 
  filter_recode(
    kauppasuunta = "Vienti",
    muuttuja = "Määrä, yksikköä",
    nimike = c(
      "Sahatavara" = "....Sahatavara", 
      "Mäntysahatavara" = ".....Mäntysahatavara", 
      "Kuusisahatavara" = ".....Kuusisahatavara"
    )
  )|>
  group_by(across(!c(time, value))) |> 
  mutate(value = 12 * trend_series(value, time, x11="") ) |>
  ungroup() |> 
  ptt_plot(
    grouping = nimike,
    title = "Sahatavaran vientimäärä",
    subtitle = "1000 tonni, trendi vuositasolle korotettuna",
    caption =  "Lähde: Luke ja PTT",
    rangeslider = FALSE,
    zeroline = F,
    hovertext =  list(rounding = 1, unit = "", extra = "")
  ) |>
  ptt_plot_add_prediction(filter(ennuste_data, luokka == "vientimaara")) |>
  ptt_plot_create_widget()

Sahatavaran vientihinta

ptt_data_robo("luke/04_Metsa/04_Talous/06_Metsateollisuuden_ulkomaankauppa/02_Tuonti_ja_vienti_kuukausittain.px") |>
  filter(time >= start_time) |> 
  filter_recode(
    kauppasuunta = "Vienti",
    muuttuja = "Yksikköarvo, e/yksikkö",
    nimike = c(
      "Mäntysahatavara" = ".....Mäntysahatavara", 
      "Kuusisahatavara" = ".....Kuusisahatavara"
    )
  )|>
  group_by(across(!c(time, value))) |> 
  ungroup() |> 
  ptt_plot(
    grouping = nimike,
    title = "Sahatavaran vientihinta",
    subtitle = "€/m3",
    caption =  "Lähde: Luke ja PTT",
    rangeslider = FALSE,
    zeroline = F,
    hovertext =  list(rounding = 1, unit = "", extra = "")
  ) |>
  ptt_plot_add_prediction(filter(ennuste_data, luokka == "vientihinta")) |>
  ptt_plot_create_widget()

Vaneerin vientihinta

ptt_data_robo("luke/04_Metsa/04_Talous/06_Metsateollisuuden_ulkomaankauppa/02_Tuonti_ja_vienti_kuukausittain.px") |>
  filter(time >= start_time) |> 
  filter_recode(
    kauppasuunta = "Vienti",
    muuttuja = "Yksikköarvo, e/yksikkö",
    nimike = c(
      "Havuvaneri" = ".....Havuvaneri", 
      "Lehtivaneri" = ".....Lehtivaneri"
    )
  )|>
  group_by(across(!c(time, value))) |> 
  ungroup() |> 
  ptt_plot(
    grouping = nimike,
    title = "Vanerin vientihinnat",
    subtitle = "€/m3",
    caption =  "Lähde: Luke ja PTT",
    rangeslider = FALSE,
    zeroline = F,
    hovertext =  list(rounding = 1, unit = "", extra = "")
  ) |>
  ptt_plot_add_prediction(filter(ennuste_data, luokka == "vientihinta")) |>
  ptt_plot_create_widget()

Metsätalous

Puun käyttö

ptt_data_robo_l("luke/04_Metsa/04_Talous/08_Metsateollisuuden_puunkaytto/04_metsateol_puunk_tavaralajeittain_1860.px") |>
    filter(time >= start_time) |> 
  filter_recode(
    alkupera = c("Kotimainen" = "Kotimainen puu",
                 "Ulkomainen" = "Tuontipuu"), 
    puutavaralaji = c("Raakapuu yhteensä") 
  ) |> 
  ptt_plot(
    grouping = alkupera,
    title = "Metsäteollisuuden puunkäyttö",
    subtitle = "Milj. m3, vuosi 2021 arvio",
    caption = "Lähde: Luke ja PTT",
    rangeslider = F,
    hovertext =  list(dateformat="Annual", rounding = 2, unit = "milj. m3", extra = ""),
    plot_type = c("bar"),
    plot_mode = "stack"
  ) |>
  ptt_plot_add_prediction(filter(ennuste_data, luokka == "puunkaytto"), n_obs = 3) |>
  ptt_plot_create_widget()

Hakkuut

data("luke/04_Metsa/02_Rakenne_ja_tuotanto/06_Puun_markkinahakkuut/04_Vuositilastot/01a_Teollisuuspuun_hakkuut_maak_v.px") |> 
  mutate(time = as.Date(paste0(str_extract(Vuosi, "[0-9]*"), "-01-01"))) |>
  statfitools::clean_names() |> 
  filter(time >= start_time) |> 
    filter_recode(
  maakunta = c("KOKO MAA"),
  omistajaryhma = c(
    "Yhtiöt ja valtio" = ".Metsäteollisuus ja valtio",
    "Yksityiset" = ".Yksityismetsät, yhteensä"

  ),
  puutavaralaji = c("KAIKKI PUUTAVARALAJIT YHTEENSÄ")
  ) |> 
  mutate(value = value / 1000) |> 
  ptt_plot(
    grouping = omistajaryhma,
    title = "Markkinahakkuut",
    subtitle = "Milj. m3",
    caption =  "Lähde: Luke ja PTT",
    rangeslider = FALSE,
    zeroline = T,
    hovertext =  list(rounding = 1, unit = "", extra = ""),
    plot_type = c("bar"),
    plot_mode = "stack"
  ) |>
  ptt_plot_add_prediction(filter(ennuste_data, luokka == "hakkuut")) |>
  ptt_plot_create_widget()
ptt_data_robo("luke/04_Metsa/02_Rakenne_ja_tuotanto/06_Puun_markkinahakkuut/02_Kuukausitilastot/01_Teollisuuspuun_hakkuut_kk.px") |> 
  filter(time >= start_time) |> 
  filter_recode(
    omistajaryhma = c(
      "Yhteensä" = "Kaikki yhteensä",
      "Yksityiset" = ".Yksityismetsät, yhteensä",
      "Metsäteollisuus" = ".Metsäteollisuus"
    ),
    puutavaralaji = c("Kaikki puutavaralajit yhteensä")
  ) |> 
    group_by(across(!c(time, value))) |>
  mutate(value = 12 * trend_series(value, time, x11="") /1000 ) |>
  ungroup() |>
    ptt_plot(
    grouping = omistajaryhma,
    title = "Markkinahakkuut kuukausittain",
    subtitle = "Milj. m3, valtion hakkuut puuttuvat",
    caption =  "Lähde: Luke ja PTT",
    rangeslider = FALSE,
    zeroline = T,
    hovertext =  list(rounding = 1, unit = "", extra = "")
  ) |>
  ptt_plot_create_widget()
ptt_data_robo(
  "luke/04_Metsa/04_Talous/02_Teollisuuspuun_kauppa/02_Kuukausitilastot/01a_Kantohinnat_kk.px"
) |>
  filter(time >= start_time) |> 
  filter_recode(
    hinta_alue = c("KOKO MAA"),
    hakkuutapa = c("Pystyhakkuut yhteensä"),
    puutavaralaji = c(
      "Mäntytukki",
      "Kuusitukki",
      "Koivutukki"
    )
  )  |> 
    ptt_plot(
    grouping = puutavaralaji,
    title = "Tukkipuun kantohinnat",
    subtitle = "euroa / m3",
    caption =  "Lähde: Luke ja PTT",
    rangeslider = FALSE,
    zeroline = T,
    # axis_limits = list(y = c(30, 70)),
    hovertext =  list(rounding = 1, unit = "", extra = "")
  ) |>
  ptt_plot_add_prediction(filter(ennuste_data, luokka == "kantohinta")) |>
  ptt_plot_create_widget()
ptt_data_robo(
  "luke/04_Metsa/04_Talous/02_Teollisuuspuun_kauppa/02_Kuukausitilastot/01a_Kantohinnat_kk.px"
) |>
  filter(time >= start_time) |> 
  filter_recode(
    hinta_alue = c("KOKO MAA"),
    hakkuutapa = c("Pystyhakkuut yhteensä"),
    puutavaralaji = c(
     "Mäntykuitu"  = "Mäntykuitupuu",
     "Kuusikuitu"  = "Kuusikuitupuu",
     "Koivukuitu"  = "Koivukuitupuu"
    )
  )  |> 
    ptt_plot(
    grouping = puutavaralaji,
    title = "Kuitupuun kantohinnat",
    subtitle = "euroa / m3",
    caption =  "Lähde: Luke ja PTT",
    rangeslider = FALSE,
    zeroline = T,
    # axis_limits = list(y = c(10, 24)),
    hovertext =  list(rounding = 1, unit = "", extra = "")
  ) |>
  ptt_plot_add_prediction(filter(ennuste_data, luokka == "kantohinta")) |>
  ptt_plot_create_widget()

Kantorahatulot

ptt_data_robo_l("luke/04_Metsa/04_Talous/16_Kantorahatulot/01_Bruttokantorahat_v_omistajaryhma.px") |> 
  filter_recode(
    omistajaryhma = c(".Yksityismetsät, yhteensä"), 
    puutavaralaji = c("Bruttokantorahatulot" = "Kaikkiaan"), 
    metsakeskusalue = c("KOKO MAA")
  ) |> 
  mutate(value = value / 1000) |> 
  filter(time >= start_time) |> 
    ptt_plot(
    grouping = puutavaralaji,
    title = "Yksityismetsien bruttokantorahatulot",
    subtitle = "miljoonaa euroa, nimellinen",
    caption = "Lähde: Luke ja PTT",
    rangeslider = F,
    hovertext =  list(dateformat="Annual", rounding = 2, unit = "Milj. €", extra = ""),
    plot_type = c("bar"),
    plot_mode = "stack"
  ) |>
  ptt_plot_add_prediction(filter(ennuste_data)) |>
  ptt_plot_create_widget()

Kv-hinnat

Kuusitukki

data_kv_hinta[["kuusitukki"]] |> 
  ptt_plot(
    grouping = geo,
    title = "Kuusitukin hinnat kansainvälisesti",
    subtitle = "Indeksi, 2020 = 100",
    caption =  "Lähde: Luke, Skogsstyrelsen, RMK, ČSÚ, Statistik Austria, Destatis ja PTT",
    rangeslider = FALSE,
    zeroline = F,
    hovertext =  list(rounding = 1, unit = "", extra = "")
  ) |>
  ptt_plot_create_widget()

Mäntytukki

data_kv_hinta[["mäntytukki"]] |> 
  ptt_plot(
    grouping = geo,
    title = "Mäntytukin hinnat kansainvälisesti",
    subtitle = "Indeksi, 2020 = 100",
    caption =  "Lähde: Luke, Skogsstyrelsen, RMK, ČSÚ, Statistik Austria, Destatis ja PTT",
    rangeslider = FALSE,
    zeroline = F,
    hovertext =  list(rounding = 1, unit = "", extra = "")
  ) |>
  ptt_plot_create_widget()

Kuusikuitu

data_kv_hinta[["kuusikuitu"]] |> 
  ptt_plot(
    grouping = geo,
    title = "Kuusikuitupuun hinnat kansainvälisesti",
    subtitle = "Indeksi, 2020 = 100",
    caption =  "Lähde: Luke, Skogsstyrelsen, RMK, ČSÚ, Statistik Austria, Destatis ja PTT",
    rangeslider = FALSE,
    zeroline = F,
    hovertext =  list(rounding = 1, unit = "", extra = "")
  ) |>
  ptt_plot_create_widget()

Mäntykuitu

data_kv_hinta[["mäntykuitu"]] |> 
  ptt_plot(
    grouping = geo,
    title = "Mäntykuitupuun hinnat kansainvälisesti",
    subtitle = "Indeksi, 2020 = 100",
    caption =  "Lähde: Luke, Skogsstyrelsen, RMK, ČSÚ, Statistik Austria, Destatis ja PTT",
    rangeslider = FALSE,
    zeroline = F,
    hovertext =  list(rounding = 1, unit = "", extra = "")
  ) |>
  ptt_plot_create_widget()
ptt_data_robo("luke/04_Metsa/04_Talous/10_Puun_energiakaytto/22_tuontihake_arvio.px") |> 
  filter_recode(
  tuontihake = c("Tuontihake" = ".tuontihakkeen osuus metsähakkeen käytöstä lämpö- ja voimalaitoksissa, %")
  ) |> 
  filter(time >= start_time) |> 
    ptt_plot(
    grouping = tuontihake,
    title = "Tuontihakkeen käyttö lämpö- ja voimalaitoksissa",
    subtitle = "%, osuus",
    caption = "Lähde: Luke ja PTT",
    rangeslider = F,
    hovertext =  list(dateformat="Annual", rounding = 2, unit = "Milj. €", extra = ""),
    plot_type = c("bar"),
    plot_mode = "stack"
  ) |>
  # ptt_plot_add_prediction(ennuste_data) |>
  ptt_plot_create_widget()

Hakkeen energiankäyttö

ptt_data_robo("luke/04_Metsa/04_Talous/10_Puun_energiakaytto/01b_metsahakkeen_kokkaytto_maak.px") |> 
  filter_recode(
  maakunta = c("KOKO MAA"),
  metsahake = c(
    "Lämpö- ja voimalaitokset" = ".Lämpö- ja voimalaitokset", 
    "Pientalot" = ".Pientalot")
  ) |> 
  filter(time >= start_time) |> 
    ptt_plot(
    grouping = metsahake,
    title = "Metsähakkeen energiankäyttö",
    subtitle = "Milj. m3",
    caption = "Lähde: Luke ja PTT",
    rangeslider = F,
    hovertext =  list(dateformat="Annual", rounding = 2, unit = "Milj. €", extra = ""),
    plot_type = c("bar"),
    plot_mode = "stack"
  ) |>
  ptt_plot_add_prediction(filter(ennuste_data, luokka == "metsähake")) |>
  ptt_plot_create_widget()

Upload

ptt_plot_upload_widgets()


pttry/pttrobo documentation built on March 5, 2025, 6:36 p.m.