R语言 如何计算指数型移动平均线
在这篇文章中,我们将了解如何在R编程语言中计算指数移动平均线。
指数移动平均线(EMA) 告诉我们之前K个数据点的加权平均值。EMA将更大的权重和意义放在最近的数据点上。为了得到EMA,我们将使用R编程语言中的pracma包。要安装,请运行以下命令。
install.packages("pracma")
创建用于演示的数据框架
# create data frame
df <- data.frame(Rank=1:10,
Marks=c(65, 60, 54, 46, 37,
30, 29, 25, 24, 19))
# Display data frame
print(df)
输出 。
Rank Marks
1 1 65
2 2 60
3 3 54
4 4 46
5 5 37
6 6 30
7 7 29
8 8 25
9 9 24
10 10 19
在R中计算指数型移动平均线
movavg()函数用于计算R中的EMA。
movavg(x, n, type=c(“s”, “t”, “w”, “m”, “e”, “r”)
参数
- x:数字向量的时间序列。
- n:后向窗口长度。
- type:”s”、”t”、”w”、”m”、”e”、或 “r “中的一个。
library(pracma)
df <- data.frame(Rank=1:10,
Marks=c(65, 60, 54, 46, 37,
30, 29, 25, 24, 19))
# Exponentially weighted moving average
# using the 3 previous marks
dfEMA <- movavg(dfMarks, n=3, type='e')
# Display DataFrame
print(df)
输出 。
Rank Marks EMA
1 1 65 65.00000
2 2 60 62.50000
3 3 54 58.25000
4 4 46 52.12500
5 5 37 44.56250
6 6 30 37.28125
7 7 29 33.14062
8 8 25 29.07031
9 9 24 26.53516
10 10 19 22.76758
EMA的可视化
在这里,我们将通过线图将标记与3天指数加权移动平均线相比进行可视化。
library(ggplot2)
library(reshape2)
library(pracma)
df <- data.frame(Rank=1:10,
Marks=c(65, 60, 54, 46, 37,
30, 29, 25, 24, 19))
# Exponentially weighted moving average
# using the 3 previous marks
dfEMA <- movavg(dfMarks, n=3, type='e')
df <- melt(df , id.vars = 'Rank', variable.name = 'series')
ggplot(df, aes(Rank, value)) +
geom_line(aes(colour = series))
输出 。