knitr::opts_chunk$set(echo = TRUE)


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


# 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 ME/Ennuste kokoomataulukko_kevät_2022.xlsx")

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

PTT Kevät 2022 ennustekuvat

Maailman vehnäntuotanto

cereals <- c("Wheat", "Corn", "Soybean")

ptt_data_robo("tidy/usda_psd") |> 
  filter(commodity_description %in% cereals,
         attribute_description %in% c( "Production"),
         str_detect(country_name, pattern = "EU", negate =T)) |>
  filter_recode(commodity_description = c(#"Maissi"= "Corn",
                                          "Vehnä" = "Wheat")) |> 
  group_by(attribute_description, market_year, commodity_description) |>
  summarise(value = sum(value, na.rm = T)/1000) |> 
  ungroup()  |> 
  mutate( 
    tiedot = "Vehnä", 
    time = lubridate::ymd(paste(market_year+1, "7", "1", sep = "-"))) |> 
  filter(time >= start_time) |> 
  ptt_plot(
    title=  "Maailman viljantuotanto",
    grouping = tiedot,
    subtitle = "milj. tonnia",
    caption =  "Lähde: USDA ja PTT",
    rangeslider = FALSE,
    zeroline = F,
    axis_limits = list(y = c(700, 800)),
    hovertext =  list(rounding = 1, unit = "milj. tonnia", extra = "")
  ) |> 
  ptt_plot_add_prediction(pred_data = ennuste_data |> filter(luokka == "Maailman viljantuotanto"),satovuosi = T) |>
  ptt_plot_create_widget()

Viljan tuotanto ja tuottajahinta Suomessa

# Viljan tuotanto Suomessa

ptt_data_robo("luke/02_Maatalous/04_Tuotanto/14_Satotilasto/03_Vilja-_ja_perunasato_1920-.px") |>
  filter(laji %in% c("Vehnä","Ruis","Ohra", "Kaura")) |>
  mutate(tiedot = laji) |>
  filter(time >= start_time) |>
  mutate(time = time + months(6)) |> 
   ptt_plot(
    grouping = tiedot,
    title = "Viljan tuotanto Suomessa",
    subtitle = "tuhatta tonnia",
    caption =  "Lähde: Luke ja PTT",
    rangeslider = FALSE,
    zeroline = F,
    hovertext =  list(rounding = 1, unit = "tuhatta tonnia", extra = "")
  ) |> 
  ptt_plot_add_prediction(pred_data = ennuste_data |> 
                            filter(luokka == "Viljan tuotanto Suomessa"), satovuosi = T) |>
  ptt_plot_create_widget()


# viljan tuottajahinta
ptt_data_robo_l("luke/02_Maatalous/06_Talous/02_Maataloustuotteiden_tuottajahinnat/07_Tuottajahinnat_Vilja_rypsi_rapsi_kk.px") |>
  filter(hinta == "Perushinta 1)") |>
  filter_recode( laji = c("Vehnä" = "VEHNÄ YHTEENSÄ 2)",
                          "Kaura" = "KAURA YHTEENSÄ 5)",
                          "Ohra" =  "OHRA YHTEENSÄ 3)")) |>
  mutate(tiedot = laji) |> 
  filter(time >= start_time) |>
  group_by(tiedot) |> 
  #mutate(value = 100*(value /lag(value, n = 12, order_by = time)-1)) |> 
  ungroup() |> 
  ptt_plot(
    title=  "Viljan tuottajahinnat Suomessa",
    grouping = tiedot,
    subtitle = "€ / tonni",
    caption =  "Lähde: Luke ja PTT",
    rangeslider = FALSE,
    zeroline = F,
    hovertext =  list(rounding = 1, unit = "€/tn", extra = "")
  ) |> 
  ptt_plot_add_prediction(pred_data = ennuste_data |> 
                            filter(luokka == "Viljan tuottajahinnat Suomessa"),
                          satovuosi = F) |>
  ptt_plot_create_widget()

Maidon tuotanto

# Maidon tuotanto 
# 
# ptt_data_robo("luke/02_Maatalous/04_Tuotanto/02_Maito-_ja_maitotuotetilasto/02_Kuukausitilastot/02_Meijerimaidon_tuotanto_kk.px") |>
#   mutate(year = lubridate::year(time)) |> 
#   filter_recode(
#   tieto = c("Vastaanotettu maitomäärä" = "VASTAANOTETTU MAITOMÄÄRÄ YHTEENSÄ (l) 2)")) |> 
#   group_by(tieto,year) |> 
#   summarise(value = sum(value, na.rm = T), .groups = "drop") |> 
#   ungroup() |> 
#   filter(year >= 2014, year < 2022) |> 
#   mutate(tiedot = tieto,
#          time = as.Date(paste(year, "1", "1", sep = "-"))) |> 
#   ptt_plot(
#   grouping = tiedot, 
#   title ="Maidon tuotanto Suomessa",subtitle = "Litraa",
#     caption  = "Lähde: Luke ja PTT",
#    rangeslider = FALSE,
#     zeroline = F,
#     hovertext =  list(rounding = 1, unit = "litraa", extra = "")
#   ) |> 
#   ptt_plot_add_prediction(pred_data = ennuste_data |> 
#                             filter(luokka == "Maidon tuotanto")) |>
#   ptt_plot_create_widget()

s1 <- ptt_data_robo("luke/02_Maatalous/04_Tuotanto/02_Maito-_ja_maitotuotetilasto/02_Kuukausitilastot/02_Meijerimaidon_tuotanto_kk.px") |>
  filter_recode(
  tieto = c("Vastaanotettu maitomäärä" = "VASTAANOTETTU MAITOMÄÄRÄ YHTEENSÄ (l) 2)")) |> 
  filter(time >= start_time) |> 
  mutate(value = 12 * statfitools::trend_series(value, time, x11 = "") / 1000000) |> 
  mutate(tiedot = "Kuukausi")

s2 <- ptt_data_robo_l("luke/02_Maatalous/04_Tuotanto/02_Maito-_ja_maitotuotetilasto/04_Vuositilastot/04_Maidon_kokonaistuotanto.px") |> 
  filter_recode(
  tuotanto_kaytto = c( "Maito yhteensä" = "MAITO YHTEENSÄ")) |> 
  mutate(tiedot = tuotanto_kaytto,
         time = time + months(6)) |> 
  filter(time >= start_time)

bind_rows(s1, s2)|> 
  ptt_plot(
  grouping = tiedot, 
  title ="Maidon tuotanto Suomessa",subtitle = "milj. litraa",
    caption  = "Lähde: Luke ja PTT",
   rangeslider = FALSE,
    zeroline = F, axis_limits = list(y = c(2000,2400)),
    hovertext =  list(rounding = 0, unit = "milj. litraa", extra = "")
  ) |> 
  ptt_plot_add_prediction(pred_data = ennuste_data |> 
                            filter(luokka == "Maidon tuotanto")) |>
  ptt_plot_create_widget()




# Maidon tuottajahinnat suomi ja eu
milk_countries <-
  c(
    Suomi = "FI",
    EU = "EU",

    Tanska = "DK",
    Saksa = "DE"
  )

# TODO: Suomi jää muiden viivojen alle mutta factor-levelit kääntämällä Suomi tulee keltaisella viivalla mikä näkyy vähän huonosti. 

ptt_data_robo_l("tidy/dg_agri") |>
  filter(product_desc %in% "Raw Milk",
         country %in% milk_countries) |>
  filter(time >= start_time) |>
  mutate(tiedot = factor(country, milk_countries, names(milk_countries))) |>

  ptt_plot(
  grouping = tiedot, 
  title ="Maidon tuottajahinta",subtitle = "€ / 100kg",
    caption  = "DG Agri ja PTT",
   rangeslider = FALSE,
    zeroline = F,
    hovertext =  list(rounding = 1, unit = "€ / 100kg", extra = "")
  ) |> 
  ptt_plot_add_prediction(pred_data = ennuste_data |> 
                            filter(luokka == "Maidon tuottajahinta keskimäärin")) |>
  ptt_plot_create_widget()

Lihantuotanto

# tuottajahinnat 

 ptt_data_robo("StatFin/hin/mthi/statfin_mthi_pxt_11fp.px") |> 
    filter_recode(
      maatalouden_tuottajahintaindeksin_luokitus =
             c("Naudanliha" = "111000 Nauta",
               "Sianliha" = "112000 Siat",
               "Siipikarjanliha" = "115000 Siipikarja"),
           tiedot = "Maatalouden tuottajahintaindeksi (2015=100)") |> 
  group_by(across(where(is.factor))) |> 
    mutate(value = pc(value, 12, order_by = time),
           luokka = "Lihan tuottajahinnat Suomessa",
           tiedot =  maatalouden_tuottajahintaindeksin_luokitus    ) |>
  ungroup() |> 
  filter(time >= start_time) |> 
  #drop_na() |> 
  #filter(tiedot == "Naudanliha") |> 
  #mutate(time = lubridate::year(time)) |> 
  #group_by(tiedot, time) |> 
  #summarise(value = mean(value, na.rm=T)) |> 
  ptt_plot(
    title=  "Lihan tuottajahinnat",
    grouping = tiedot,
    subtitle = "%, muutos vuoden takaa",
    caption =  "Lähde: Tilastokeskus ja PTT",
    rangeslider = FALSE,
    zeroline = F,
    hovertext =  list(rounding = 1, unit = "%", extra = "")
  ) |> 
  ptt_plot_add_prediction(pred_data = ennuste_data) |>
  ptt_plot_create_widget()


# # Lihan kulutus ja tuotanto
# 
# liha_kulutus <-
#   ptt_data_robo("luke/02_Maatalous/08_Muut/02_Ravintotase/02_Ravintotase.px") |>
#   filter_recode(
#     tieto = c(
#       Tuotanto = "Tuotanto",
#       "Kokonaiskulutus" = "KOTIMAINEN KÄYTTÖ YHTEENSÄ"
#     ),
#     elintarvike = c(
#       "Naudanliha" = "Naudanliha 4)",
#       "Sianliha" = "Sianliha 4)",
#       "Siipikarjanliha" = "Siipikarjanliha 4)")
#   ) |>
#   rename(laji = elintarvike) |>
#   mutate(tiedot = paste(laji, "n ",  tolower(tieto), sep = ""),
#          time = time + months(6)) |>
#   filter(time >= start_time) 
#   
# ptt_data_robo_l("StatFin/vrm/kuol/statfin_kuol_pxt_12at.px")
# 
# 
# liha_kulutus|>
#   filter(laji == "Sianliha") |>
#    ptt_plot(
#     title=  "Sianlihan kulutus ja tuotanto Suomessa",
#     grouping = tiedot,
#     subtitle = "milj. kg",
#     caption =  "Lähde: Luke ja PTT",
#     rangeslider = FALSE,
#     zeroline = F,
#     hovertext =  list(rounding = 1, unit = "milj. kg", extra = "")
#   ) |> 
#   ptt_plot_add_prediction(pred_data = ennuste_data) |>
#   ptt_plot_create_widget()
# 
# 
# liha_kulutus|>
#   filter(laji == "Naudanliha") |>
#   ptt_plot(
#     title = "Naudanlihan kulutus ja tuotanto Suomessa",
#     subtitle = "milj. kg",
#     grouping = tiedot,
#     subtitle = "milj. kg",
#     caption =  "Lähde: Luke ja PTT",
#     rangeslider = FALSE,
#     zeroline = F,
#     hovertext =  list(rounding = 1, unit = "milj. kg", extra = "")
#   ) |> 
#   ptt_plot_add_prediction(pred_data = ennuste_data |> filter(luokka %in% )) |>
#   ptt_plot_create_widget()
# 
# liha_kulutus|>
#   filter(laji == "Siipikarjanliha") |>
#   filter(time >= start_time) |>
#   aplot_lines(colour = tieto, title = "Siipikarjanlihan kulutus ja tuotanto Suomessa",
#               subtitle = "milj. kg",
#               source = "Luke")

Tuotantopanokset

# Tuotantopanokset

ptt_data_robo_l("StatFin/hin/ttohi/statfin_ttohi_pxt_11gv.px") |>
  filter_recode(maatalouden_tuotantovalineiden_ostohintaindeksin_luokitus =
                  c("Energia" = "202000 ENERGIA, VOITELUAINEET",
                    "Lannoitteet" = "203000 LANNOITTEET JA MAANPARANNUSAINEET",
                    "Rehut" =  "206000 ELÄINTEN REHUT"), #,
                    #"Tuotantotarvikkeet yhteensä" = "200000 MAATALOUDEN TUOTANTOTARVIKKEET JA PALVELUT (Panos 1)"),
                tiedot = "Maatalouden tuotantovälineiden ostohintaindeksin vuosimuutos (2015=100)") |>
  filter(time >= start_time) |>
  mutate(tiedot = maatalouden_tuotantovalineiden_ostohintaindeksin_luokitus ) |> 
    ptt_plot(
    title = "Maatalouden tuotantopanosten hinnat",
    grouping = tiedot,
    subtitle = "%, vuosimuutos",
    caption =  "Lähde: Luke ja PTT",
    rangeslider = FALSE,
    zeroline = F,
    hovertext =  list(rounding = 1, unit = "%", extra = "")
  ) |> 
  ptt_plot_add_prediction(pred_data = ennuste_data) |>
  ptt_plot_create_widget()

Maataloudentilit

# Yrittäjätulo
taloustilit <- ptt_data_robo_l("StatFin/maa/eaa/statfin_eaa_pxt_12d7.px") |>
  filter(maatalouden_taloustili %in% c("18 Maataloustoimialan tuotos (16 + 17)",
                                       "31 Yrittäjätulo (27 - 28 - 29 + 30)",
                                       "19 Välituotekäyttö yhteensä",
                                       "21 Kiinteän pääoman kuluminen",
                                       "23 Palkansaajakorvaukset",
                                       "28 Maanvuokrat",
                                       "29 Korot, maksetut",
                                       "30 Korot, saadut",
                                       "25 Muut tuotantotukipalkkiot",
                                       "18 Maataloustoimialan tuotos (16 + 17)")  ) |>
  filter_recode(tiedot =c("th" = "Tuottajahintaan, käyvin hinnoin,  miljoonaa euroa",
                       "ph" = "Perushintaan, käyvin hinnoin, miljoonaa euroa")) |>
  separate(col = maatalouden_taloustili , into = c("id", "selite"), sep = " ", extra = "merge")|>

  mutate(tili_tiedot = paste(tiedot,id, sep = "_")) |>
  pivot_wider(id_cols = time, names_from = tili_tiedot, values_from =  value) |>
  mutate(maatal_yht = ph_18-th_18,
         kulut_yht = ph_19 + ph_21+ph_23 + ph_28 - ph_30 + ph_29,
         yrittajatulo = ph_31,
         maatalous_tuet = maatal_yht + ph_25,
         markkinatulot = th_18) |>
  filter(time >= start_time) |> 
  select(maatalous_tuet, kulut_yht, yrittajatulo, markkinatulot, time) |>
  pivot_longer(cols = maatalous_tuet:markkinatulot, names_to ="tiedot") |>
  mutate(tiedot = recode(tiedot, !!! c("yrittajatulo"= "Yrittäjätulo",
                                       "markkinatulot" = "Tulot markkinoilta",
                                       "maatalous_tuet" = "Maataloustuet yhteensä",
                                       "kulut_yht"= "Kulut yhteensä")))



 ptt_plot(taloustilit,
  grouping = tiedot, 
  title ="Maatalouden taloustilit",
  subtitle = "milj. €",
    caption  = "Lähde: Tilastokeskus ja PTT",
   rangeslider = FALSE,
    zeroline = T,
    hovertext =  list(rounding = 0, unit = "milj. €", extra = "")
  ) |> 
  ptt_plot_add_prediction(pred_data = ennuste_data ) |>
  ptt_plot_create_widget()

Elintarviketeollisuus

## Elintarviketeollisuus volyymi, liikevaihto

# volyymi

elintarvike_vol <- 
  ptt_data_robo("StatFin/ttvi/statfin_ttvi_pxt_13bh.px") |>
  filter_recode(toimiala_tol_2008 =
                  c("Volyymi" = "10-11 Elintarviketeollisuus"  )) |>
  filter(tiedot == "Työpäiväkorjattu indeksisarja") |>
  mutate(tiedot = "Elintarviketeollisuus, tuotannon volyymi")

elintarvike_lv <-ptt_data_robo("StatFin/tlv/statfin_tlv_pxt_112c.px") |>
  filter_recode(toimiala =c("Liikevaihto" = "10-11 Elintarviketeollisuus"  )) |>
  filter(tiedot == "Työpäiväkorjattu indeksisarja",
         muuttuja == "Liikevaihto") |>
  mutate(tiedot = "Elintarviketeollisuus, liikevaihto")

bind_rows(elintarvike_vol, elintarvike_lv) |>
  filter(time >= start_time) |>
  group_by(tiedot) |> 
  mutate(value = statfitools::trend_series(value, time = time, x11="")) |> 
  mutate(value= 100*(value / lag(value, n = 12, order_by = time)-1)) |>
  ungroup() |> 
  ptt_plot( grouping = tiedot, 
  title = "Elintarviketeollisuus",
  subtitle = "%, vuosimuutos, trendi",
    caption  = "Lähde: Tilastokeskus ja PTT",
       hovertext =  list(rounding = 1, unit = "%", extra = "") )|> 
  ptt_plot_add_prediction(pred_data = ennuste_data ) |>
  ptt_plot_create_widget()




# Elintarvikkeiden tuonti ja vienti
dat_me_sitc <- ptt_data_robo(
  "tulli/uljas_sitc",
  dl_filter = list(
    "Tavaraluokitus SITC2" = c("00", "01", "02", "03", "04", "05", "06", "07", "08", "09",
                               "11"),
    "Maa" = "AA",
    "Suunta" = c("Vienti määrämaittain", "Tuonti alkuperämaittain"),
    "Indikaattorit" = "Tilastoarvo (euro)"
  )
) |>
  filter_recode(
    suunta = c("Elintarvikkeiden vienti" = "Vienti määrämaittain",
               "Elintarvikkeiden tuonti" = "Tuonti alkuperämaittain")
  )

dat_me_sitc |>
  filter(time >= start_time) |>
  group_by(maa, suunta, indikaattorit, time) |>
  summarise(value = 12 * sum(value)/1e6) |>
  mutate(tiedot = suunta,
         value = statfitools::trend_series(value, time = time, x11="")) |> 
  ungroup() |> 
  ptt_plot(
  grouping = tiedot, 
  title = "Elintarvikkeiden vienti ja tuonti",
  subtitle = "milj. euroa vuositasolle korotettuna",
    caption  = "Lähde: Tulli ja PTT",
   rangeslider = FALSE,
    zeroline = F,
    hovertext =  list(rounding = 0, unit = "milj. €", extra = "") )|> 
  ptt_plot_add_prediction(pred_data = ennuste_data ) |>
  ptt_plot_create_widget()

Ruuanhinta

# Elintarvikkeet

ptt_data_robo_l("StatFin/khi/statfin_khi_pxt_11xq.px") |> 
  filter(hyodyke %in% c("KULUTTAJAHINTAINDEKSI", "Elintarvikkeet", "ELINTARVIKKEET JA ALKOHOLITTOMAT JUOMAT")) |> 
  pivot_wider(names_from = indeksisarja, values_from =value, names_repair = "universal") |> 
  group_by(hyodyke) |> 
  mutate(across(where(is.numeric), ~100* (.x / lag(.x, n = 12, order_by = time) - 1))) |> 
  ungroup() |> 
  filter(time >= start_time) |> 
  mutate(value = coalesce(KHI.2015.100, KHI.2010.100, KHI.2005.100, KHI.2000.100)) |> 
  select(!c(KHI.2015.100, KHI.2010.100, KHI.2005.100, KHI.2000.100)) |> 
  mutate(tiedot = str_to_sentence(hyodyke)) |> 
  mutate(tiedot = fct_recode(tiedot, Kuluttajahinnat = "Kuluttajahintaindeksi")) |>
  ptt_plot(
  grouping = tiedot, 
  title = "Elintarvikkeiden hinnat",
  subtitle =  "%, muutos vuoden takaa",
    caption  = "", #Lähde: Tilastokeskus ja PTT",
   rangeslider = FALSE,
    zeroline = F,
    hovertext =  list(rounding = 1, unit = "%", extra = "") )|> 
  ptt_plot_add_prediction(pred_data = ennuste_data ) |>
  ptt_plot_create_widget()


# ptt_data_robo_l("StatFin/hin/khi/kk/statfin_khi_pxt_11xq.px") |> 
#   filter(hyodyke %in% c("KULUTTAJAHINTAINDEKSI", "Elintarvikkeet", "ELINTARVIKKEET JA ALKOHOLITTOMAT JUOMAT")) |> 
#   pivot_wider(names_from = indeksisarja, values_from =value, names_repair = "universal") |> 
#   group_by(hyodyke) |> 
#   mutate(across(where(is.numeric), ~100* (.x / lag(.x, n = 12, order_by = time) - 1))) |> 
#   ungroup() |> 
#   #filter(time >= start_time) |> 
#   mutate(value = coalesce(KHI.2015.100, KHI.2010.100, KHI.2005.100, KHI.2000.100)) |> 
#   select(!c(KHI.2015.100, KHI.2010.100, KHI.2005.100, KHI.2000.100)) |> 
#   mutate(tiedot = str_to_sentence(hyodyke)) |> 
#   mutate(tiedot = fct_recode(tiedot, Kuluttajahinnat = "Kuluttajahintaindeksi")) |>
#   mutate(year = lubridate::year(time)) |> 
#   group_by(year, hyodyke) |> 
#   summarise(value = mean(value, na.rm=T)) |> filter(hyodyke == "Elintarvikkeet") |>  view()

Elintarvikeryhmien hinnan muutos

ptt_data_robo_l("StatFin/hin/khi/kk/statfin_khi_pxt_11xd.px") |> 
  filter_recode(hyodyke = 
    c(
    "Viljatuotteet ja leipä" = "01.1.1 Viljatuotteet ja leipä",
    "Liha" = "01.1.2 Liha",
    "Maitotuotteet, juusto ja kananmunat" = "01.1.4 Maitotuotteet, juusto ja kananmunat"
    ),
         tiedot = c("Vuosimuutos (%)")
  ) |> 
  mutate(tiedot = hyodyke) |> 
  filter(time >= start_time) |> 
  ptt_plot(
  grouping = tiedot, 
  title = "Elintarvikkeryhmien hinnat",
    subtitle = "%, muutos vuoden takaa",
    caption  = "", # Lähde: Tilastokeskus ja PTT",
   rangeslider = FALSE,
    zeroline = F,
    hovertext =  list(rounding = 1, unit = "%", extra = "") )|> 
  ptt_plot_add_prediction(pred_data = ennuste_data |> 
                            filter(luokka == "Elintarvikkeiden hintojen muutos")) |>
  ptt_plot_create_widget()

Yrittäjätulo

ennuste_data |>
  filter(luokka %in% c("Tulot markkinoilta","Kulut yhteensä","Maataloustuet yhteensä","Yrittäjätulo")) |>
  pivot_longer(cols = `2014`:`2023`, names_to = "time", values_to = "value") |>
  filter(time < 2022) |>
  mutate(tiedot = sarja_nmi,
         time = ymd(paste(time, "-1-1", sep = ""))) |>
  ptt_plot(
    grouping = tiedot,
    title ="Maatalouden yrittäjätulo",
    subtitle = "milj. euroa",
    caption  = "Lähde: Eurostat ja PTT",
    rangeslider = FALSE,
    zeroline = F,
    hovertext =  list(rounding = 1, unit ="milj. euroa", extra = "")) |>
  ptt_plot_add_prediction(pred_data = ennuste_data |>
                            filter(luokka %in% c("Tulot markkinoilta","Kulut yhteensä","Maataloustuet yhteensä","Yrittäjätulo"))) |>
  ptt_plot_create_widget()

Upload

ptt_plot_upload_widgets()


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