Как я могу повторить мою строку 22 в строку 26 десять раз последовательно и добавить результат строки 26 с первой в десятую и, наконец, получить среднее значение из 10 последовательных сумм в моем коде r ниже:
# simulate arima(1,1,0)
library(forecast)
set.seed(100)
wn <- rnorm(10, mean = 0, sd = 1)
ts <- wn[1:2]
for (i in 3:10){
ts<-arima.sim(n=10,model=list(ar=-0.7048,order=c(1,1,0)),start.innov=4.1,n.start=1,innov=wn)
}
ts <-ts[-1]
#
# write the function for RMSE
rmse <- function(x) {
m <- auto.arima(x)
acu <- accuracy(m)
acu[1, 2]
}
#
t<-length(ts)# the length of the time series
l<- 2# block size
m <- ceiling(t / l) # number of blocks
blk<-split(ts, rep(1:m, each=l, length.out = t)) # divides the series into blocks
res<-sample(blk, replace=T, 1000) # resamples the blocks
unlist<-unlist(res, use.names = F) # unlist the bootstrap series
tsunlist<-ts(unlist) # turns the bootstrap series into time series data
# use the RMSE function
RMSE <- rmse(tsunlist)
Приведенный выше код R
выполняет следующий алгоритм по шагам:
- Имитация
ARIMA(1,1,0)
временных рядов (от строки 1 до строки 9) - Разделение временного ряда на блоки равного размера 2 (строка 18 - строка 21)
- Повторная выборка каждого блока случайным образом 1000 раз (строка 22 - строка 23)
- Преобразование преобразованного ряда в данные временных рядов (строка 24)
- Получить среднеквадратичное значение пересчитанного временного ряда (строка 26)
Я хочу повторить шаги с 3 по 5 100 раз, сложить результаты, полученные на шаге 5, 100 раз и получить среднее значение результатов.