R小盐准备介绍R语言机器学习与预测模型的学习笔记
你想要的R语言学习资料都在这里, 快来收藏关注【科研私家菜】
01 什么是趋势分析
对于同时存在趋势、周期、波动成分的时间序列曲线,直接分析其趋势特性显然是不合适的。
在R语言中,通过使用TTR包中的SMA和EMA函数,来对时序数据进行平滑处理,从而提取时序数据的趋势成分。
Moving Averages
Description
Calculate various moving averages (MA) of a series.
Usage
SMA(x, n = 10, ...)
EMA(x, n = 10, wilder = FALSE, ratio = NULL, ...)
DEMA(x, n = 10, v = 1, wilder = FALSE, ratio = NULL)
WMA(x, n = 10, wts = 1:n, ...)
EVWMA(price, volume, n = 10, ...)
ZLEMA(x, n = 10, ratio = NULL, ...)
VWAP(price, volume, n = 10, ...)
VMA(x, w, ratio = 1, ...)
HMA(x, n = 20, ...)
ALMA(x, n = 9, offset = 0.85, sigma = 6, ...)
- SMA计算过去n个观测值的算术平均值。
- EMA计算指数加权平均值,给予近期观测更多权重。参见下面的警告部分。
- WMA类似于EMA,但如果wts的长度等于n,则采用线性加权。如果wts的长度等于x的长度,则WMA将使用wts的值作为权重。
- DEMA的计算方法为:DEMA = (1 + v) * EMA(x,n) - EMA(EMA(x,n),n) * v(带有相应的wilder和ratio参数)。
- EVWMA使用体积来定义MA的周期。
- ZLEMA类似于EMA,因为它给予最近的观测更多的权重,但试图通过减去(n-1)/2周期(默认)之前的数据来消除滞后,以最小化累积效应。
- VWMA和VWAP计算成交量加权移动平均价格。
- VMA根据w的绝对值计算变长移动平均值。w值越高(越低),VMA反应越快(越慢)。
- HMA是另两个WMA的差值,使其反应非常灵敏。
-
ALMA受高斯滤波器启发,倾向于减少对最近观察的权重,减少过度的倾向。
除了SMA函数,EMA函数也通常用来做平滑,它与SMA函数的区别在于,SMA函数是使用
最近n个观测值的算术平均值来平滑,而EMA函数使用的是指数加权平均,离当前位置越近,权重越大。
02 R语言实现
library(TTR)
plot(AirPassengers)
ap.sma=SMA(AirPassengers,n=10)
lines(ts(ap.sma,start=1949,end=1961,frequency = 12),col='red',lwd=2)
ap.ema=EMA(AirPassengers,n=10,ratio=0.15)
lines(ts(ap.ema,start=1949,end=1961,frequency = 12),col='blue',lwd=2,lty=2)
效果如下:
如图所示,红色线就是经过平滑处理的曲线,与原始曲线相比,没有那么明显的周期性和 波动性了,趋势性表现得更强。 如图所示,蓝色线即为通过指数平滑得到的曲线,可以根据实际业务需要或根据数据的波动性来确定合适的ratio,使得平滑效果更好。关注R小盐,关注科研私家菜,有问题请联系R小盐。让我们一起来学习 R语言机器学习与临床预测模型
网友评论