时间序列分解-STL分解法
时间序列分解-STL分解法
【转载时请注明来源】:http://www.cnblogs.com/runner-ljt/
Ljt
作为一个初学者,水平有限,欢迎交流指正。
STL(’Seasonal and Trend decomposition using Loess‘ )是以鲁棒局部加权回归作为平滑方法的时间序列分解方法。
其中Loess(locally weighted scatterplot smoothing,LOWESS or LOESS)为局部多项式回归拟合,是对两维散点图
进行平滑的常用方法,它结合了传统线性回归的简洁性和非线性回归的灵活性。当要估计某个响应变量值时,先从其预
测变量附近取一个数据子集,然后对该子集进行线性回归或二次回归,回归时采用加权最小二乘法,即越靠近估计点的
值其权重越大,最后利用得到的局部回归模型来估计响应变量的值。用这种方法进行逐点运算得到整条拟合曲线。
Robust Loess 为鲁棒局部加权回归,具体算法可以参看之前的博文 鲁棒局部加权回归 。
STL对异常点具有健壮性,仅能处理加法模式的分解,对于乘法模式需要先转换为加法模式处理最后在逆变换回去。
鲁棒局部加权回归法方法的LOESS 过程和鲁棒性过程分别在STL 的内部环 和外部环中嵌套实现.

用R做时间序列的STL分解:
stl(x, s.window, s.degree = 0,
             t.window = NULL, t.degree = 1,
             robust = FALSE,
             na.action = na.fail)
        s.window----提取季节性时的loess算法时间窗口宽度,须为奇数
s.degree -----提取季节性时局部拟合多项式的阶数,须为0或1
t.window----提取趋势性时的loess算法时间窗口宽度,须为奇数
t.degree-----提取趋势性时局部拟合多项式的阶数,须为0或1
robust -----在loess过程中是否使用鲁棒拟合
library(quantmod)
###时间序列STL分解法######
##STL是’Seasonal and Trend decomposition using Loess‘ 的以鲁棒局部加权回归作为平滑方
#法的时间序列分解方法。其中Loess(locally weighted scatterplot smoothing,
#LOWESS or LOESS)为局部多项式回归拟合。
getSymbols('^IXIC',src='yahoo',from='2008-1-1',to='2015-10-1')
sdata.month=to.monthly(IXIC)
sdata.close=sdata.month$IXIC.Close
head(sdata.close)
sdata=ts(as.double(sdata.close),frequency=12,start=c(2008,1))
#as.double(sdata.close)为避免出现‘只允许单变量序列’的报错
fit=stl(sdata,t.window=13,s.window='periodic',robust=T)
#时间序列的STL分解是以鲁棒局部加权回归作为平滑方法的时间序列分解方法
#故应使robust=T,s.window='periodic'指使用均值平滑季节性子序列
plot(fit)

(上图4个板块的最右侧的高度不等的灰色柱条对应各板块数值大小的一个可视化度量,它们对应的数值大小是一样的)
时间序列分解-STL分解法的更多相关文章
- Matlab数值计算示例: 牛顿插值法、LU分解法、拉格朗日插值法、牛顿插值法
		
本文源于一次课题作业,部分自己写的,部分借用了网上的demo 牛顿迭代法(1) x=1:0.01:2; y=x.^3-x.^2+sin(x)-1; plot(x,y,'linewidth',2);gr ...
 - Guass列选主元消去法和三角分解法
		
最近数值计算学了Guass列主消元法和三角分解法解线性方程组,具体原理如下: 1.Guass列选主元消去法对于AX =B 1).消元过程:将(A|B)进行变换为,其中是上三角矩阵.即: k从1到n-1 ...
 - [Architecture] 系统架构正交分解法
		
[Architecture] 系统架构正交分解法 前言 随着企业成长,支持企业业务的软件,也会越来越庞大与复杂.当系统复杂到一定程度,开发人员会发现很多系统架构的设计细节,很难有条理.有组织的用一张大 ...
 - 项目管理——WBS工作分解法
		
首先我们要了解什么是WBS工作分解法 工作分解结构(Work Breakdown Structure,简称WBS)跟因数分解是一个原理,就是把一个项目,按一定的原则分解,项目分解成任务,任务再分解成一 ...
 - 大规模问题的分解法-D-W分解法
		
大规模线性规划问题的求解极具挑战性,在效率.存储和数值稳定性等方面对算法都有很高的要求.但是这类问题常常非常稀疏且有特殊结构,能够分解为若干个较小规模问题求解. 线性规划问题的目标函数和非负约束都可分 ...
 - Miiler-Robin素数测试与Pollard-Rho大数分解法
		
板题 Miiler-Robin素数测试 目前已知分解质因数以及检测质数确定性方法就只能\(sqrt{n}\)试除 但是我们可以基于大量测试的随机算法而有大把握说明一个数是质数 Miler-Robin素 ...
 - [原创]浅谈对任务分解法WBS应用
		
[原创]浅谈对任务分解法WBS应用 1.WBS是什么? 即Work Breakdown Structure如何进行WBS分解:目标→任务→工作→活动 2.WBS分解的原则:将主体目标逐步细化分解,最底 ...
 - 【腾讯Bugly干货分享】彻底弄懂 Http 缓存机制 - 基于缓存策略三要素分解法
		
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/qOMO0LIdA47j3RjhbCWUEQ 作者:李 ...
 - Http协议:彻底弄懂 Http 缓存机制 - 基于缓存策略三要素分解法
		
转载:http://mp.weixin.qq.com/s/uWPls0qrqJKHkHfNLmaenQ 导语 Http 缓存机制作为 web 性能优化的重要手段,对从事 Web 开发的小伙伴们来说是必 ...
 
随机推荐
- ACM Primes
			
Write a program to read in a list of integers and determine whether or not each number is prime. A n ...
 - Python3 条件控制
			
if 语句 Python中if语句的一般形式如下所示: if condition_1: statement_block_1 elif condition_2: statement_block_2 el ...
 - 【机器学习】从SVM到SVR
			
注:最近在工作中,高频率的接触到了SVM模型,而且还有使用SVM模型做回归的情况,即SVR.另外考虑到自己从第一次知道这个模型到现在也差不多两年时间了,从最开始的腾云驾雾到现在有了一点直观的认识,花费 ...
 - Java中使用CountDownLatch进行多线程同步
			
CountDownLatch介绍 在前面的Java学习笔记中,总结了Java中进行多线程同步的几个方法: 1.synchronized关键字进行同步. 2.Lock锁接口及其实现类ReentrantL ...
 - 20160223.CCPP体系详解(0033天)
			
程序片段(01):MyArray.h+MyArray.c+main.c 内容概要:数组库 ///MyArray.h #pragma once #define DT int//类型通用 typedef ...
 - [OpenCV] How to install opencv by compiling source code
			
Introduction Install OpenCV and its dependence ! STEPs 1, compiler sudo apt-get install build-essent ...
 - FORM内置系统函数
			
abort_query; 停止查询的执行 add_group_column(record grou ...
 - 6.2、Android Studio内存
			
Android Monitor提供了一个Memory Monitor,所以你可以非常容易的监测应用性能和内存使用,可以发现无用的对象,本地内存泄漏和连接设备的内存使用.Memory Monitor显示 ...
 - 【java虚拟机系列】JVM类加载器与ClassNotFoundException和NoClassDefFoundError
			
在我们日常的项目开发中,会经常碰到ClassNotFoundException和NoClassDefFoundError这两种异常,对于经验足够的工程师而言,可能很轻松的就可以解决,但是却不一定明白为 ...
 - 如何找到java对应的c/c++源码
			
很多时候java经常被c鄙视,因为c说我是你的基础,但java竟然有如此强的生命力就必然有其存在的价值.本文不探讨各种开发语言的优劣,仅仅介绍如何找到java对应c/c++实现的源码.当我们追究一个j ...