knitr::opts_chunk$set(prompt = TRUE, comment = NA)
R balík pro výuku předmětu Hydrologické dopady klimatické změny (FŽP, ČZU) v roce 2016.
library(devtools) install_github("hanel/hmkzLAPV")
nebo
library(devtools) install_git("https://github.com/hanel/hmkzLAPV.git")
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')
(A).
mon2yr
)lm(log(R/sigma) ~ log(N/2))
, zjistěte hodnotu regresního koeficientu (h) a dokreslete přímku do grafutoyGen
h
(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
(*)
agg2
postupně agregujte data po dvojicích(A).
hurst
je nyní součástí balíku, v čem spočívají zásadní rozdíly mezi touto funkcí a (chybnou) funkcí, kterou jsme používali minule? Tj. 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) }
x
(např. pozorovaný odtok) simulujte pomocí funkce toyGen
veličiny s využitím bílého šumu (WN), autoregresního procesu prvního řádu (AR1), a fractional gaussian noise (FGN). Vykreslete tyto řady a řady kumulativních odchylek od průměru (použijte funkci plotGen
)attr(hurst(x), 'h')
)?pomocí opakovaného samplování určete 90% interval spolehlivosti pro odhady Hurstova koeficientu pro jednotlivé procesy
vykreslete časovou řadu (ročních) pozorovaných a simulovaných srážek nebo teploty a jejich kumulativní odchylky od průměru
(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)) )
(*)
agg2
postupně agregujte data po dvojicích(A).
correct
- provede korekci systematických chyb - viz ?correct
bil.lapv
- vytvoří instanci modelu Bilan s parametry pro zadanou LAPV - viz ?bil.lapv
bilan_2015-06-18.zip
ve složce materialy, verze pro linux a OS X viz bilan_2015-06-18.tar.gz
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
correct
zkorigujte simulované srážky a teplotybilan
DTM
- datumobs_RM
- odtok modelovaný na základě pozorovaných srážek a teplotysim_RM
- odtok modelovaný na základě simulovaných srážek a teploty z klimatického modelucor_RM
- odtok modelovaný na základě korigovaných srážek a teplotysim_RM
/obs_RM
a cor_RM
/obs_RM
pro jednotlivé kvantily distribuční funkce a měsíceAdd the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.