-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
eddc690
commit 1e0198d
Showing
108 changed files
with
1,149,853 additions
and
6,174 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
{ | ||
"hash": "a6431ef8e8962c40804228e19e57cfe1", | ||
"result": { | ||
"markdown": "# Časové řady {#sec-casoverady}\n\n::: callout-warning\n## Cíle cvičení\n\n - Umět definovat časovou řadu s pomocí `ts()`.\n - Detekovat přítomnost trendu, bodu zlomu.\n - Umět aplikovat klouzavý průměr jako zhlazovací funkci.\n:::\n\nČasové řady jsou chronologicky uspořádané posloupnosti hodnot jednoho nebo více\nstatistických ukazatelů.\n\n$$\nY(t) = f(t)\n$$\n\nČasové řady rozeznáváme deterministické, stochastické s konstantním nebo proměnlivým \nčasovým krokem. Časovou řadu nazýváme **homogenní**, pokud hodnoty jednolivých členů\npozorované řady odrážejí pouze přirozenou proměnlivost studované veličiny.\n\n\n\nFunkce pro základní statistické zpracování časových řad opět nalezneme v balíčku `stats`. \n\n::: {.cell}\n\n```{.r .cell-code}\nargs(stats::ts)\n```\n\n::: {.cell-output .cell-output-stdout}\n```\nfunction (data = NA, start = 1, end = numeric(), frequency = 1, \n deltat = 1, ts.eps = getOption(\"ts.eps\"), class = if (nseries > \n 1) c(\"mts\", \"ts\", \"matrix\", \"array\") else \"ts\", names = if (!is.null(dimnames(data))) colnames(data) else paste(\"Series\", \n seq(nseries))) \nNULL\n```\n:::\n:::\n\n\n\n::: callout-note\n## Další zdroje\nZpracování časových řad je jedním ze základních tématických okruhů v R. Stejně \njako je tomu u ostatních okruhů, můžeme může být užitečné se zorientovat studiem \npříslušného [CRAN Task View](https://cran.r-projecet.org/web/views/TimeSeries.html).\n:::\n\nBudeme pracovat se dvěma datovými sadami:\n \n 1. Časovou řadou historických měření z pražského Klementina od roku 1776.\n 2. Vnitřní datová sada R `co2`, kterou nahrajete pomocí funkce `data()`\n\n\n\n\n\n## `ts()` objekt\n\n::: callout-tip\n## Úloha\n 1. Nejprve vhodnou funkcí nahrajte datovou sadu `klementinum.rds`.\n 2. Vytvořte formát datumu (`Date`) sjednocením sloupců `yr`, `mon`, `day`. \n U sloupců s denními a měsíčními hodnotami je nutné nejprve doplnit na \n dvoumístný formát (napří. `02` místo `2`). Použijte nápovědu k funkci\n `sprinft()`.\\ \n Výsledek by měl vypadat takto:\n\n::: {.cell}\n::: {.cell-output .cell-output-stdout}\n```\n yr mon day tavg tmax tmin sra date\n1 1775 1 1 -7.0 -4.8 -10.1 NA 1775-01-01\n2 1775 1 2 -2.2 -1.4 -5.8 NA 1775-01-02\n3 1775 1 3 -1.0 0.6 -2.2 NA 1775-01-03\n4 1775 1 4 0.1 2.5 -3.6 NA 1775-01-04\n5 1775 1 5 2.2 3.0 1.6 NA 1775-01-05\n6 1775 1 6 3.2 4.0 1.6 NA 1775-01-06\n7 1775 1 7 3.5 4.0 3.1 NA 1775-01-07\n```\n:::\n:::\n\n 3. Datovou sadu máme nahranou ověřte, zda se jedná o časovou řadu `is.ts()`\n a udělejte si základní obrázek o průběhu veličin s pomocí grafů. Inspirujte\n se v @sec-grafy.\n:::\n\n\n\n::: {.cell layout-align=\"center\"}\n\n```{.r .cell-code}\nplot(main = \"Klementinum 1776 - 2023, průměrná denní teplota \", \n x = klementinum$date, \n y = klementinum$tavg, \n type = \"p\", \n cex = 0.1, \n col = \"#00000050\", \n ylab = expression(T[avg]), \n xlab = \"\")\n```\n\n::: {.cell-output-display}\n![](09_casove_rady_files/figure-html/unnamed-chunk-4-1.svg){fig-align='center'}\n:::\n:::\n\n::: {.cell}\n\n```{.r .cell-code}\nmd1 <- lm(tmin ~ yr + mon + day, data = klementinum)\n```\n:::\n\n::: {.cell layout-align=\"center\"}\n\n```{.r .cell-code}\nplot(main = \"Klementinum 1776 - 2023, průměrná denní teplota \", \n x = klementinum$date, \n y = klementinum$tavg, \n type = \"p\", \n cex = 0.1, \n col = \"#00000050\", \n ylab = expression(T[avg]), \n xlab = \"\")\ncoefficients(md1)[1]\n```\n:::\n\n\n\nČasová řada v R je určena \n\n::: {.cell}\n\n```{.r .cell-code}\nklementinum_ts <- ts(\n data = klementinum$tavg, \n start = c(klementinum$yr[1], klementinum$mon[1], klementinum$day[1]), \n deltat = 1/365.25)\n```\n:::\n\n\n## Autokorelace\n\n\n::: {.cell layout-align=\"center\"}\n\n```{.r .cell-code}\nokno <- seq(from = as.POSIXct(\"1990-01-01\"), \n to = as.POSIXct(\"2020-12-31\"), \n by = 3600*24)\nklementinum90_20 <- klementinum[klementinum$date %in% okno, ]\npar(mfrow = c(1, 3))\nsapply(X = c(1, 2, 3), \n FUN = function(x) \n plot(cex = 0.5, \n col = \"#00000080\", \n klementinum90_20$tavg[-c(4883:(4883 - x + 1))], \n klementinum90_20$tavg[-c(1:x)])\n )\n```\n\n::: {.cell-output-display}\n![](09_casove_rady_files/figure-html/unnamed-chunk-8-1.svg){fig-align='center'}\n:::\n\n::: {.cell-output .cell-output-stdout}\n```\n[[1]]\nNULL\n\n[[2]]\nNULL\n\n[[3]]\nNULL\n```\n:::\n:::\n\n\n\n## Parciální autokorelace\n\n\n::: {.cell}\n\n```{.r .cell-code}\nacf(klementinum$tavg)\n```\n\n::: {.cell-output-display}\n![](09_casove_rady_files/figure-html/unnamed-chunk-9-1.svg)\n:::\n\n```{.r .cell-code}\npacf(klementinum$tavg)\n```\n\n::: {.cell-output-display}\n![](09_casove_rady_files/figure-html/unnamed-chunk-9-2.svg)\n:::\n:::\n\n\n\n## Aditivní a multiplikativní řady\n\n## Box-Jenkins analýza\n\n### Klouzavé průměry\n\n### Sezónní složka\n\n$$\ny = \\alpha + \\beta\\sin(2\\pi t) + \\gamma\\cos(2\\pi t)+ \\epsilon\n$$\n\n\n::: {.cell}\n\n```{.r .cell-code}\nmd2 <- lm(tavg ~ sin(klementinum90_20$date*2*pi) + cos(klementinum90_20$date*2*pi), data = klementinum90_20)\nplot(fitted.values(md2))\n```\n:::\n\n::: {.cell}\n\n```{.r .cell-code}\nmd3 <- arima(x = klementinum_ts, order = c(0,1,1))\ntsdiag(md3)\n```\n\n::: {.cell-output-display}\n![](09_casove_rady_files/figure-html/unnamed-chunk-11-1.svg)\n:::\n:::\n\n\n\n<!-- Využijeme znalostí z -->\n\n<!-- ```{r, fig.align='center'} -->\n<!-- hydroplot <- function(srazka, vypar, odtok, ...) { -->\n<!-- plot(odtok, -->\n<!-- ylim = c(-max(odtok), -->\n<!-- 2*max(odtok)), -->\n<!-- yaxt = \"n\", -->\n<!-- xlab = \"\", -->\n<!-- ylab = \"\", -->\n<!-- ...) -->\n<!-- axis(2, -->\n<!-- at = round(signif(seq(0, max(odtok), length = 5), 2))) -->\n<!-- abline(h = 0, lty = 3) -->\n<!-- par(new = TRUE) -->\n<!-- plot(x = time(srazka), -->\n<!-- y = as.numeric(srazka), -->\n<!-- col = \"dodgerblue4\", -->\n<!-- type = \"h\", -->\n<!-- ylim = rev(c(0, 3*max(srazka))), -->\n<!-- xlab = \"\", -->\n<!-- ylab = \"\", -->\n<!-- axes = FALSE, ...) -->\n<!-- axis(4, -->\n<!-- at = round(signif(seq(0, max(odtok), length = 5), 2))) -->\n<!-- par(new = TRUE) -->\n<!-- deltaet <- max(vypar) - min(vypar) -->\n<!-- plot(x = time(vypar), -->\n<!-- y = as.numeric(vypar), col = \"salmon1\", type = \"l\", -->\n<!-- ylim = c(min(vypar), max(vypar) + 2.5*deltaet), -->\n<!-- xlab = \"\", -->\n<!-- ylab = \"\", -->\n<!-- axes = FALSE, ...) -->\n<!-- axis(4, -->\n<!-- at = round(signif(seq(min(vypar), max(vypar), length = 5), 2), 1)) -->\n<!-- } -->\n\n<!-- dframe <- ts(data = data.frame(P = 1:365, EP = 21:385,Q = 31:395), -->\n<!-- start = c(2024, 1, 1), -->\n<!-- frequency = 525960) -->\n<!-- time(dframe) -->\n\n<!-- hydroplot(srazka = dframe[, \"P\"], -->\n<!-- vypar = dframe[, \"EP\"], -->\n<!-- odtok = dframe[, \"Q\"], -->\n<!-- xlim = as.Date(c(\"2001-09-01\",\"2001-09-21\"))) -->\n<!-- title(\"rainfall, runoff and potential evaporation (mm/d)\", -->\n<!-- cex.main = 1.25, -->\n<!-- font.main = 1) -->\n<!-- ``` -->\n\n<!-- ## Autokorelační funkce -->\n\n<!-- Slouží k posouzení, zda časová řada obsahuje cyklickou či periodickou složku a také, zda je či není řadou náhodných čísel. Graficky je vyjádřena pomocí *korelogramu*. -->\n\n<!-- ```{r, fig.cap=\"Vlevo řada se silnou autokorelací složek bez znatelené periodicity, vpravo dtto s periodickou složkou\"} -->\n<!-- par(mfrow = c(1, 2)) -->\n<!-- acf(dataset$R) -->\n<!-- acf(co2) -->\n<!-- ``` -->\n\n\n<!-- ## Dekompozice časové řady -->\n\n<!-- Dekompozicí časové řady rozumíme rozklad na složky: -->\n\n<!-- 1. Trendovou $T_t$ -->\n<!-- 2. Sezónní $S_t$ -->\n<!-- 3. Cyklickou $C_t$ -->\n<!-- 4. Náhodnou $\\epsilon_t$ -->\n\n<!-- ### Aditivní dekompozice -->\n\n<!-- Předpokládáme, že řadu lze rozložit na součet složek -->\n\n<!-- $$ -->\n<!-- Y_t =T_t +S_t +C_t +\\epsilon_t, -->\n<!-- $$ -->\n\n<!-- ```{r} -->\n<!-- dec_co2 <- decompose(co2) -->\n<!-- plot(dec_co2) -->\n<!-- plot(dec_co2$trend) -->\n<!-- ``` -->\n\n<!-- ### Residua -->\n\n<!-- Ověřte, zda po dekompozici `co2` residua $\\epsilon_t$ splňují definici *bílého šumu* -->\n<!-- tzn. mají nulovou střední hodnotu a konečný rozptyl a jsou nekorelované. -->\n\n<!-- ```{r} -->\n<!-- shapiro.test(dec_co2$random) -->\n<!-- mean(dec_co2$random, na.rm = TRUE) -->\n<!-- var(dec_co2$random, na.rm = TRUE) -->\n<!-- # ... -->\n<!-- ``` -->\n\n<!-- ## Zhlazovací funkce -->\n\n<!-- ```{r} -->\n<!-- par(mfrow = c(1, 2)) -->\n<!-- plot(dataset$Tmin, type = \"l\", -->\n<!-- col = \"slategray\", -->\n<!-- lwd = 0.5) -->\n<!-- md1 <- loess(Tmin ~ na.omit(1:length(dataset$Tmin)), -->\n<!-- data = dataset, -->\n<!-- degree = 1) -->\n<!-- lines(md1$fitted, col = \"orangered\") -->\n\n<!-- plot(filter(x = dataset$R, -->\n<!-- method = \"convolution\", -->\n<!-- filter = c(rep(1/365.25, 365.25)), -->\n<!-- sides = 1), -->\n<!-- col = \"dodgerblue3\", -->\n<!-- type = \"l\") -->\n<!-- ``` -->\n\n<!-- ```{r} -->\n<!-- md2 <- lm(Tmin ~ DTM, data = dataset) -->\n<!-- plot(dataset$Tmin, type = \"l\", -->\n<!-- col = \"slategray\", -->\n<!-- lwd = 0.5) -->\n<!-- lines(md1$fitted, col = \"darkred\") -->\n<!-- abline(coef(md2), col = \"orangered\") -->\n\n<!-- ``` -->\n\n\n\n\n\n\n", | ||
"supporting": [ | ||
"09_casove_rady_files/figure-html" | ||
], | ||
"filters": [ | ||
"rmarkdown/pagebreak.lua" | ||
], | ||
"includes": {}, | ||
"engineDependencies": {}, | ||
"preserve": {}, | ||
"postProcess": true | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
{ | ||
"hash": "088ebede24f1b742ead36cf287955cfc", | ||
"result": { | ||
"markdown": "# Časové řady {#sec-casoverady}\n\n::: callout-warning\n## Cíle cvičení\n\n - Umět definovat časovou řadu s pomocí `ts()`.\n - Detekovat přítomnost trendu, bodu zlomu.\n - Umět aplikovat klouzavý průměr jako zhlazovací funkci.\n:::\n\nČasové řady jsou chronologicky uspořádané posloupnosti hodnot jedné nebo více\nsledovaných veličin.\\\nČasové řady rozeznáváme deterministické, stochastické s konstantním nebo proměnlivým \nčasovým krokem. Budeme procvičovat řady stochastické. Dále časovou řadu nazýváme \n**homogenní**, pokud hodnoty jednolivých členů pozorované řady odrážejí pouze \npřirozenou proměnlivost studované veličiny.\\\nCíli analýzy časové řady je jednak pochopení a určení modelu, generujícího sledovaná\ndata, jednak predikce vývoje na základě tohoto modelu.\n\n\nFunkce pro základní statistické zpracování časových řad opět nalezneme v balíčku `stats`. \n\n::: {.cell}\n\n```{.r .cell-code}\nargs(stats::ts)\n```\n\n::: {.cell-output .cell-output-stdout}\n```\nfunction (data = NA, start = 1, end = numeric(), frequency = 1, \n deltat = 1, ts.eps = getOption(\"ts.eps\"), class = if (nseries > \n 1) c(\"mts\", \"ts\", \"matrix\", \"array\") else \"ts\", names = if (!is.null(dimnames(data))) colnames(data) else paste(\"Series\", \n seq(nseries))) \nNULL\n```\n:::\n:::\n\n\n\n::: callout-note\n## Další zdroje\nZpracování časových řad je jedním ze základních tématických okruhů v R. Stejně \njako je tomu u ostatních okruhů, můžeme může být užitečné se zorientovat studiem \npříslušného [CRAN Task View](https://cran.r-projecet.org/web/views/TimeSeries.html).\n:::\n\nBudeme pracovat se dvěma datovými sadami:\n \n 1. Časovou řadou historických měření z pražského Klementina od roku 1776.\n 2. Vnitřní datová sada R `co2`, kterou nahrajete pomocí funkce `data()`\n\n\n\n\n\n## `ts()` objekt\n\n::: callout-tip\n## Úloha\n 1. Nejprve vhodnou funkcí nahrajte datovou sadu `klementinum.rds`.\n 2. Vytvořte formát datumu (`Date`) sjednocením sloupců `yr`, `mon`, `day`. \n U sloupců s denními a měsíčními hodnotami je nutné nejprve doplnit na \n dvoumístný formát (napří. `02` místo `2`). Použijte nápovědu k funkci\n `sprinft()`.\\ \n Výsledek by měl vypadat takto:\n\n::: {.cell}\n::: {.cell-output .cell-output-stdout}\n```\n yr mon day tavg tmax tmin sra date\n1 1775 1 1 -7.0 -4.8 -10.1 NA 1775-01-01\n2 1775 1 2 -2.2 -1.4 -5.8 NA 1775-01-02\n3 1775 1 3 -1.0 0.6 -2.2 NA 1775-01-03\n4 1775 1 4 0.1 2.5 -3.6 NA 1775-01-04\n5 1775 1 5 2.2 3.0 1.6 NA 1775-01-05\n6 1775 1 6 3.2 4.0 1.6 NA 1775-01-06\n7 1775 1 7 3.5 4.0 3.1 NA 1775-01-07\n```\n:::\n:::\n\n 3. Datovou sadu máme nahranou ověřte, zda se jedná o časovou řadu `is.ts()`\n a udělejte si základní obrázek o průběhu veličin s pomocí grafů. Inspirujte\n se v @sec-grafy.\n:::\n\n\n\n::: {.cell layout-align=\"center\"}\n\n```{.r .cell-code}\nplot(main = \"Klementinum 1776 - 2023, průměrná denní teplota \", \n x = klementinum$date, \n y = klementinum$tavg, \n type = \"p\", \n cex = 0.1, \n col = \"#00000050\", \n ylab = expression(T[avg]), \n xlab = \"\")\n```\n:::\n\n::: {.cell layout-align=\"center\"}\n\n:::\n\n\n![](images/chapter_9_fig_1.png)\n\n## Dekompozice časové řady\n\nProces identifikace a rozkladu časové řady na trendovou, sezónní, cyklickou a \nnáhodnou složku buďto v **aditivním** nebo **multiplikativním** typu. \nVelmi silné tam, kde je silný trend nebo stabilní sezónní složka.\n\n$$\n\\begin{array}{c}\nY(t)=T_t + S_t + C_t + R_t\\\\ \nY(t)=T_t \\times S_t\\times C_t\\times R_t\n\\end{array}\n$$\n\n### Trendová složka\n\nTrend je obecná tendence vývoje zkoumaného jevu za delší období; může být lineární\nči nelineární. Může být rostoucí či klesající. Časové řady bez trendu se označují \nza **stacionární**.\n\nModel trendu můžeme odhadnout pomocí lineárního modelu `lm()`. Můžeme vytvořit rovnou \ntři varianty trendu: lineární, kvadratický a kubický. Vyhodnotíme pomocí **Akaikeho\ninformačního kritéria**.\n\n\n::: {.cell}\n\n```{.r .cell-code}\nmd1 <- lm(tavg ~ I(date), \n data = klementinum)\nmd2 <- lm(tavg ~ date + I(as.numeric(date)^2), \n data = klementinum)\nmd3 <- lm(tavg ~ date + I(as.numeric(date)^2) + I(as.numeric(date)^3), \n data = klementinum)\nres <- as.numeric(lapply(X = list(md1, md2, md3), FUN = AIC))\nnames(res) <- c(\"md1\", \"md2\", \"md3\")\nres\n```\n:::\n\n\n\n\n![](images/chapter_9_fig_2.png)\n\nČasovou řadu zbavenou trendu.\n\n\n::: {.cell}\n\n:::\n\n![](images/chapter_9_fig_3.png)\n\nČasová řada v R je určena \n\n::: {.cell}\n\n```{.r .cell-code}\nklementinum_ts <- ts(\n data = klementinum$tavg, \n start = c(klementinum$yr[1], klementinum$mon[1], klementinum$day[1]), \n deltat = 1/365.25)\n```\n:::\n\n\n### Sezónní složka\n\nSezónní složka představuje periodickou změnu, která se odehrává v průběhu roku \nopakovaně.\n\n### Cyklická složka\n\nCyklická složka je oscialce kolem trendu, která může mít proměnlivou periodu i \namplitudu se složitě identifikovatelnou příčinností.\n\n### Náhodná složka\n\nZahrnuje nejistoty v měření, zpracování apod. U dobře určeného modelu má tato složka\ncharakter bílého šumu\n\n$$\n\\mathbb{E}X_t = 0 \\mathrm{\\:pro\\:všechna\\:} t\\:\\text{a var}(X) < \\infty\n$$\n*Posloupnost náhodných veličin nazveme bílý šum, pokud jde o posloupnost centrovaných\nnekorelovaných veličin s kladným konečným rozptylem.*\\\n\n## Box-Jenkins analýza (ARIMA proces)\n\nTento pohled je založen na přístupu k řadě jako stochastickému procesu, který \nje možné zachytit kombinací autoregresní složky, integrační složky a klouzavého\nprůměru. Využívá se pro simulace časových řad. \n\nARIMA(p, d, q)\n\n### Autokorelace\n\nJe korelace sama se sebou. \n\n\n::: {.cell layout-align=\"center\"}\n\n```{.r .cell-code}\n# Define the time window and subset the data\nokno <- seq(from = as.POSIXct(\"1990-01-01\"), \n to = as.POSIXct(\"2020-12-31\"), \n by = 3600*24)\nklementinum90_20 <- klementinum[klementinum$date %in% okno, ]\n\n# Set up a multi-panel plotting window\npar(mfrow = c(1, 3))\n\n# Apply the plotting and trend line logic\nsapply(X = c(1, 30, 90), \n FUN = function(x) {\n # Create lagged variables\n lagged_x <- klementinum90_20$tavg[-c(1:x)]\n lagged_y <- klementinum90_20$tavg[-c((length(klementinum90_20$tavg) - x + 1):length(klementinum90_20$tavg))]\n \n # Scatter plot\n plot(lagged_x, lagged_y, \n cex = 0.5, col = \"#00000080\", \n xlab = paste(\"Lag\", x), ylab = \"Tavg\",\n main = paste(\"Lag =\", x))\n \n # Fit linear model and add trend line\n lm_fit <- lm(lagged_y ~ lagged_x)\n abline(lm_fit, col = \"#660033\", lwd = 2)\n }\n)\n```\n\n::: {.cell-output-display}\n![](09_casove_rady_files/figure-html/unnamed-chunk-10-1.svg){fig-align='center'}\n:::\n:::\n\n\n\n### Parciální autokorelace\n\nVyjadřuje vztah mezi hodnotou v čase $t$ a hodnotou lag $t$, po ošetření korelace\n\nStupeň určujeme pomocí funkce `pacf()`, \n\n\n::: {.cell layout-align=\"center\"}\n::: {.cell-output-display}\n![](09_casove_rady_files/figure-html/unnamed-chunk-11-1.svg){fig-align='center'}\n:::\n:::\n\n\n### Klouzavé průměry\n\nKlouzavý průměr je zhlazovací funkcí, jejíž využití má prostor například v odhadu\ncyklické složky časové řady\n\n::: callout-tip\n## Úloha\n\n 5. Odfiltrujte posledních 5 let z data frame `klementinum` a uložte do\n proměnné `klementinum_last_5`.\n:::\n\n\n\n::: {.cell}\n\n:::\n\n\nNapíšeme shlazovací funkci pro 30denní okno a vykreslíme do grafu:\n\n\n::: {.cell}\n\n```{.r .cell-code}\nma <- function(x, window = 30) {\n filtr <- rep(1/window, window)\n stats::filter(x, filtr)\n}\n```\n:::\n\n::: {.cell}\n\n```{.r .cell-code}\nplot(klementinum_last_5$tavg, \n col = \"#00000075\", \n cex = 0.5, \n main = \"30denní klouzavý průměr Klementinum 2019 - 2023\")\nlines(ma(klementinum_last_5$tavg), col = \"#006666\", lwd = 3)\n```\n\n::: {.cell-output-display}\n![](09_casove_rady_files/figure-html/unnamed-chunk-14-1.svg)\n:::\n:::\n\n\n### Sezónní složka\n\nSezónní složku je možné simulovat následující rovnicí\n\n$$\ny = \\alpha + \\beta\\sin(2\\pi t) + \\gamma\\cos(2\\pi t)+ \\epsilon\n$$\n\nkde $\\alpha$ je itne\n\n\n::: {.cell layout-align=\"center\"}\n\n```{.r .cell-code}\nmd2 <- lm(\n tavg ~ sin(as.numeric(klementinum90_20$date)*2*pi) + \n cos(as.numeric(klementinum90_20$date)*2*pi), \n data = klementinum90_20)\nplot(sin(as.numeric(klementinum90_20$date)*2*pi) + \n cos(as.numeric(klementinum90_20$date)*2*pi), type = \"l\")\n```\n\n::: {.cell-output-display}\n![](09_casove_rady_files/figure-html/unnamed-chunk-15-1.svg){fig-align='center'}\n:::\n\n```{.r .cell-code}\nplot(klementinum90_20$tavg - fitted.values(md2), \n type = \"p\", \n cex = 0.1, \n col = \"#00000050\")\n```\n\n::: {.cell-output-display}\n![](09_casove_rady_files/figure-html/unnamed-chunk-15-2.svg){fig-align='center'}\n:::\n:::\n", | ||
"supporting": [ | ||
"09_casove_rady_files/figure-html" | ||
], | ||
"filters": [ | ||
"rmarkdown/pagebreak.lua" | ||
], | ||
"includes": {}, | ||
"engineDependencies": {}, | ||
"preserve": {}, | ||
"postProcess": true | ||
} | ||
} |
Oops, something went wrong.