如何在 r 中计算指数移动平均线


在时间序列分析中,移动平均线只是之前多个时期的平均值。

指数移动平均线是一种更重视近期观察结果的移动平均线,这意味着它能够更快地捕捉近期趋势。

本教程介绍如何在 R 中计算指数移动平均值。

示例:R 中的指数移动平均线

假设我们在 R 中有以下数据框:

 #create data frame
df <- data.frame(period=1:10,
                 sales=c(25, 20, 14, 16, 27, 20, 12, 15, 14, 19))

#view data frame
df

   period sales
1 1 25
2 2 20
3 3 14
4 4 16
5 5 27
6 6 20
7 7 12
8 8 15
9 9 14
10 10 19

我们可以使用pracma包中的movavg() 函数来计算之前多个周期的指数加权移动平均值。

该函数使用以下语法:

movavg(x, n, type=c(“s”, “t”, “w”, “m”, “e”, “r”))

金子:

  • x:数字向量形式的时间序列
  • n:用于计算平均值的先前周期数
  • type:要计算的移动平均线的类型。我们将使用“e”表示指数加权移动平均线。

例如,以下是如何使用前四个周期计算指数加权移动平均线:

 library (pracma)

#create new column to hold 4-day exponentially weighted moving average
df$EWM_4day <- movavg (df$sales, n=4, type=' e ')

#view DataFrame 
df

        period sales 4dayEWM
0 1 25 25.000000
1 2 20 23.000000
2 3 14 19.400000
3 4 16 18.040000
4 5 27 21.624000
5 6 20 20.974400
6 7 12 17.384640
7 8 15 16.430784
8 9 14 15.458470
9 10 19 16.875082

我们还可以使用 ggplot2 可视化库来可视化相对于 4 天指数加权移动平均线的销售额:

 library (ggplot2)
library (reshape2)

#melt data into format for easy plotting
df <- melt (df, id.vars = ' period ', variable.name = ' series ')

#plot sales vs. 4-day exponentially weighted moving average
ggplot(df, aes (period, value)) +
  geom_line( aes (color=series))

R 中的指数加权移动平均线

红线显示每个时期的销售额,蓝线显示指数加权移动平均值。

其他资源

如何在 R 中绘制多列
如何在 R 中对列进行平均
如何计算R中每组的平均值

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注