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」を使用します。
たとえば、前の 4 つの期間を使用して指数加重移動平均を計算する方法は次のとおりです。
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))
赤い線は各期間の売上高を示し、青い線は指数加重移動平均を示します。