I would like to include the arima model prediction output in my ts series source object in a melt type data format. But I get the following error message that I do not understand:
Error in `[<-.ts`(`*tmp*`, ri, value = c(12.2567768232753, -0.0141881223732589, : only replacement of elements is allowed
Here is some reproducible code, with some examples of data from Yahoo finance:
# custom function to extract years from ts object tsyears = function (ts){ years = as.data.frame(trunc(time(ts))) return(years) } library(quantmod) sp500 = new.env() ### get some fresh data directly from yahoo finance getSymbols("^GSPC", env = sp500, src ="yahoo", from = as.Date("1960-01-01"),to =as.Date("2010-09-29") ) GSPC = sp500$GSPC check what we got (last 6 entries) tail(GSPC) #calculate annual returns from all the adjusted closes annual=annualReturn(GSPC) model = arima(annual,c(1,1,0)) pd = predict(model,10) q = ts(pd$pred,start=2010,end=2020) w = as.ts(annual,start=1960,end=2009) e=data.frame(tsyears(q),unclass(q),"prediction") names(e) = c("years","return","series") w = data.frame(tsyears(w),unclass(w),"historical") names(w) = c("years","return","series") rbind(w,e)
I would like to:
year return series 2008 5 original 2009 -3 original 2010 6 prediction 2011 4 prediction
etc. From now on, I would melt the dataset and use it with ggplot, assigning different colors to the series value.
r
Matt bannert
source share