R で移動平均を計算する方法 (例あり)


時系列分析では、移動平均は、前のいくつかの期間の平均値を表します。

R で移動平均を計算する最も簡単な方法は、 zooパッケージのrollmean()関数を使用することです。

 library (dplyr)
library (zoo)

#calculate 3-day rolling average
df %>%
  mutate(rolling_avg = rollmean(values, k= 3 , fill=NA, align=' right '))

この特定の例では、 Valuesというラベルの付いた列の3日間の移動平均を計算します。

次の例は、この関数を実際に使用する方法を示しています。

例: R で移動平均を計算します。

R に、連続 10 日間の製品の売上を示す次のデータ フレームがあるとします。

 #create data frame
df <- data. frame (day=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
                 sales=c(25, 20, 14, 16, 27, 20, 12, 15, 14, 19))

#view data frame
df

   day 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

次の構文を使用して、データ フレームの各行に過去 3 日間の移動平均売上高を表示するavg_sales3という新しい列を作成できます。

 library (dplyr)
library (zoo)

#calculate 3-day rolling average of sales
df %>%
  mutate(avg_sales3 = rollmean(sales, k= 3 , fill=NA, align=' right '))

   day sales avg_sales3
1 1 25 NA
2 2 20 NA
3 3 14 19.66667
4 4 16 16.66667
5 5 27 19.00000
6 6 20 21.00000
7 7 12 19.66667
8 8 15 15.66667
9 9 14 13.66667
10 10 19 16.00000

: rollmean()関数のkの値は、移動平均の計算に使用される前の期間の数を制御します。

avg_sales3列には、過去 3 期間の移動平均売上高が表示されます。

たとえば、最初の値19.66667は次のように計算されます。

3 日移動平均 = (25 + 20 + 14) / 3 = 19.66667

mutate()関数内で複数のrollmean()関数を使用すると、複数の移動平均を一度に計算することもできます。

たとえば、次のコードは、売上の 3 日および 4 日の移動平均を計算する方法を示しています。

 library (dplyr)
library (zoo)

#calculate 3-day and 4-day rolling average of sales
df %>%
  mutate(avg_sales3 = rollmean(sales, k= 3 , fill=NA, align=' right '),
         avg_sales4 = rollmean(sales, k= 4 , fill=NA, align=' right '))

   day sales avg_sales3 avg_sales4
1 1 25 NA NA
2 2 20 NA NA
3 3 14 19.66667 NA
4 4 16 16.66667 18.75
5 5 27 19.00000 19.25
6 6 20 21.00000 19.25
7 7 12 19.66667 18.75
8 8 15 15.66667 18.50
9 9 14 13.66667 15.25
10 10 19 16.00000 15.00

avg_sales3 列avg_sales4列には、それぞれ売上の 3 日と 4 日の移動平均が表示されます。

追加リソース

次のチュートリアルでは、R で他の一般的なタスクを実行する方法について説明します。

R で複数の列をプロットする方法
R で列の平均を計算する方法
R でグループごとの平均を計算する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です