Повторите много раз коды в R - PullRequest
0 голосов
/ 16 июня 2019

Я хотел бы повторить блок кода в R несколько раз и собрать окончательный результат.в частности, моя цель - вычислить интервал прогнозирования несколько раз.Код такой:

library(rmutil)
library(forecast)
library(tidyverse)
phi=0.5
p=1
n=100
M=1000
B=1000
h=5

set.seed(980)
serie1=arima.sim(model=list(ar =phi ,order=c(p,0,0)),n = n,innov=rnorm(n=n,0,1))
set.seed(NULL)
stima<-arima(serie1,order=c(p,0,0),include.mean=F)
phi.stima=stima$coef
res=stima$residual
ress=res[(p+1):n]
res.c=ress-mean(ress)


errore.fun=function(...)
{

serie.b=vector("numeric",length=n+M)


u1=round(runif(1,1,n-1))
serie.b[1]=u1

for(i in (1+1):(n+M))
     serie.b[i]=phi.stima*serie.b[i-1]+res.c[round(runif(1,1,n-1))]

serie.bb=serie.b[(M+1):(n+M)]
serie.bb=ts(serie.bb)

stima.boot<-arima(serie.bb,order=c(1,0,0),include.mean=F)
phi.stima.boot=stima.boot$coef
phi.res.boot=stima.boot$residual

serie.bb[n]=serie1[n]

previsioni.boot=vector("numeric",length=6)
previsioni.boot[1]=serie1[n]


for(i in (2):(h+1))
previsioni.boot[i]=phi.stima.boot*previsioni.boot[i-1]


for(i in (2):(n+M))
     serie.b[i]=phi.stima*serie.b[i-1]+res.c[round(runif(1,1,n-1))]

future_obs_boot=vector("numeric",length=6)
future_obs_boot[1]=serie1[n]


for(i in (2):(6))
     future_obs_boot[i]=phi.stima*future_obs_boot[i-1]+res.c[round(runif(1,1,n-1))]


errore.prev.boot=future_obs_boot[6]-previsioni.boot[6]
errore.prev.boot

}
err_prev_B=map_dbl(1:B,errore.fun)   
quantile(err_prev_B,c((0.05/2),(1-0.05/2))) 


forecast(stima,level=c(0.9, 0.95))
prev=forecast(stima,level=c(0.9, 0.95))
prev.puntuali=prev$mean
prev.puntuali[1]

# Interval
L=prev.puntuali[1]+quantile(err_prev_B,c((0.05/2))) 
U=prev.puntuali[1]+quantile(err_prev_B,c((1-0.05/2)))
Interval=c(L,U)

где интервал - это вектор из двух чисел. Обратите внимание, что для расчета этого интервала я смоделировал с начала модель AR (1), имея такую ​​выборку (serie1)

Я хочу повторить процедуру много раз (K раз), генерируя сэмплы K (serie1, ...., serieK) и, наконец, получая интервалы H.

Ps: я надеюсь, чтомне было ясно.Мой английский не очень хорош

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...