7 votos

Ajuste de ARIMA a series temporales con valores perdidos

Tengo un objeto de serie temporal estacionaria (por ejemplo: xts) que consiste en datos continuos semanales. Faltan valores durante varias semanas, a veces de forma aleatoria pero a menudo en trozos de 4-5 semanas. Quiero ajustar un modelo de series temporales a los datos para hacer previsiones utilizando la función "arima".

¿La función "arima" tiene en cuenta las semanas que faltan? Parece que no utiliza el índice de tiempo en absoluto. Aquí está mi código:

o.time.pos <- seq(1:(52*5))
z.idx <- seq.Date(as.Date("2010/1/1"), by="week", length.out = 52*5)
sigma <- 1.15
phi <- 0.8
y_ts <- arima.sim(n = length(o.time.pos), list(ar = c(phi)), sd = sigma)
y.ts <- xts(as.numeric(y_ts), order.by=z.idx)
y.ts.na <- y.ts
# Missing values as NAs
y.ts.na[c(40:45, 72:82)] <- NA
ar1 <- arima(y.ts.na, order=c(2,1,2), method="ML")
y.ts.na1 <- y.ts
# Missing values are deleted from the time series. However, the time 
# index shows that there are weeks missing
y.ts.na1 <- y.ts.na1[-c(40:45, 72:82)]
y.ts.na1
2010-09-10 -0.341071731
2010-09-17 -2.141615586
2010-09-24 -1.538637593
2010-11-12 -2.801102613
2010-11-19 -2.447482778
2010-11-26 -3.176720246
2010-12-03 -2.532530896
ar2 <- arima(y.ts.na1, order=c(2,1,2), method="ML")

Espero que ar1 y ar2 sean iguales, pero no lo son.

summary(ar1)

Call:
arima(x = y.ts.na, order = c(2, 1, 2), method = "ML")

Coefficients:
         ar1     ar2      ma1      ma2
      0.4367  0.1801  -0.6410  -0.3319
summary(ar2)

Call:
arima(x = y.ts.na1, order = c(2, 1, 2), method = "ML")

Coefficients:
         ar1     ar2      ma1      ma2
      0.5302  0.1231  -0.7473  -0.2298

Parece que en el segundo método, aunque el objeto xts tiene información sobre las semanas que faltan, el método "arima" no parece utilizarla y en su lugar trata el tiempo como contiguo. En el ejemplo anterior, parece tratar los datos de 2010-11-12 como los datos de la semana posterior a 2010-09-24 y así sucesivamente. Esto es claramente incorrecto. Entiendo que no es posible ajustar la probabilidad con los datos que faltan. ¿Cuáles son mis opciones para ajustar un modelo de series temporales a datos con datos que faltan?

Sé que un método consiste en imputar los datos (utilizando, por ejemplo, Cómo utilizar auto.arima para imputar valores perdidos o ¿Cómo se gestionan los datos inexistentes o que faltan? ) y luego ajustar, pero ¿es posible ajustar sin imputación?

12voto

Tim Puntos 11

Los resultados dados por stats::arima en el primer enfoque ( ar1 ) son correctas: han tenido en cuenta los valores que faltaban. En el segundo, no.

Se pueden ajustar modelos ARIMA con valores perdidos fácilmente porque todos los modelos ARIMA son modelos de espacio de estados y el filtro de Kalman, que se utiliza para ajustar modelos de espacio de estados, se ocupa exactamente de los valores perdidos simplemente saltándose la fase de actualización. Por lo tanto, "reunir la probabilidad con datos que faltan" es absolutamente posible, como lo hace el filtro de Kalman. Cualquier otro modelo de espacio de estados le permitirá hacer lo mismo.

A menos que esté específicamente interesado en una estimación de los valores que faltan, no es necesario imputarlos. Si lo hace incorrectamente, podría distorsionar la dinámica, lo que causaría problemas al intentar ajustar su modelo posteriormente. Si sólo desea pronosticar las series, probablemente no deba imputarlas.

La cuestión de por qué ar1 es correcto pero no ar2 no es exactamente sobre el tema aquí, pero para que conste: stats::arima espera sus datos como un objeto de clase ts no xts . Si sus datos no ts se convertirá utilizando as.ts que descarta la información sobre la fecha, lo que significa que la opción explícita NA en el primer enfoque se conservan, mientras que los implícitos en el segundo no aparecerán en absoluto y, de hecho, se limitará a pegar las series. La razón por la que stats::arima espera un objeto de la clase ts es porque esa clase impone datos muestreados con regularidad (a un cierto frequency ), mientras que xts pueden llevar datos muestreados arbitrariamente, y los modelos ARIMA clásicos se definen sólo para datos muestreados regularmente.

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