R语言学习笔记:时间序列分析

1.生成时间序列

ts()

 

ts(data = NA, start = 1, end = numeric(), frequency = 1, deltat = 1, ts.eps = getOption("ts.eps"), class =, names = )

data是数值向量或矩阵,数据框将被强制转化为数值向量;start是收集数据的第一年集第一个间隔期,如2018年第1季度,start = c(2018 , 1);end指终止时间点;frequency指定数据在一年中的频数,如月份为12,季度为4;deltat是frequency的倒数,两者设置其一;names为命名。

 

可以用plot.ts()绘制时间序列图

2.时间序列的分解

主要有4种影响因素:T(长期趋势),S(季节变动),C(循环变动),e(不规则变动)

估计趋势、季节性、不规则:

decompose()

 

decompose(x, type = c("additive", "multiplicative"), filter = NULL)

x是时间序列对象;type指定季节分解的形式,选择加法模型还是乘法模型;filter是滤波系数。

 

stl():使用Loess方法

 

stl(x, s.window, s.degree = 0,...)

x是时间序列的对象;s.window为字符串“periodic”或Loess方法提取季节的跨度,应为奇数值,没有默认值;s.degree是局部多项式拟合季节性提取的程度,0或1。

 

两种方法的结果都可以用plot()进行绘制。

3.指数平滑法

HoltWinters()

 

HoltWinders(x, alpha = NULL, beta = NULL, gamma = NULL, seasonal = c("additive", "multiplicative"), start.periods = 2, l.start = NULL, b.start = NULL, s.start = NULL, optim.start = c(alpha = 0.3, beta = 0.1, gamma = 0.1), optim.control = list())

x是时间序列的对象;alpha、beta、gamma是过滤系数,当beta和gamma都为FALSE时,使用简单指数平滑法(没有趋势,没有季节性),当只有gamma为FALSE时,使用Holt双参数线性指数平滑法(拟合非季节性模型),都不为FALSE时,使用Winters线性和季节性指数平滑法;seasonal选择加法模型还是乘法模型;start.periods是初始时期,用于初始值的自动检验,必须大于等于2;l.start、b.start和s.start分别表示水平、趋势和季节部分的初始值

 

输出的结果中,alpha、beta和gamma分别对应当前时点的水平、趋势部分的斜率和季节性部分,取值都在0~1,越接近1说明近期观测值再预测中占据的权重越大。

可用forecast()进行预测

4.残差的白噪声检验
 

相关图检验

acf()

 

acf(x, lag.max = NULL, type = c("correlation", "covariance", "partial"), plot = TRUE, na.action = na.fail, demean = TRUE, ...)

x为时间序列对象,检验时取模型的残差,model$residuals;lag.max指定计算自相关的最大滞后阶数;type指定计算自相关系数的方式;plot表示是否绘制自相关图。

 

自相关图中,如果自相关系数迅速衰落,落入边界内,就可能是白噪声;若超过边界,表示存在相关关系,在哪期落入,就是自相关的阶数。

Ljung-Box检验

Box.test()

 

Box.test(x, lag = 1, type = c("Box-Pierce", "Ljung-Box"), fitdf = 0)

x是检验的时间序列,检验时取模型的残差,model$residuals;lag指定计算相关系数的最大阶数;type指明检验类型,使用Ljung-Box;fitdf指明自由度。

 

根据检验的P值判断,原假设为不存在自相关。

5.ARIMA模型分析

arima()

 

arima(x, order = c(0, 0, 0), seasonal = list(order = c(0, 0, 0), period = NA),...)

x是单变量的时间序列;order按顺序设置p,d,q的值;seasonal是季节性部分

 

也可以通过forecast包中的auto.arima()函数获取恰当的模型参数,参数“ic”设置为BIC,要求较严格。
 

 


 

 

 


 

你可能感兴趣的:(R)