時系列データにおける移動平均を使うメリットとは

logo_Python

移動平均は株価や天気などの時間で細かく変化する時系列データの全体の傾向をつかみたいときに使用します。

目次

はじめに

今回は移動平均についてまとめました。移動平均は主に時系列データを扱う時に使用します。

移動平均とは

株価や気温などの時系列データは時間で細かく変化するため、全体の傾向を掴みにくい場合があります。そのようなときには「移動平均」を用いることで、変化をより滑らかにしてデータを俯瞰できます。

どのように使用するか

今回はpandas-datareaderを使用します。

Web上の様々なソースにアクセスできるPythonライブラリの1つです。既存のPython環境にPandasが入っていれば使えるわけではないのでインストールが必要です。

pip install pandas_datareader

必要なライブラリをインポートします。

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns 
import pandas_datareader.data as web
import datetime as dt

今回はFRED(St.Louis Fed)を使用します。

これは、ビットコインの米ドルに対する価格のデータです。

start = dt.date(2017,1,1)
end = dt.date(2023,1,1)
code = "CBBTCUSD"

df = web.DataReader(code,"fred",start,end)

データの長さと欠損値の数を確認します。

print(f"data length:{len(df)}")
print(f"\n{df.isnull().sum()}"

data_length:2192

 

CBBTCUSD     1

 

今回のデータでは欠損値が1つしかないので欠損値がある行を削除します。

df = df.dropna(axis = 0)

dfを可視化します。

plt.figure(figsize = (10,5))
sns.lineplot(
    x = "DATE",
    y = "CBBTCUSD",
    data = df
)

データの量が多く、年度によって値が細かく変わっているので、全体の流れがつかみにくいです。

ここで便利なのが「移動平均」です。多くの場合の移動平均はデータ長の10%の値に設定する場合が多いです。windowにデータ長の10%の値を指定します。引数min_periodsに整数値を指定すると、その値の個数のデータが含まれていれば結果が算出されます。

 

df["10%MA"] = df["CBBTCUSD"].rolling(window = 219,min_periods = 0).mean()

移動平均も含めたグラフを出力します。

plt.figure(figsize = (10,5))
for col in df.columns:
  graph = sns.lineplot(
      x = "DATE",
      y = col,
      data = df,
      label = col
)
plt.legend(loc = "upper left") 

移動平均があることによって、全体の傾向がつかみやすく、より分かりやすいグラフになったかと思います。

まとめ

今回は移動平均についてまとめました。

移動平均によって、変化が激しい時系列データでも全体の傾向をつかむことができるので、そのようなデータに遭遇した際には使ってみると良いかもしれません。

CTA
  • URLをコピーしました!
  • URLをコピーしました!
この記事を書いた人
目次