Problems with skewing ts objects - only element replacement allowed?

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.

+6
r
source share
1 answer

The tsyears function returns a data.frame file containing the ts object:

 > str(tsyears(q)) 'data.frame': 11 obs. of 1 variable: $ x: Time-Series from 2010 to 2020: 2010 2011 2012 2013 2014 ... > str(tsyears(w)) 'data.frame': 50 obs. of 1 variable: $ x: Time-Series from 1960 to 2009: 1960 1961 1962 1963 1964 ... 

I think you intended to use your function to return a data.frame containing a number vector. However, you do not need to return data.frame; just returning a numerical vector works fine:

 tsyears <- function(ts) as.numeric(trunc(time(ts))) 
+4
source share

All Articles