stl
位于 stats
包(package)。 说明
使用 loess
(缩写 STL)将时间序列分解为季节性、趋势和不规则分量。
用法
stl(x, s.window, s.degree = 0,
t.window = NULL, t.degree = 1,
l.window = nextodd(period), l.degree = t.degree,
s.jump = ceiling(s.window/10),
t.jump = ceiling(t.window/10),
l.jump = ceiling(l.window/10),
robust = FALSE,
inner = if(robust) 1 else 2,
outer = if(robust) 15 else 0,
na.action = na.fail)
参数
x |
要分解的单变量时间序列。这应该是类 |
s.window |
根据 Cleveland 等人的说法,字符串 |
s.degree |
季节提取中 locally-fitted 多项式的次数。应该是零或一。 |
t.window |
用于趋势提取的黄土窗口的跨度(以滞后为单位),应该是奇数。如果 |
t.degree |
趋势提取中 locally-fitted 多项式的次数。应该是零或一。 |
l.window |
用于每个子系列的 low-pass 过滤器的 loess 窗口的跨度(以滞后为单位)。默认为大于或等于 |
l.degree |
子系列 low-pass 滤波器的 locally-fitted 多项式的次数。必须是 0 或 1。 |
s.jump, t.jump, l.jump |
整数至少为一以提高相应平滑器的速度。线性插值发生在每个 |
robust |
逻辑指示是否在 |
inner |
整数; ‘inner’(反向拟合)迭代的次数;通常很少 (2) 次迭代就足够了。 |
outer |
整数; ‘outer’鲁棒性迭代的次数。 |
na.action |
对缺失值采取行动。 |
细节
季节性分量是通过 loess 平滑季节性 sub-series 找到的(所有 1 月值的序列,...);如果s.window = "periodic"
平滑被有效地替换为取均值。季节性值被删除,其余部分被平滑以找到趋势。总体水平从季节性成分中去除并添加到趋势成分中。这个过程要重复几次。 remainder
分量是季节性加趋势拟合的残差。
生成的类 "stl"
对象的几种方法,请参阅 plot.stl
。
值
stl
返回带有组件的类 "stl"
的对象
time.series |
包含 |
weights |
最终的稳健权重(如果拟合不稳健,则均为 1)。 |
call |
匹配的调用。 |
win |
整数(长度为 3 的向量),其跨度用于 |
deg |
具有这些平滑器多项式次数的整数(长度为 3)向量。 |
jump |
整数(长度 3)向量,其中 ‘jumps’(跳过)用于这些平滑器。 |
ni |
内部迭代次数 |
no |
外部鲁棒性迭代次数 |
注意
这与 S-PLUS 中的 stl
函数类似但不完全相同。 S-PLUS 给出的 remainder
分量是来自该函数的 trend
和 remainder
系列的总和。
例子
require(graphics)
plot(stl(nottem, "per"))
plot(stl(nottem, s.window = 7, t.window = 50, t.jump = 1))
plot(stllc <- stl(log(co2), s.window = 21))
summary(stllc)
## linear trend, strict period.
plot(stl(log(co2), s.window = "per", t.window = 1000))
## Two STL plotted side by side :
stmd <- stl(mdeaths, s.window = "per") # non-robust
summary(stmR <- stl(mdeaths, s.window = "per", robust = TRUE))
op <- par(mar = c(0, 4, 0, 3), oma = c(5, 0, 4, 0), mfcol = c(4, 2))
plot(stmd, set.pars = NULL, labels = NULL,
main = "stl(mdeaths, s.w = \"per\", robust = FALSE / TRUE )")
plot(stmR, set.pars = NULL)
# mark the 'outliers' :
(iO <- which(stmR $ weights < 1e-8)) # 10 were considered outliers
sts <- stmR$time.series
points(time(sts)[iO], 0.8* sts[,"remainder"][iO], pch = 4, col = "red")
par(op) # reset
作者
B.D. Ripley; Fortran code by Cleveland et al (1990) from ‘netlib’.
参考
R. B. Cleveland, W. S. Cleveland, J.E. McRae, and I. Terpenning (1990) STL: A Seasonal-Trend Decomposition Procedure Based on Loess. Journal of Official Statistics, 6, 3-73.
也可以看看
plot.stl
用于 stl
方法; loess
包中的 stats
(实际上并未在 stl
中使用)。
StructTS
用于不同类型的分解。
相关用法
- R stlmethods STL 对象的方法
- R stat.anova GLM 方差分析统计
- R stepfun Step Functions - 创建和类
- R step 在逐步算法中通过 AIC 选择模型
- R start 对时间序列的终止时间进行编码
- R summary.nls 总结非线性最小二乘模型拟合
- R summary.manova 多元方差分析的汇总方法
- R summary.lm 总结线性模型拟合
- R smooth Tukey 的(运行中值)平滑
- R screeplot 屏幕图
- R sortedXyData 创建一个sortedXyData对象
- R sigma 提取残余标准差“Sigma”
- R setNames 设置对象中的名称
- R scatter.smooth 黄土拟合的平滑曲线散点图
- R splinefun 插值样条曲线
- R spec.taper 通过余弦钟锥化时间序列
- R summary.princomp 主成分分析的汇总方法
- R symnum 符号数字编码
- R se.contrast 模型术语对比的标准误差
- R summary.aov 方差模型分析总结
- R shapiro.test 夏皮罗-威尔克正态性检验
- R selfStart 构建自启动非线性模型
- R spec.pgram 通过平滑周期图估计时间序列的谱密度
- R spec.ar 通过 AR Fit 估计时间序列的频谱密度
- R smooth.spline 拟合平滑样条曲线
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Seasonal Decomposition of Time Series by Loess。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。