1 votos

Construcción de tendencias deterministas y AR(1) y previsiones en R

Estoy intentando implementar/generar un proceso utilizando arima.sim así:

$Y_t = a + b*t + \epsilon_t$ donde $\epsilon_t = \phi\epsilon_{t-1}+\gamma_t$ un proceso AR(1), donde $\epsilon_t$ es un ruido blanco.

Y después de esto hacer la previsión:

innovs <- rnorm(100,0,3)
x<-1:100 #time variable
mu<-10+.5*x #linear trend
y<-mu+arima.sim(length(x),innov=innovs, model=list(ar=0.7),sd=3)
plot.ts(y,main=expression(Trend+AR(1)),
        ylab=expression(Y[t]),xlab='Time',
        ,col='blue',lty=1,
        bty='l' )

plot(forecast(y,h=20))
grid(col='darkgrey',lwd=2)

forecastMA1<-Arima(window(y,end=y[46]),order=c(1,0,0),
                   include.drift=TRUE,include.constant=TRUE,include.mean=TRUE8,lambda=NULL)

plot(forecast(forecastMA1,h=54, level=99))
grid(col='darkgrey',lwd=2)
lines(y)

Espero que el último gráfico me acerque la serie a la previsión(azul) porque es un proceso estacionario tendencial, pero no ocurre.

¿Es correcto? Gracias

0voto

level1807 Puntos 445

No tengo muy clara su pregunta, pero la interpreto de la siguiente manera como,

Esperaba mejores resultados de la utilización de la previsión se reunió modelo ARIMA correctamente ajustado

En primer lugar me gustaría señalar su uso de window parece un poco engañoso. Puesto que window(y, end=y[46]) devuelve y del valor 1 al valor que sea y[46] es, redondeado a la baja. Por ejemplo

> tt <- ts(2*(1:10))
> window(tt, end=3)
Time Series:
Start = 1 
End = 3 
Frequency = 1 
[1] 2 4 6
> window(tt, end=tt[3])
Time Series:
Start = 1 
End = 6 
Frequency = 1 
[1]  2  4  6  8 10 12

Es difícil saber cómo es el rendimiento de sus gráficos ya que tiene reproducibiliy, sin embargo lo que usted está viendo es probablemente un una estimación errónea de la tendencia agravada con el tiempo. Como ejemplo concreto, mire el siguiente

> set.seed(42)
> N <- 1000
> innovs <- rnorm(N,0,3)
> x<-1:N #time variable
> mu<-10+.5*x #linear trend
> y<-mu+arima.sim(length(x),innov=innovs, model=list(ar=0.7),sd=3)
> 
> n <- 44
> forecastMA1b<-Arima(y[1:n],order=c(1,0,0), include.drift=TRUE,include.constant=TRUE)
> plot(forecast(forecastMA1b,h=N-n, level=99))
> grid(col='darkgrey',lwd=2)
> lines(y)

AR1

Esto tiene un aspecto bastante terrible, que es el resultado de errores en la tendencia que se acumulan con el tiempo. Repitiendo lo anterior pero estableciendo n <- 100 se obtiene lo siguiente, que es claramente mucho mejor

AR2

En respuesta a tu comentario, no es necesariamente cierto que no puedas utilizar este este modelo para predecir tendencias a largo plazo, sino que cualquier error de la tendencia se hará más evidente con el tiempo. En este contexto, el examen de los estimados subyacentes del modelo. A continuación podemos ver que en la primera estimación del modelo, la deriva se estima en 0,3357 frente al 0,5 real, mientras que en la segunda estimación, la deriva es de 0,5007.

> n <- 44
> arma44 <-Arima(y[1:n],order=c(1,0,0), include.drift=TRUE,include.constant=TRUE)
> n <- 100
> arma100 <-Arima(y[1:n],order=c(1,0,0), include.drift=TRUE,include.constant=TRUE)
> arma44
Series: y[1:n] 
ARIMA(1,0,0) with non-zero mean 

Coefficients:
         ar1  intercept   drift
      0.6665    13.0941  0.3357
s.e.  0.1090     2.7867  0.1055

sigma^2 estimated as 11.26:  log likelihood=-116
AIC=240.01   AICc=241.03   BIC=247.14
> arma100
Series: y[1:n] 
ARIMA(1,0,0) with non-zero mean 

Coefficients:
         ar1  intercept   drift
      0.7093    10.1518  0.5007
s.e.  0.0689     2.0135  0.0342

sigma^2 estimated as 9.495:  log likelihood=-254.78
AIC=517.56   AICc=517.99   BIC=527.99

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X