--- title: "R Laboratuvarı 21: Zaman serileri ve Markov zinciri" format: html execute: echo: true warning: false --- Makine durumları, satırları toplamı bir olan sabit geçiş matrisiyle beş adım ileri taşınır. ```{r} P <- matrix(c( 0.90, 0.08, 0.02, 0.55, 0.40, 0.05, 0.35, 0.15, 0.50 ), nrow = 3, byrow = TRUE) stopifnot(all(P >= 0), all(abs(rowSums(P) - 1) < 1e-12)) pi0 <- c(1, 0, 0) matrix_power <- function(A, k) { out <- diag(nrow(A)) for (i in seq_len(k)) out <- out %*% A out } pi5 <- as.vector(pi0 %*% matrix_power(P, 5)) sonuc <- data.frame( durum = c("çalışıyor", "bakımda", "arızalı"), baslangic = pi0, bes_adim_sonra = pi5 ) knitr::kable(sonuc, digits = 4, caption = "Markov durum öngörüsü") ``` AR(1) için çok adımlı öngörüler durağan ortalamaya yaklaşır. ```{r} c0 <- 20 phi <- 0.7 yT <- 80 ufuk <- 1:4 uzun_donem <- c0 / (1 - phi) ongoru <- uzun_donem + phi^ufuk * (yT - uzun_donem) stopifnot(isTRUE(all.equal(ongoru, c(76, 73.2, 71.24, 69.868)))) knitr::kable( data.frame(ufuk_saat = ufuk, ongoru_MW = ongoru), digits = 3, caption = "AR(1) çok adımlı öngörüleri" ) ``` Durağan dağılım, geçiş altında değişmeyen ve toplamı bir olan satır vektörüdür. ```{r} A <- rbind(t(P) - diag(nrow(P)), rep(1, nrow(P))) b <- c(rep(0, nrow(P)), 1) stationary <- as.vector(qr.solve(A, b)) stopifnot(all(stationary >= 0), abs(sum(stationary) - 1) < 1e-10) uzun_donem_tablosu <- data.frame( durum = c("çalışıyor", "bakımda", "arızalı"), bes_adim = pi5, duragan = stationary ) knitr::kable(uzun_donem_tablosu, digits = 4, caption = "Geçici ve durağan durum dağılımları") ```