Decompose a multiple seasonal time series into seasonal, trend and remainder components. Seasonal components are estimated iteratively using STL. The trend component is computed for the last iteration of STL. Non-seasonal time series are decomposed into trend and remainder only. In this case, supsmu is used to estimate the trend. Optionally, the time series may be Box-Cox transformed before decomposition.

mstl(x, lambda = NULL, iterate = 2, s.window = 21, ...)



Univariate time series of class msts or ts.


Box-Cox decomposition parameter. If NULL, no transformation is used. If lambda="auto", a transformation is automatically selected. If lambda takes a numerical value, it is used as the parameter of the Box-Cox transformation.


Number of iterations to use to refine the seasonal component.


Seasonal windows to be used in the decompositions. If scalar, the same value is used for all seasonal components. Otherwise, it should be a vector of the same length as the number of seasonal components.


Other arguments are passed to stl.

See also

stl, link[stats]{supsmu}


library(ggplot2) mstl(taylor) %>% autoplot(facet=TRUE)
mstl(AirPassengers, lambda='auto') %>% autoplot(facet=TRUE)