R Help Community I'm trying to understand time series (TS) objects. Thought I understood but recently have run into a series of error messages that I'm not sure how to handle. I have 15 years of quarterly data and I typically create a TS object via something like... data.ts <- ts(mydata, start = 2002, frequency = 4) this create a matric as opposed to a vector object as I receive a univariate error when I try to decompose the data using the STL function data.stl <- stl(data.ts, "periodic") Error in stl(data.ts, "periodic") : only univariate series are allowed ok so is.vector(data.ts) [1] FALSE so to convert to a vector I'll use data.ts <- as.vector(data.ts) but then I lose the frequency as the periods as the data becomes frequency = 1 data.ts <- stl <- stl(data.ts, "periodic") Error in stl(data.ts, "periodic") : series is not periodic or has less than two periods. So am I missing a parameter or is there a more general/proper way to create a time series object? First time I've run into this problem . I can always decompose via an alternative methods so there are work arounds. But just trying to understand what I'm not doing programmatically at this point. Jeff Reichman
On Tue, 13 Mar 2018, JEFFERY REICHMAN wrote:> R Help Community > > I'm trying to understand time series (TS) objects. Thought I understood > but recently have run into a series of error messages that I'm not sure > how to handle. I have 15 years of quarterly data and I typically create > a TS object via something like... > > data.ts <- ts(mydata, start = 2002, frequency = 4) > > this create a matric as opposed to a vector objectThis depends on what "mydata" is which you haven't shown... If "mydata" is a univariate vector, everything works ok: mydata <- rnorm(15 * 4) data.ts <- ts(mydata, start = 2002, frequency = 4) data.stl <- stl(data.ts, "periodic") However, if "mydata" is a matrix, e.g., a 3-column matrix in the example below: mydata <- matrix(rnorm(15 * 4 * 3), ncol = 3) then the error occurs. Furthermore, the same problem will occur if mydata is 1-column matrix or a 1-column data frame.> as I receive a univariate error when I try to decompose the data using > the STL function > > data.stl <- stl(data.ts, "periodic") > Error in stl(data.ts, "periodic") : only univariate series are allowed > > ok so > > is.vector(data.ts) > [1] FALSEThis is always FALSE for a "ts" object, even if it is univariate, because it has further attributes, namely the time-series properties (tsp).> so to convert to a vector I'll use > data.ts <- as.vector(data.ts)This will drop the "ts" class. The cleanest way is probably to create a vector "mydata" and then the univariate "data.ts". hth, Z> but then I lose the frequency as the periods as the data becomes frequency = 1 > data.ts <- stl <- stl(data.ts, "periodic") > Error in stl(data.ts, "periodic") : > series is not periodic or has less than two periods. > > So am I missing a parameter or is there a more general/proper way to create a time series object? First time I've run into this problem . I can always decompose via an alternative methods so there are work arounds. But just trying to understand what I'm not doing programmatically at this point. > > Jeff Reichman > > ______________________________________________ > R-help at 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. >
Perhaps mydata is a matrix or matrix-like object, and you should create one ts object for each column? -- Sent from my phone. Please excuse my brevity. On March 13, 2018 7:25:31 AM PDT, JEFFERY REICHMAN <reichmanj at sbcglobal.net> wrote:>R Help Community > >I'm trying to understand time series (TS) objects. Thought I >understood but recently have run into a series of error messages that >I'm not sure how to handle. I have 15 years of quarterly data and I >typically create a TS object via something like... > >data.ts <- ts(mydata, start = 2002, frequency = 4) > >this create a matric as opposed to a vector object as I receive a >univariate error when I try to decompose the data using the STL >function > >data.stl <- stl(data.ts, "periodic") >Error in stl(data.ts, "periodic") : only univariate series are allowed > >ok so > >is.vector(data.ts) >[1] FALSE > >so to convert to a vector I'll use >data.ts <- as.vector(data.ts) > >but then I lose the frequency as the periods as the data becomes >frequency = 1 >data.ts <- stl <- stl(data.ts, "periodic") >Error in stl(data.ts, "periodic") : > series is not periodic or has less than two periods. > >So am I missing a parameter or is there a more general/proper way to >create a time series object? First time I've run into this problem . I >can always decompose via an alternative methods so there are work >arounds. But just trying to understand what I'm not doing >programmatically at this point. > >Jeff Reichman > >______________________________________________ >R-help at 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.