K_DM Book
用語集
対象者 高校生
対象者別の入口 →

対象者の設定はこのブラウザの中にだけ保存されます。

言語 JA

移動平均でノイズをならす(高校生向け)

入門高校生

06.4.3 高校生向け

移動平均でノイズをならす(高校生向け)

最終更新 2026-11-01 読了時間 2 分
まとめ
移動平均は、「直近 7 日の平均」のような小さな窓の平均を、窓を 1 日ずつずらしながら毎日計算して線にしたものです。日ごとの細かい揺れ(ノイズ)を打ち消し、「上り坂か下り坂か」というトレンドを見やすくします。窓を 7 日から 30 日へ広げるほど線はなめらかになりますが、向きが変わった瞬間(転換点)が遅れて見えるのが代償です。元の折れ線も薄く重ねて描くのがコツで、ならした線だけを見ると 1 日だけの突発的な変化を見逃します。

こんな場面を想像してみよう #

毎日の勉強時間を 2 か月記録すると、部活のある日は 30 分、休日は 3 時間、とジグザグした折れ線になります。そのままでは「最近は増えているのか減っているのか」が分かりません。知りたいのはジグザグの 1 本 1 本ではなく、その真ん中を通る大きな流れです。

下の図は標準版の例です。60 日分の日次売上(灰色)に 7 日移動平均(青)を重ねています。

60 日分の日次売上を灰色の細い折れ線で、その 7 日移動平均を青い太い線で重ねた図。灰色は毎日ギザギザに揺れ、青はその真ん中をなめらかに通って全体の上がり下がりだけを示している

灰色の線は毎日上下していますが、青い線を見れば「どのあたりで上昇が始まり、どこで頭打ちになったか」が読めます。移動平均が答える問いは 「日々の揺れを除くと、この数字はどちらへ向かっているか」 です。

窓をずらして平均をとる #

まず窓の幅を決めます。図では 7 日で、1 週間の曜日のパターン(週末に多い、など)をちょうど 1 周ぶん含むので、曜日の揺れが打ち消されます。次に最初の窓の平均を出します。1 日目から 7 日目の 7 個の値を足して 7 で割り、その値を窓の真ん中の 4 日目に打ちます。続いて窓を 1 日ずらして同じ計算を繰り返し、2 日目から 8 日目の平均を 5 日目に、3 日目から 9 日目の平均を 6 日目に打っていきます。1 日ごとに 1 個の値が入れ替わるだけなので、隣り合う平均は少しずつしか変わらず、線がなめらかになります。最後に元の線と重ねます。灰色の原系列を細く薄く、青の 7 日移動平均を太く描くと、どちらが主役かが一目で分かります。

窓の幅を変えると図はどう変わるでしょう。窓を 3 日に縮めると、青い線は灰色に近づいてギザギザが残ります。窓を 30 日に広げると、青はほとんど直線になりますが、山の頂上が実際より右(後ろ)にずれて見え、両端の 15 日ずつは値が計算できず欠けます。「なめらかさ」と「反応の速さ」は交換条件です。

次のコードは、10 日分の値に 3 日の窓をずらして平均を出す手順を、そのまま書いたものです。

1
2
3
4
5
sales = [52, 61, 48, 70, 66, 58, 75, 80, 71, 69]  # 10 日分の売上
window = 3
for i in range(len(sales) - window + 1):
    avg = sum(sales[i:i + window]) / window
    print(f"day {i + 2}: {avg:.1f}")  # 窓の真ん中の日に書く

出力は day 2 から day 9 までの 8 個。10 日分あっても、両端の 1 日ずつは窓がはみ出すので計算できません。48 や 80 のような飛び出た値が、53.7 や 75.3 のようにならされていることも確かめてください。

動かして見てみよう #

下の図で「再生」を押すと、説明した手順が 1 つずつ進みます。手順ごとの説明は図の下に出ます。

気をつけたいこと #

最初の課題は、窓が広すぎることです。転換点が大きく遅れて見え、「もう下がり始めている」のに上向きの線を見てしまうので、データの周期(週なら 7 日、年なら 12 か月)に合わせます。二つ目は、端の欠けを無視することです。真ん中に打つ方式では最初と最後の数日が空白になり、「最新の値がない」ことに気づかずに読むと直近の変化を見落とします。三つ目は、ならした線だけを見ることです。1 日だけの急な落ち込み(システム障害や休業)は移動平均ではほとんど見えないので、原系列を必ず重ねておきます。

やってみよう #

まず、10 日分の最高気温を天気サイトから写し、紙で 3 日移動平均を計算して、元の折れ線と重ねて描いてみよう。次に 5 日移動平均も計算して、3 日のときと「なめらかさ」「山の位置」を比べてみよう。最後に、「移動平均で消えてしまうと困る変化」の例を身の回りから 1 つ考えてみよう(ヒント:1 日だけ起きる出来事)。

つぎに読む #

pandas.Series.rolling を使った計算と描画は 標準版の移動平均でノイズをならす で扱っています。2 本以上の折れ線を同じ軸で読む基本は 複数の折れ線で推移を比べる(高校生向け) へ。折れ線グラフ全体の一覧は 折れ線グラフのセクション にまとめています。