Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Matplotlib】Pythonで信頼区間付きの時系列データをプロットする方法

はじめに

Pythonで時系列データを可視化する際、平均値の推移だけでなく信頼区間(confidence interval)を一緒に表示すると、データのばらつきや不確実性を直感的に把握できます。本記事では、Matplotlibのplot()メソッドとfill_between()メソッドを組み合わせて、移動平均とその信頼区間を1つのグラフに描画する手順を解説します。

実装の手順

  • 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
  • 時系列配列を作成します。
  • 変数 n_steps を初期化し、移動平均と標準偏差を計算するためのウィンドウ幅を指定します。
  • 信頼区間の下限線と上限線を算出します。
  • plot() メソッドで平均線を描画します。
  • fill_between() メソッドで信頼区間を塗りつぶして表示します。
  • show() メソッドで図を出力します。

コード例

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

# 時系列配列の生成(サイン波 + ランダムノイズ)
time_series_array = np.sin(np.linspace(-np.pi, np.pi, 400)) + np.random.rand(400)

# 移動平均・標準偏差の計算に使うステップ数
n_steps = 15

time_series_df = pd.DataFrame(time_series_array)

# 移動平均を計算
line = time_series_df.rolling(n_steps).mean()

# 標準偏差の2倍(約95%信頼区間に相当)
line_deviation = 2 * time_series_df.rolling(n_steps).std()

under_line = (line - line_deviation)[0]
over_line = (line + line_deviation)[0]

# 平均線をプロット
plt.plot(line, linewidth=2)

# 信頼区間を半透明の塗りつぶしで表示
plt.fill_between(line_deviation.index, under_line,
                 over_line, color='red', alpha=.3)

plt.show()

出力結果

【Matplotlib】Pythonで信頼区間付きの時系列データをプロットする方法

解説

このコードでは、まずサイン波にランダムノイズを加えた時系列データを生成しています。次に、Pandasのrolling()メソッドを使って15ステップ分の移動平均と標準偏差を計算し、「平均 ± 2×標準偏差」を信頼区間の上下限として求めています。

実行すると、赤色の半透明な帯として信頼区間が表示され、その中心を移動平均線が通るグラフが出力されます。帯が広がっている部分はデータのばらつきが大きいことを示しており、時系列データのトレンドと不確実性をひと目で確認できるのが大きなメリットです。alpha=.3 の値を調整すれば、帯の透明度も自由に変更できます。

  1. Matplotlibのラベルに改行を入れる方法|Pythonサンプルコード付きで解説

    本記事では、PythonのMatplotlibを使って、グラフの軸ラベルに改行を挿入する方法を解説します。「\n」を活用することで、X軸やY軸のラベルを複数行に分けて見やすく表示できます。 実装手順 「\n」を使用して、X軸・Y軸それぞれのラベルに改行を含めたテキストを設定します。 plt.rc()メソッドで現在のrcParamsを設定し、axesグループに対してプロパティサイクルを適用します。 cyclerを使って、線の色のグループを設定します。色のリストは「r」(赤)、「g」(緑)、「b」(青)、「y」(黄)で構成されます。 Cyclerクラスは、単一の位置引数、2つの位置引数のペア、ま

  2. Python Matplotlibで円グラフの一部を強調表示して描画する方法

    はじめに あなたが最も好きなグラフの種類は何ですか?経営層やビジネスアナリストにこの質問をすると、即座に「円グラフ(パイチャート)!」と答えられるほど、円グラフは割合を視覚的に表現するための最も一般的な手法のひとつです。 この記事では、PythonのMatplotlibを使って基本的な円グラフを描く方法から、explodeパラメータで特定のセクターを強調表示するテクニック、さらにパーセンテージではなく実際の値をラベルとして表示するカスタム関数の実装まで、段階的に解説します。 基本的な円グラフの作成手順 ステップ1:Matplotlibのインストール まず、以下のコマンドでMatplotlibを