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?