[R] More help with stl?
rkevinburton at charter.net
rkevinburton at charter.net
Tue Sep 2 21:10:05 CEST 2008
The data is real. The fact that there are a bunch of zeros and only one value of 1 is just the way things are. I have over 20,000 data sets and some are like this. Admittedly this is not periodic but ideally you should see all frequencies at various amplitudes, remniscent of the impulse response to a system. I was not expecting long string of sinusoids all at the same amplitude.
Thank you for your imput. This will help in my understanding.
---- Ryan Hafen <rhafen at purdue.edu> wrote:
> Trying your example:
> y <- numeric(365) y y = 1 y
> y.stl <- stl(ts(y, frequency=7), s.window="periodic")
> First of all, pay attention to the axes on your plot - the scales are
> different for each panel. Your seasonal component is quite small in magnitude
> compared to everything else.
> Also, if you are unsure that data = seasonal + trend + remainder, just try
> apply(y.stl$time.series, 1, sum)
> which adds up the three components. This will get you back your original time
> The problem with your example is that you need to be giving sensible data to
> the stl procedure. How does data with a bunch of zeros and one 1 represent
> anything with weekly periodicity? For example, try the following plot:
> library(lattice) xyplot(y ~ 1:365 | factor(rep(1:7, 53)[1:365]))
> This groups your data into all Mondays, all Tuesdays, etc. Do you see anything
> here indicating periodicity?
> It was your specification of frequency=7 that created the cyclical pattern you
> see in the seasonal component. The STL procedure has a step where it smooths,
> in this case, each day of the week, and then strings each of those fitted
> values back together. In the case of this data, it gets a positive value for
> day 5 (refer to lattice plot above), and hence the seasonal pattern you see.
> If you read the documentation, you will see that s.window="periodic" causes
> the mean to be taken for each day of the week, which forces the day of the
> week to be constant. If you would like the seasonal to be able to adapt, try
> something like:
> y.stl <- stl(ts(y, frequency=7), s.window=9, s.degree=1) plot(y.stl)
> This will use local linear fitting to each week day and allow the seasonal to
> evolve over time. You can play with s.window argument.
> If you provided this example just as an example, hopefully this explanation
> will be helpful. However, if this is what your data actually looks like, I
> don't see how stl will do you any good.
> R-help at r-project.org mailing list
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help