diff --git a/06_odhad.qmd b/06_odhad.qmd index eb2aa0f..63945f0 100644 --- a/06_odhad.qmd +++ b/06_odhad.qmd @@ -107,7 +107,7 @@ Takto formulovaný bodový a intervalový je jednou z nejčastěji prováděnýc mean(x) ``` -Vidíme, že $x =$ `r x`. Pro tento průmer následně spočítáme interval spolehlivosti. +Vidíme, že $x =$ `r mean(x)`. Pro tento průmer následně spočítáme interval spolehlivosti. ## Intervalový odhad @@ -145,48 +145,52 @@ $$ f(y|\mu, \sigma) = \dfrac{1}{\sigma\sqrt{2\pi}}\exp\left[-\dfrac{(y-\mu)^2}{2\sigma^2}\right] $$ {#eq-maxlike-normalni-rozdeleni} +Věrohodnostní funkce je vyjádřena: + +$$ +L\left(\mu, \sigma^2; x_1, \ldots, x_n\right) = (2\pi\sigma^2)^{-n/2}\exp\left(-\dfrac{1}{2\sigma^2}\sum_{j=1}^{n}(x_j-\mu)^2\right) +$$ {#eq-05odhad-likelihood} + +Dva parametry $\mu$ a $\sigma$ jsou neznámé + ```{r} mu <- 5 # <1> sigma <- 1 # <1> -n <- 10000 # <2> +n <- 1000 # <2> x <- rnorm(n, mu, sigma^2) # <2> -likelihood <- function(params) { # <3> - mean_param <- params[1] # <3> - sd_param <- params[2]# <3> - return(prod(dnorm(x, mean = mean_param, sd = sd_param)))# <3> +norm.lik <- function(pars, x) { # <3> + n <- length(x) # <3> + mu <- pars[1] + sigma2 <- pars[2] + logl <- -0.5 * n * log(2*pi) - 0.5 * n * log(sigma2) - + (1/(2 * sigma2))*sum((x - mu)^2) # <3> + return(-logl)# <4> } -result <- optim(par = c(5, 1), #<4> - fn = function(params) -likelihood(params), #<4> - hessian = TRUE) #<4> - -mle_mean <- result$par[1] #<5> -mle_sd <- result$par[2] #<5> - -cat("MLE pro střední hodnotu:", mle_mean, "\n") -cat("MLE pro směrodatnou odchylku:", mle_sd, "\n") +result <- optim(par = c(0.1, 2), #<5> + fn = norm.lik, #<5> + x = x, #<5> + method = "BFGS", #<5> + hessian = TRUE) #<5> +mle_mean <- result$par[1] #<6> +mle_sigma2 <- result$par[2] #<6> ``` 1. Skutečné parametry $\mu$ a $\sigma$, které použijeme ke generování náhodných čísel. 2. Získáme pseudonáhodná čísla z Normálního rozdělení. -3. Definice věrohodnostní funkce. -4. S použitím funkce `optim()` hledáme maximálně věrohodný odhad. -5. Získané hodnoty odhadů. +3. Definice věrohodnostní funkce @eq-05odhad-likelihood, +4. je nutné pro optimalizační algoritmus vrátit v záporné hodnotě. +5. S použitím funkce `optim()` hledáme maximálně věrohodný odhad. Je potřeba zadat +počáteční parametry, optimalizovanou funkci, vektor měření a methodu řešení. Pokud +bychom chtěli i intervalový odhad, je nutné nechat spočítat hessián, neboli determinant +Hessovy matice. +6. Uložíme získané hodnoty odhadů. -Spočítejte hodnotu věrohodnostní funkce pro $X = 4$ - -```{r} -n <- 10000 -x <- rnorm(n, 5, 1) -L <- x*pnorm(x, mean = 5, sd = 1) -max(L) -boxplot(x) -curve(dnorm(x, 4, 1), xlim = c(0,8)) -curve(dlnorm(x, 1, 0.5), add = TRUE) -``` +MLE pro střední hodnotu: `r mle_mean`\ +MLE pro rozptyl: `r mle_sigma2`. ## $t$-test {#ttest} Testování hypotéz podrobněji probereme v @sec-testovani. Nyní si nicméně ukážeme, @@ -210,6 +214,5 @@ $$ pro $\mu < \mu_0$. $n-1$ je počet stupňů volnosti. ## Úloha 1. Spočítejte pomocí funkce `t.test` intervalový odhad pro `x = rnorm(100)` a `set.seed(100)`.\ - 2. Spočítejte, zda můžeme s pravděpodobností $90\:\%$ zamítnout hypotézu, že střední hodnota veličiny generující výběr `x <- c(0.77, 1.11, 1.14, 0.92, 0.49, 5.03, 1.35, 0.94, 0.33, 2.49)` je menší než 1.\ - 3. Pro stejný výběr spočítejte, zda je možné na hladině významnosti $0.05$ zamítnout hypotézu, že střední hodnota veličiny generující výběr je rovna $1$. -::: \ No newline at end of file +::: + diff --git a/07_testovani.qmd b/07_testovani.qmd index 8b5bc42..fbf497b 100644 --- a/07_testovani.qmd +++ b/07_testovani.qmd @@ -100,14 +100,63 @@ $$ $$ -## Rekapitulace - -::: callout-tip -## Úloha - - 1. a) Nalezněte 90% interval spolehlivosti pro roztpyl veličiny - b) Otestujte, zda veličiny generující sobory $x$ a $y$ mají shodný rozptyl. -::: - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/10_hydro_index.qmd b/10_hydro_index.qmd index 8ec945e..f2a270b 100644 --- a/10_hydro_index.qmd +++ b/10_hydro_index.qmd @@ -187,4 +187,5 @@ points(Mdenni, pch = 21, bg = rev(rainbow(13, end = 0.7))) 3. Spočtete průměrný roční minimální průtok. ::: -## SPI \ No newline at end of file + + diff --git a/_quarto.yml b/_quarto.yml index ad3a9a4..d81502b 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -75,7 +75,7 @@ format: fig-format: svg fig-dpi: 400 fig-cap-location: bottom - pdf: - documentclass: scrreprt + # pdf: + # documentclass: scrreprt editor: visual lang: cs-CZ diff --git a/docs/01_uvod_do_R_1 2.html b/docs/01_uvod_do_R_1 2.html new file mode 100644 index 0000000..f741c51 --- /dev/null +++ b/docs/01_uvod_do_R_1 2.html @@ -0,0 +1,932 @@ + + + + + + + + + +Metody vyhodnocování vodohospodářských dat - 3  R & RStudio + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

3  R & RStudio

+
+ + + +
+ + + + +
+ + +
+ +
+
+
+ +
+
+Cíle cvičení +
+
+
+
    +
  • Naučit se založit projekt
  • +
  • Rozeznat Základní soubory projektu a prostředí
  • +
  • Projekt či součást projektu uložit a otevřít
  • +
  • Orientovat se v hlavním okně
  • +
  • Přepínat mezi výpočtem v konzoli a skriptu
  • +
+
+
+

R je volně dostupné programové prostředí pro statistické výpořty a grafiku. Interpretr jazyka se základní funkcionalitou lze stáhnout ze stránek https://www.r-project.org.

+

RStudio (dnes také společnost Posit Inc.) je integrované vývojové prostředí (IDE), specializované pro práci s jazykem R. Obsahuje řadu užitečných nástrojů usnadňujících organizaci, tvorbu reportů, práci s SQL databázemi, vývojem funkčních balíčků a mnoho dalšího.

+
+

3.1 Hlavní okna a panely

+
+
+

+
Obrázek 3.1: Obr. 1: Základní layout prostředí RStudio.
+
+
+

V základním zobrazení Obrázek 3.1 bychom měli v levé části vidět panel Console. S konzolí nebudeme pracovat příliš intenzivně, slouží zejména k zadávání jednoduchých příkazů, například vyhodnocení proměnné. Pravou část vidíme rozdělenu na dolní a horní polovinu. V té horní jsou důležité panely Environment kde se nachází všechny objekty a vlastní funkce, které jsme vytvořili v rámci session. Dále Výchozí rozvržení je možné měnit Tools > Global options… > Pane layout.

+
+
+
+ +
+
+Úloha +
+
+
+
    +
  1. Provedeme jedno užitečné nastavení duhových závorek
  2. +
+
+
+

+
Obr. 2: Nastavení duhových závorek a dalších vlastností v okně Global Options…
+
+
+
+
+
+
+

3.2 Zakládáme projekt

+

Je vhodné seskupovat svoji práci do zv. projektů - ucelených souborů skriptů, dat a výstupů - podle jednotlivých projektů, kterým se věnuji.

+
    +
  1. Při spuštěném programu z hlavní nabídky vybereme File > New Project…

    +Obr. 2 - Volba typu založení projektu
  2. +
  3. Vybereme New Directory a zvolíme New Project. Ostatní možnosti v tomto kurzu využívate nebudeme.

    +Obr. 3 - Volba typu projektu
  4. +
  5. Projektu je dále nutné zadat název Directory name. Pokud používate verzovací systém Git, můžete zaškrtnout volbu Create a git repository. V tomto kurzu používat nebudeme.

    +Obr. 3 - Volba umístění a názvu projektu
  6. +
  7. Po úspěšném založení projektu by se mělo zobrazit hlavní okno programu s přednastvenými panely. V nastavení učeben ČZU odpovídá rozvržení 1. obrázku.

  8. +
+
+
+
+ +
+
+Úloha +
+
+
+
    +
  1. Vytvořte projekt s názvem “MVVD_cv1”.
  2. +
+
+
+
+
+

3.3 Pracovní postup a jeho opakovatelnost

+

K systematické práci a analýze zejména v exaktních vědách patří dodržování jistých pracovních zásad, které umožňují jednak objektivní kontrolu výsledků a jednak jejich opětovného získání. Níže je uvedeno pár zásad, jejichž dodržování vede k celkové duševní pohodě a rovnováze jak vaší vlastní, tak kolegů.

+
    +
  • Při psaní kódu se řiďte unifikovaným schématem jmenných konvencí, odsazování a vkládání mezer, a komentování. Jedno takové má například Hadley Wickham, či Google.
    +
  • +
  • Každé cvičení začněte ideálně tvorbou nového projektu v oddělené složce, nebo alespoň nového skriptu.
    +
  • +
  • Při zavírání RStudio neukládejte pracovní prostředí do souboru “*.RData”. Uloží se do něj vše co máte právě v Environment, což nemusí nutně pocházet z pracovního postupu uchovaného ve skriptech (byť při dodržování jiných zásad z tohoto sezamu by tomu tak být nemělo).
  • +
  • R bohužel umožnuje připínat a odepínat data.frame pomocí funkcí attach() a detach(), na které je vhodné ihned po přečtení této věty zapomenout.
  • +
+
+
+Kód +
?ls
+rm(list = ls())
+?objects
+
+
+
+
+Kód +
l <- list(A = 1:3, B = 3:5)
+attach(l)
+A
+
+
+
[1] 1 2 3
+
+
+
    +
  • dtto funkce fix(), která umožňuje manipulovat s daty formou GUI tabulkového procesoru.
    +

  • +
  • Naučte se používat :: značící jmenný prostor, ze kterého funkce pochází. Například filter() je funkce definována ve více jmenných prostorech často používaných balíčků.

  • +
  • Oddělujte vzájemně surová data, zpracovaná data, skripty analýz a výstupy. Souborová struktura projektu může vypadat například takto:

    +
    ~/mzp_analyza/
    + ├── data/
    + |   ├── raw_data/ 
    + |   └── zpracovana_data/ 
    + ├── skripty/
    + |   └── 01_load.R
    + ├── vystupy/
    + |  └── 01_liniovy_graf_m_denni_vody.pdf
    + └── mzp_analyza.RProj
  • +
+ + +
+ +
+ + + + +
+ + + + \ No newline at end of file diff --git a/docs/02_uvod_do_R_2.html b/docs/02_uvod_do_R_2.html index 993f1d7..395f9fd 100644 --- a/docs/02_uvod_do_R_2.html +++ b/docs/02_uvod_do_R_2.html @@ -461,27 +461,27 @@

11
-Negace +Negace
12
-Je \(x\) “pravda”? +Je \(x\) “pravda”?
13
-Je něco z obsahu “pravda”? +Je něco z obsahu “pravda”?
14
-Je vše z obsahu “pravda”? +Je vše z obsahu “pravda”?
15
-Je něco obsaženo v? +Je něco obsaženo v?
16
-Chybí něco něco z obsahu v? +Chybí něco něco z obsahu v?
@@ -759,15 +759,15 @@

1
-Sčítám vektory přičemž délka jednoho je násobkem délky druhého. +Sčítám vektory přičemž délka jednoho je násobkem délky druhého.
2
-Násobím vektory přičemž délka jednoho je násobkem délky druhého. +Násobím vektory přičemž délka jednoho je násobkem délky druhého.
3
-Násobení vektoru číslenou hodnotou +Násobení vektoru číslenou hodnotou
@@ -798,35 +798,35 @@

Práce s vekto
1
-Tvorba vektoru \(\boldsymbol{\mathrm{x}}\) různými úkony. Použití sekvence, repetice, opakování a vzorkování. +Tvorba vektoru \(\boldsymbol{\mathrm{x}}\) různými úkony. Použití sekvence, repetice, opakování a vzorkování.
2
-Transpozice vektoru. +Transpozice vektoru.
3
-Pojmenování pozic ve vektoru +Pojmenování pozic ve vektoru
4
-Výběr hodnot z vektoru na základě podmínky +Výběr hodnot z vektoru na základě podmínky
5
-Výběr hodnot z vektoru na základě pozice +Výběr hodnot z vektoru na základě pozice
         [,1]     [,2]     [,3]     [,4]     [,5]     [,6]     [,7]     [,8]
-[1,] 99.11547 1.772909 859.3662 58.18504 144.9733 63.78054 381.4557 1436.548
-         [,9]   [,10]
-[1,] 23.28053 3.96985
-        B         D         F         G         H 
- 1.331506  7.627912  7.986272 19.530891 37.901815 
+[1,] 6.663615 122.7062 612.4235 1.463653 11.72349 15.54336 277.8602 1.877454
+         [,9]    [,10]
+[1,] 500.5559 437.5033
+        B         D         E         G         H         I         J 
+11.077285  1.209815  3.423958 16.669140  1.370202 22.373108 20.916580 
          A          B          C 
- -9.955675   1.331506 -29.314948 
+ -2.581398 11.077285 -24.747191
@@ -877,7 +877,7 @@

1
-Převod na rozměr \(2\times 2\) +Převod na rozměr \(2\times 2\)

@@ -979,19 +979,19 @@

1
-Struktura objektu +Struktura objektu
2
-Dimenze matice +Dimenze matice
3
-Singulární rozklad +Singulární rozklad
4
-Prvky na diagonále matice +Prvky na diagonále matice
@@ -1066,11 +1066,11 @@

value = rnorm(5)) DF ## name value -## 1 a -1.3263777 -## 2 b 0.2458498 -## 3 c -1.3789535 -## 4 d 0.7170527 -## 5 e -1.0951034 +## 1 a 0.5001322 +## 2 b -0.4163139 +## 3 c -1.1695121 +## 4 d 1.6076695 +## 5 e -0.1154482 DF["name"] # podvýběr do data.frame ## name ## 1 a @@ -1096,7 +1096,7 @@

str(DF) ## 'data.frame': 365 obs. of 3 variables: ## $ mon : chr "Jan" "Jan" "Jan" "Jan" ... -## $ value: num -2.181 -0.575 -0.122 1.27 -0.324 ... +## $ value: num -1.77 1.08 -2.406 -0.258 2.643 ... ## $ yr : num 2001 2001 2001 2001 2001 ... names(DF) ## [1] "mon" "value" "yr" @@ -1142,7 +1142,7 @@

1
-Řetěz podmínek se uzavře v momentě, kdy je výraz v závorce poprvé vyhodnocen jako pravdivý. +Řetěz podmínek se uzavře v momentě, kdy je výraz v závorce poprvé vyhodnocen jako pravdivý.
@@ -1180,11 +1180,11 @@

1
-Varianta “A nenastala, +Varianta “A nenastala,
2
-nastala varianta “B”, tzn. výraz je vyhodnocen ve tvaru \(2\cdot 3 = 6\) +nastala varianta “B”, tzn. výraz je vyhodnocen ve tvaru \(2\cdot 3 = 6\)
@@ -1295,11 +1295,11 @@

1
-Prováděj +Prováděj
2
-Vnořenou podmínkou následovanou klíčovým slovem break definujeme konec cyklu. +Vnořenou podmínkou následovanou klíčovým slovem break definujeme konec cyklu.
@@ -1352,12 +1352,12 @@

1
-Příklad funkce, která vyhledá nejbližší z hodnot vektoru x k referenční hodnotě value. +Příklad funkce, která vyhledá nejbližší z hodnot vektoru x k referenční hodnotě value.
-
Hodnota nejblíže 0 z vektoru x je: -0.0001032935
+
Hodnota nejblíže 0 z vektoru x je: 0.01184226
@@ -1367,16 +1367,16 @@

  1. Zvolte platné tvrzení pro data.frame: -
    - +
    +
  2. Matici je možné vytvořit z vektoru přidáním dimenze:
  3. Co je výsledkem výrazu: \(\sin(\frac{0}{0})\)
  4. Vyberte, platné tvrzení pro list: -
    - +
    +
  5. Napište výraz pro nepřiřazenou číselnou hodnotu :
  6. diff --git a/docs/02_uvod_do_R_2_files/figure-html/unnamed-chunk-11-1 2.dvi b/docs/02_uvod_do_R_2_files/figure-html/unnamed-chunk-11-1 2.dvi new file mode 100644 index 0000000..01443de Binary files /dev/null and b/docs/02_uvod_do_R_2_files/figure-html/unnamed-chunk-11-1 2.dvi differ diff --git a/docs/02_uvod_do_R_2_files/figure-html/unnamed-chunk-11-1 2.svg b/docs/02_uvod_do_R_2_files/figure-html/unnamed-chunk-11-1 2.svg new file mode 100644 index 0000000..bf3a58b --- /dev/null +++ b/docs/02_uvod_do_R_2_files/figure-html/unnamed-chunk-11-1 2.svg @@ -0,0 +1,196 @@ + + + + + +z +11 + +z +12 + +z +13 + +·· +· + +z +1 +N +z +21 + +z +22 + +z +23 + +z +2 +N +z +31 + +z +32 + +z +33 + +z +3 +N +.. +. +. +. +. + +z +T +1 +z +T +2 +z +T +3 +z +TN + +y +11 + +y +12 + +y +13 + +·· +· + +y +1 +N +y +21 + +y +22 + +y +23 + +y +2 +N +y +31 + +y +32 + +y +33 + +y +3 +N +.. +. +. +. +. + +y +T +1 +y +T +2 +y +T +3 +y +TN + +x +11 + +x +12 + +x +13 + +·· +· + +x +1 +N +x +21 + +x +22 + +x +23 + +x +2 +N +x +31 + +x +32 + +x +33 + +x +3 +N +.. +. +. +. +. + +x +T +1 +x +T +2 +x +T +3 +x +TN + +dimenzesloup +ce +ˇ + +adky + + + \ No newline at end of file diff --git a/docs/02_uvod_do_R_2_files/figure-html/unnamed-chunk-11-1.dvi b/docs/02_uvod_do_R_2_files/figure-html/unnamed-chunk-11-1.dvi index 01443de..2ff2529 100644 Binary files a/docs/02_uvod_do_R_2_files/figure-html/unnamed-chunk-11-1.dvi and b/docs/02_uvod_do_R_2_files/figure-html/unnamed-chunk-11-1.dvi differ diff --git a/docs/02_uvod_do_R_2_files/figure-html/unnamed-chunk-11-1.svg b/docs/02_uvod_do_R_2_files/figure-html/unnamed-chunk-11-1.svg index bf3a58b..e9fa9d9 100644 --- a/docs/02_uvod_do_R_2_files/figure-html/unnamed-chunk-11-1.svg +++ b/docs/02_uvod_do_R_2_files/figure-html/unnamed-chunk-11-1.svg @@ -2,11 +2,11 @@