Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.80 KB | None | 0 0
  1. realmatrix <- matrix(NA, ncol = 100, nrow = 138)
  2.  
  3. farimamatrix <- matrix(NA, nrow = 12, ncol = 100)
  4.  
  5. m <- k <- list()
  6.  
  7. for (i in 1:100) {
  8. try(m[[i]] <- Arima(realmatrix[,i], order = c(0,1,0), seasonal = c(1,0,1)))
  9. k[[i]] <- forecast.Arima(m[[i]], h=12)
  10. farimamatrix[,i] <- fitted(k[[i]])
  11. }
  12.  
  13. tsdata <-
  14. structure(c(28220L, 27699L, 28445L, 29207L, 28482L, 28326L, 28322L,
  15. 28611L, 29187L, 29145L, 29288L, 29352L, 28881L, 29383L, 29898L,
  16. 29888L, 28925L, 29069L, 29114L, 29886L, 29917L, 30144L, 30531L,
  17. 30494L, 30700L, 30325L, 31313L, 32031L, 31383L, 30767L, 30500L,
  18. 31181L, 31736L, 32136L, 32654L, 32305L, 31856L, 31731L, 32119L,
  19. 31953L, 32300L, 31743L, 32150L, 33014L, 32964L, 33674L, 33410L,
  20. 31559L, 30667L, 30495L, 31978L, 32043L, 30945L, 30715L, 31325L,
  21. 32262L, 32717L, 33420L, 33617L, 34123L, 33362L, 33731L, 35118L,
  22. 35027L, 34298L, 34171L, 33851L, 34715L, 35184L, 35190L, 35079L,
  23. 35958L, 35875L, 35446L, 36352L, 36050L, 35567L, 35161L, 35419L,
  24. 36337L, 36967L, 36745L, 36370L, 36744L, 36303L, 36899L, 38621L,
  25. 37994L, 36809L, 36527L, 35916L, 37178L, 37661L, 37794L, 38642L,
  26. 37763L, 38367L, 38006L, 38442L, 38654L, 38345L, 37628L, 37698L,
  27. 38613L, 38525L, 39389L, 39920L, 39556L, 40280L, 41653L, 40269L,
  28. 39592L, 39100L, 37726L, 37867L, 38551L, 38895L, 40100L, 40950L,
  29. 39838L, 40643L, 40611L, 39611L, 39445L, 38059L, 37131L, 36697L,
  30. 37746L, 37733L, 39188L, 39127L, 38554L, 38219L, 38497L, 39165L,
  31. 40077L, 38370L, 37174L), .Dim = c(138L, 1L), .Dimnames = list(
  32. NULL, "Data"), .Tsp = c(2005, 2016.41666666667, 12), class = "ts")
  33.  
  34. library("forecast")
  35.  
  36. z <- stl(tsdata[, "Data"], s.window="periodic")
  37.  
  38. t <- z$time.series[,"trend"]
  39. s <- z$time.series[,"seasonal"]
  40. e <- z$time.series[,"remainder"]
  41.  
  42. # error matrix
  43. ematrix <- matrix(rnorm(138 * 100, sd = 100), nrow = 138)
  44.  
  45. # generating a ts class error matrix
  46. ematrixts <- ts(ematrix, start=c(2005,1), freq=12)
  47.  
  48. # combining the trend + season + error matrix into a real matrix
  49. realmatrix <- t + s + ematrixts
  50.  
  51. # creating a (forecast) arima matrix
  52. farimamatrix <- matrix(NA, ncol = 100, nrow = 12)
  53.  
  54. m <- k <- vector("list", length = 100)
  55.  
  56. for (i in 1:100) {
  57. try(m[[i]] <- Arima(realmatrix[,i], order = c(0,1,0), seasonal = c(1,0,1)))
  58. print(i)
  59. k[[i]] <- forecast.Arima(m[[i]], h = 12)
  60. farimamatrix[,i] <- k[[i]]$mean
  61. }
  62.  
  63. # ts.plot(farimamatrix[,1:100],col = c(rep("gray",100),rep("red",1)))
  64.  
  65. library(forecast)
  66. fit <- Arima(WWWusage,c(3,1,0))
  67. fore <- forecast(fit, h = 10)
  68.  
  69. str(fitted(fore))
  70. # Time-Series [1:100] from 1 to 100: 87.9 86.1 81.2 87.1 83 ...
  71.  
  72. fore$mean
  73. #Start = 101
  74. #End = 110
  75. #Frequency = 1
  76. # [1] 219.6608 219.2299 218.2766 217.3484 216.7633 216.3785 216.0062 215.6326
  77. # [9] 215.3175 215.0749
  78.  
  79. set.seed(0)
  80. trend <- 0.1 * (1:138)
  81. seasonal <- rep_len(sin((1:12) * pi / 6), 138)
  82. correlation <- arima.sim(list(ar = 0.5, ma = 0.3), n = 138)
  83. x <- ts(trend + seasonal + correlation, start = c(2005, 1), frequency = 12)
  84. ts.plot(x)
  85.  
  86. realmatrix <- structure(replicate(100, x), tsp = tsp(x),
  87. class = c("mts", "ts", "matrix"))
  88.  
  89. farimamatrix <- matrix(NA, ncol = 100, nrow = 12)
  90.  
  91. m <- k <- vector("list", length = 100)
  92.  
  93. for (i in 1:100) {
  94. try(m[[i]] <- Arima(realmatrix[,i], order = c(0,1,0), seasonal = c(1,0,1)))
  95. k[[i]] <- forecast.Arima(m[[i]], h = 12)
  96. farimamatrix[,i] <- k[[i]]$mean
  97. }
  98.  
  99. str(farimamatrix)
  100. # num [1:12, 1:100] 12.9 12.5 12.3 12.3 12.7 ...
  101.  
  102. x <- realmatrix[,1]
  103.  
  104. acf(diff(x))
  105.  
  106. acf(diff(diff(x, lag = 12))) ## first do seasonal diff, then non-seasonal diff
  107.  
  108. fit <- arima(x, order = c(0,1,0), seasonal = c(0,1,1))
  109.  
  110. acf(fit$residuals)
  111.  
  112. farimamatrix <- matrix(NA, ncol = 100, nrow = 12)
  113.  
  114. m <- k <- vector("list", length = 100)
  115.  
  116. for (i in 1:100) {
  117. m[[i]] <- Arima(realmatrix[,i], order = c(0,1,0), seasonal = c(0,1,1))
  118. print(i)
  119. k[[i]] <- forecast.Arima(m[[i]], h = 12)
  120. farimamatrix[,i] <- k[[i]]$mean
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement