knitr::opts_chunk$set(prompt = TRUE, comment = NA)

hmkzLAPV

R balík pro výuku předmětu Hydrologické dopady klimatické změny (FŽP, ČZU) v roce 2016.

Instalace

library(devtools)
install_github("hanel/hmkzLAPV")

nebo

library(devtools)
install_git("https://github.com/hanel/hmkzLAPV.git")

Úvod

Informace o jednotlivých LAPV jsou dostupné v tabulce lapv_tab:

library(hmkzLAPV)
data(lapv_tab)
head(lapv_tab)

Data pro jednotlivá LAPV načtete pomocí funkce get_lapv_data, jejímž argumentem je ID, tj. identifikátor povodí:

dta = get_lapv_data("AMERIKA")
head(dta)

Data obsahují:

tab = data.table(names(dta), c('datum', 'ID povodí', 'simulované srážky', 'simulovaná teplota', 'globální klimatický model', 'ID běhu modelu', 'ID simulace', 'pozorované srážky', 'pozorovaná teplota', 'odtok pro pozorované podmínky (simulace modelu Bilan) '))
knitr::kable(tab, col.names = c('název', 'význam'), format = 'markdown')

Zadání:

1. CVIČENÍ

(A).

(B)onus

devtools::install_github("jbkunst/highcharter")
ydta = mon2yr(dta)
library(highcharter)
library(magrittr)
highchart(type = "stock") %>% hc_tooltip(valueDecimals = 2) %>% 
  hc_add_series_times_values(ydta$DTM, ydta$obs_P, name = "Pozorovaná srážka", showInLegend = TRUE) %>% 
  hc_add_series_times_values(ydta$DTM, ydta$sim_P, name = "Simulovaná srážka") %>%
  hc_add_theme(hc_theme_darkunica())

viz http://jkunst.com/highcharter

(*)


2. CVIČENÍ

(A).

hurst = function(x, N){
  res = data.frame(N = 10:100  )
  for (i in 1:nrow(res) ) {
    sx = sample(x, res[i, "N"])
    R = diff(range(sx))
    s = sd(sx)
    N = res[i, "N"]
    res[i, "R"] = R
    res[i, "sigma"] = s
    res[i, "k1"] = R / (s * N^.5)
    res[i, "k2"] = log(R/s) / log(N/2)
  }
  return(res)
}

(B)onus

Někdy by bylo výhodné, aby grafy v RStudiu umožňovaly alespoň omezenou interaktivitu. Jednou z možností je využítí balíku manipulate, který umožňuje velmi jednoduchou implementaci ovládacích prvků (slider, picker, checkbox a button)

Příklady s využitím dat z balíku hmkzLAPV:

př1:

library(manipulate)

dta = get_lapv_data('AMERIKA')
mdta = mon2yr(dta)

manipulate(
  plot(mdta$DTM, y, type = type),
  y = picker("sim_P" = mdta$sim_P, "obs_P" = mdta$obs_P),
  type = picker("Points" = "p", "Line" = "l", "Step" = "s")
)

př2:

manipulate(
  {plot(mdta$DTM, y1, type = 'l', col = col1, ylim = range(y1, y2))
   lines(mdta$DTM, y2, col = col2)  
    },
    y1 = picker("sim_P" = mdta$sim_P, "obs_P" = mdta$obs_P),
    y2 = picker("sim_P" = mdta$sim_P, "obs_P" = mdta$obs_P),
    col1 = slider(1, 650, initial = 300),
    col2 = slider(1, 650, initial = 200)
)

př3:

manipulate(
  plot(mdta$DTM, y, type = type, xlim = c(mdta$DTM[from], mdta$DTM[to])),
  y = picker("sim_P" = mdta$sim_P, "obs_P" = mdta$obs_P),
  type = picker("Points" = "p", "Line" = "l", "Step" = "s"), 
  from = slider(1, nrow(mdta)),
  to = slider(1, nrow(mdta), initial = nrow(mdta))
)

(*)


3. CVIČENÍ - KOREKCE SYSTEMATICKÝCH CHYB

(A).

  1. Zjistěte, jak se liší průměrné srážky a teplota v simulaci od pozorování
  2. Vykreslete empirické distribuční funkce pozorovaných a simulovaných srážek/teploty pro všechny data a jednotlivé měsíce
  3. Zjistěte, jaká je chyba v distribuční funkci simulovaných srážek a teploty pro měsíční (všechny vs jednotlivé měsíce) a roční data
  4. Vyhlaďte rozdíly pomocí filtru loess
  5. Opravte simulované veličiny
  6. Vytvořte funkci umožňující korekci distribuční funkce pro jednotlivé měsíce

4. CVIČENÍ - HYDROLOGICKÝ MODEL A SYNTÉZA

Nové funkce v balíku:

Stručný úvod do modelu Bilan

library(bilan)

# načti data
dta = get_lapv_data("AMERIKA")

# vytvoř model 
b = bil.lapv("AMERIKA")

# model existuje, má příslušné parametry:
bil.get.params(b)

# ale žádná data
bil.get.data(b)

# Proto nahrajeme do modelu příslušná data z data.tablu dta
bil.set.values(b, dta[, .(DTM, P = obs_P, T = obs_T)])

# poté stačí spočítat potenciální evapotranspiraci 
bil.pet(b)

# a model spustit
res = bil.run(b)

res

Zadání:

PROTOKOL



hanel/hmkzLAPV documentation built on May 17, 2019, 2:28 p.m.