对于任何离散平稳过程{Xt}它都可以分解为两个不相关的平稳序列之和其中一个为确定性的,另外一个为随机性的。
任何一个时间序列都可以分解成两部分的叠加,其中一部分是由多项式决定的确定性趋势成分,另外一部分是平稳的零均指误差成分。
Gramer分解定理说明任何一个时间序列的波动都可以视为同时受到了确定性影响和随机性影响的作用。平稳时间序列要求这两方面影响都是确定的,而非平稳序列产生的机理就在于它所受到的这两方面影响至少有一个方面是不稳定的。
通常,由确定性因素导致的非平稳会显示出明显的规律性,比如显著的趋势或固定的周期。我们把这些容易提取的确定性因素提取出来便是确定性因素分解。
常见的四大确定性因素:
(1)长期趋势
(2)循环波动
(3)季节性变化
(4)随机波动
综合以上因素对时序的影响,我们可以建立以下两个模型:
(1)加法模型:
如果观察期不是特别长,人们将循环因素(Ct)改成了交易日因素(Dt),改进模型如下:
(1)加法模型:
(2)乘法模型:
我们对确定性时序分析的目的有以下两种:
(1)克服其他因素的影响,单纯测度出某一各确定性因素对序列的影响。
(2)推断出各种确定性因素彼此之间的相互作用关系以及他们对序列的综合影响。
趋势拟合法j就是把时间作为自变量,相应的序列观测值作为因变量,建立序列值随时间变化的回归模型的方法。
R语言使用lm(Y~a+X1+x2+....+Xn,data=)
Y:响应变量
a:是否需要常数项,1表示需要
X1:自变量
data:数据框名字
例子:
读入数据:
x<-c(8444,9215,8879,8990,8115,9457,8590,9294,8997,9574,9051,9724,9120,
10143,9746,10074,9578,10817,10116,10779,9901,11266,10686,10961,10121,
11333,10677,11325,10698,11624,11052,11393,10609,12077,11376,11777,
11225,12231,11884,12109)
#构造时间自变量
t<-c(1:40)
#拟合回归模型
x.fit<-lm(x~t)
#查看集合模型
summary(x.fit)
#绘制拟合效果图
x<-ts(x)
plot(x)
abline(lm(x~t),col=2)
如果长期趋势出现非线性特征,我们需要采用曲线模型来拟合它。
非线性回归函数:
nls(Y~f(X1,X2,....,Xn),data=,start=)
Y:响应变量
X1:自变量
f:非线性函数
start:采用迭代法计算计算未知参数时,所指定的迭代初始值
例子
#导入数据
a<-read.table("E:/R/data/file12.csv",sep=",",header = T)
x<-ts(a$output,start=1949)
#lm函数拟合
t1<-c(1:60)
t2<-t1^2
x.fit1<-lm(x~t1+t2)
summary(x.fit1)
#nls函数拟合
x.fit2<-nls(x~a+b*t1+c*t1^2,start = list(a=1,b=1,c=1))
summary(x.fit2)
y<-predict(x.fit2)
y<-ts(y,start = 1949)
plot(x,type = "p")
lines(y,col=2,lwd=2)
平滑法;利用修匀技术,削弱短期随机波动对序列的影响,使序列平滑,从而显示出变化的规律
需要用到的函数:
SMA(x,n=)
n:移动平均期数
library(TTR)
a<-read.table("E:/R/data/file6.csv",",",header = T)
x<-ts(a$temp,start = 1949)
x.ma<-SMA(x,n=5)
plot(x,type = "o")
lines(x.ma,col=2,lwd=2)
#导入数据
a<-read.table("E:/R/data/file4.csv",sep=",",header = T)
x<-ts(a$output,start = 1964)
#进行Holt两参数平滑
x.fit<-HoltWinters(x,gamma = F)
x.fit
#绘制平滑效果图
plot(x.fit)
#预测序列并绘制效果图
x.fore<-forecast(x.fit,h=10)
x.fore
plot(x.fore)
###########################################
三参数指数平滑:
#导入数据
b<-read.table("E:/R/data/file5.csv",sep=",",header = T)
x<-ts(b$milk,start = c(1962,1),frequency = 12)
#进行三参数指数平滑
x.fit<-HoltWinters(x)
x.fit
#绘制平滑效果图
plot(x.fit)
#绘制平滑拟合效果图
x.fore<-forecast(x.fit,h=24)
plot(x.fore)
主要研究的是既有趋势起伏变动又有季节效应的复杂时间序列
“季节”效应:凡是出现固定周期性变化的事件,都称它具有季节效应。
#确定性因素分解函数:
decompose(x,type)
x:序列名字
type:
type="additive" 加法模型
type="multiplicative" 乘法模型
例子介绍:
#读入序列,画出时序图
c<-read.table("E:/R/data/file14.csv",sep=",",header = T)
x<-ts(c$sales,start = c(1993,1),frequency = 12)
plot(x)
#确定性因素分解
x.fit<-decompose(x,type="mult")
#查看季节指数,并绘制季节指数图
x.fit$figure
plot(x.fit$figure,type = "o")
#趋势序列拟合图
x.fit$trend
plot(x.fit$trend)
#随机波动(残差值)残差图
x.fit$random
plot(x.fit$random)
#因素分解图
x.fit
plot(x.fit)