Partially the trouble is that the zoo time series is then translated
into a ts object by auto.arima.
In doing so, the series along a regular time grid and some missing
data appear.
To fix this, I should replace each NA with the previous non-NA value.
This is easy enough and the series exhibits some clear cycles: roughly
every month there is a spike, followed by a decrease, then another
spike and so on.
I would like to forecast a couple of cycles (60 steps), but when I do
so with auto.arima, nothing like what I expect appears (the
seasonality is completely lost).
Any idea why?
I paste below the revised R code for reproducibility.

Lorenzo





library(forecast)

tt<-structure(c(1494.5, 1367.57, 1357.57, 1222.23, 1124.02, 1011.64,
4575.64, 3201.87, 3050.04, 2173.38, 1967.88, 1838.55, 1666.05,
1656.05, 1524.96, 835.96, 775.36, 592.36, 494.15, 4058.15, 2624.36,
2448.47, 1598.47, 1398.47, 1264.14, 1165.88, 1053.67, 941.36,
821.36, 471.36, 373.15, 259.91, 3808.91, 2262.26, 1940.39, 1011.39,
800.81, 790.81), index = structure(c(16563L, 16565L, 16570L,
16572L, 16577L, 16579L, 16584L, 16585L, 16586L, 16587L, 16588L,
16589L, 16590L, 16592L, 16593L, 16599L, 16606L, 16607L, 16608L,
16612L, 16613L, 16614L, 16617L, 16618L, 16619L, 16620L, 16621L,
16628L, 16633L, 16635L, 16638L, 16642L, 16647L, 16648L, 16649L,
16650L, 16651L, 16654L), class = "Date"), class = "zoo")

tt2<-as.ts(tt)
tt2<-na.locf(tt2)

mm<-auto.arima(tt2)


plot(forecast(mm, h=60))




On Fri, Jan 29, 2016 at 02:16:27PM -0800, David Winsemius wrote:

On Jan 29, 2016, at 12:59 PM, Lorenzo Isella <lorenzo.ise...@gmail.com> wrote:

Dear All,
I am puzzled and probably I am misunderstanding something.
Please consider the snippet at the end of the email.
We see a time series that has clearly some pattern (essentially, it is
an account where a salary is regularly paid followed by some
expenses).
However the output of the auto.arima from the forecast function does
not seem to make any sense (at least to me).
I wonder if the problem is the fact that the time series is not
defined at regular intervals.
Any suggestions and alternative ways to fit it (e.g.: sarima from the astsa
package to account for the seasonality?) are really welcome.
Many thanks

Lorenzo



##############################################
library(forecast)

tt<-structure(c(1494.5, 1367.57, 1357.57, 1222.23, 1124.02, 1011.64,
4575.64, 3201.87, 3050.04, 2173.38, 1967.88, 1838.55, 1666.05,
1656.05, 1524.96, 835.96, 775.36, 592.36, 494.15, 4058.15, 2624.36,
2448.47, 1598.47, 1398.47, 1264.14, 1165.88, 1053.67, 941.36,
821.36, 471.36, 373.15, 259.91, 3808.91, 2262.26, 1940.39, 1011.39,
800.81, 790.81), index = structure(c(16563L, 16565L, 16570L,
16572L, 16577L, 16579L, 16584L, 16585L, 16586L, 16587L, 16588L,
16589L, 16590L, 16592L, 16593L, 16599L, 16606L, 16607L, 16608L,
16612L, 16613L, 16614L, 16617L, 16618L, 16619L, 16620L, 16621L,
16628L, 16633L, 16635L, 16638L, 16642L, 16647L, 16648L, 16649L,
16650L, 16651L, 16654L), class = "Date"), class = "zoo")

plot(tt)


library(forecast)

fit<-auto.arima(tt)

###########################################

If , after runing plot(tt), you then run:

fitted(fit)

Time Series:
Start = 16563
End = 16654
Frequency = 1
[1] 1448.8211        NA 1444.8612        NA        NA        NA        NA
[8] 1398.7752        NA 1359.0350        NA        NA        NA        NA
[15] 1309.1398        NA 1219.7420        NA        NA        NA        NA
[22] 2302.8903 3708.1762 2713.0349 2603.0512 1968.0100 1819.1484 1725.4634
[29]        NA 1572.6179 1593.2628        NA        NA        NA        NA
[36]        NA 1258.3403        NA        NA        NA        NA        NA
[43]        NA 1184.9656  955.3023  822.7394        NA        NA        NA
[50] 1987.7634 3333.3131 2294.6941        NA        NA 1760.6351 1551.5526
[57] 1406.6751 1309.3682 1238.1899        NA        NA        NA        NA
[64]        NA        NA 1251.6898        NA        NA        NA        NA
[71] 1179.9970        NA  988.3885        NA        NA  888.4533        NA
[78]        NA        NA  889.4017        NA        NA        NA        NA
[85] 1970.0911 3152.7668 2032.3935 1799.2350 1126.2794        NA        NA
[92] 1088.1525


Using that vector:

lines(seq(16563 ,16654 ),fitted(fit), col="red", lwd=3)

You can see that the fitted values are capturing quite a bit of the variation.



I'm not a regular user of pkg:forecast, so there may be more refined methods of 
extracting information than using `fitted`.

--

David Winsemius
Alameda, CA, USA


______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to