売上の日次データや株価のようにブレが大きい時系列を眺めていると、本当の傾向が見えにくく感じる場面があります。生データをそのままグラフにすると上下動が激しく、増加トレンドなのか減少傾向なのかの判断が難しくなります。移動平均を使えば短期的なブレを吸収して滑らかな曲線が描けるため、傾向の把握が一段と容易になります。
Googleスプレッドシートではいくつかの方法で移動平均を計算できますが、TREND関数を使った線形回帰の応用は、単なる平均だけでなく将来予測も同時に行える便利なテクニックです。AVERAGE関数を範囲指定して計算する素朴な方法と、TREND関数で線形回帰を当てる方法の両方を理解しておくと、データの性質に応じた使い分けが可能です。
この記事では、移動平均の基本的な計算手順、TREND関数を使った線形補間との組み合わせ、グラフでの可視化、データ更新時の自動再計算までをまとめて解説します。
【要点】移動平均とTREND関数を組み合わせる3つの基本
- =AVERAGE(範囲) で単純移動平均: 過去N日のデータの平均を取る最もシンプルな方法で、ARRAYFORMULAで一括計算できます。
- =TREND(既知のy, 既知のx, 新しいx) で線形回帰: データに直線を当てはめてトレンドを推定し、欠損値の補間や将来予測にも応用できます。
- グラフのトレンドラインで視覚的に補完: 散布図や折れ線グラフに「トレンドライン」を追加すると、回帰式の係数も同時に表示されます。
ADVERTISEMENT
目次
移動平均の役割とTREND関数の位置づけ
移動平均は時系列データの短期的な変動を平均化することで、長期的な傾向を浮かび上がらせる手法です。例えば7日間の売上を毎日平均すれば、曜日による変動が吸収されて週単位の動きが見えやすくなります。データの周期性に合わせて移動の幅(期間)を変えるのが基本で、月次なら3ヶ月や12ヶ月、日次なら7日や30日が定番の選択肢です。
TREND関数は最小二乗法による線形回帰を計算する関数で、引数として既知のy値と既知のx値を渡すと、データに最もフィットする直線の式を内部的に求めて、新しいx値に対する予測値を返します。移動平均と組み合わせると、平均化されたデータに対してさらに直線的な傾向を抽出できるため、ノイズが乗ったデータからもクリーンな傾向線を描けます。
単純移動平均と加重移動平均の違い
単純移動平均は対象期間内の値を等しく平均する方法で、計算がシンプルです。加重移動平均は新しいデータに大きな重みをつけて平均する方法で、直近の傾向を重視したい場合に向いています。Googleスプレッドシートでは加重移動平均はSUMPRODUCT関数を使って実装できますが、まずは単純移動平均から始めるのが入りやすいです。
TREND関数と関連関数の関係
TREND関数は線形回帰を行いますが、関連としてGROWTH関数(指数回帰)、FORECAST関数(単一の予測値)、LINEST関数(回帰係数の取得)があります。トレンドが直線的なら TREND、指数的なら GROWTH、単一値の予測なら FORECAST と使い分けます。
AVERAGE関数で7日移動平均を計算する手順
- 日付と売上のデータをA列・B列に用意します
A列に日付、B列に売上というシンプルな構成にします。データはB2から始まると仮定します。 - 移動平均の結果を入れる列を用意します
C列に「7日移動平均」のヘッダーを置き、C8セルから計算を始めます(過去7日分が必要なので8行目から)。 - C8に =AVERAGE(B2:B8) を入力します
これでB2からB8までの7日分の平均が計算されます。 - C8セルを下方向にコピーします
相対参照で範囲が自動的に1行ずつずれて、各行で過去7日分の平均が計算されます。 - ARRAYFORMULAで一括計算する応用
C8に =ARRAYFORMULA(IF(ROW(B8:B100)>=8, AVERAGE(OFFSET(B2,ROW(B8:B100)-8,0,7,1)), “”)) のように書くと、コピペなしで全行の移動平均が一気に展開されます。
TREND関数で時系列データの線形傾向を求める手順
- x軸の値を別列に用意します
連続した整数(1, 2, 3…)でも良いですし、日付シリアル値でも構いません。例としてA列に日付、B列に売上があるなら、C列に =ROW(A2)-1 のように行番号ベースのxを置きます。 - =TREND(売上範囲, x範囲) を入力します
D2に =TREND(B2:B100, C2:C100) と入力すると、回帰直線上の値がD2:D100に配列として展開されます。 - 結果は配列で返されることを確認します
1セルに1つの数式を入れただけで、対応する全行の予測値が表示されます。これがARRAYFORMULA的な動きです。 - 未来の予測値を求める場合は新しいxを指定します
=TREND(B2:B100, C2:C100, 101) のように第3引数に未来のx値を渡すと、その時点の予測売上が単一の値として返されます。 - 切片を強制的に0にする場合は第4引数
=TREND(B2:B100, C2:C100, , FALSE) と書くと、切片を0にした回帰直線が計算されます(既定はTRUEで切片自由)。
ADVERTISEMENT
グラフで移動平均と回帰線を可視化する手順
- 日付・売上・移動平均の3列を選択してグラフを挿入します
挿入メニューからグラフを選び、種類を折れ線グラフに変更します。 - 系列ごとに線の色とスタイルを変えます
生データを薄い色、移動平均を太く濃い色にすると傾向が見やすくなります。 - トレンドラインを追加します
系列の設定で「トレンドライン」を有効にし、線種を「線形」にすると回帰線が自動表示されます。係数や式の表示もチェックボックスで切り替えられます。 - 必要に応じて予測区間を表示します
「予測」設定で過去と未来の延長日数を指定すると、グラフが過去・未来方向に拡張されます。
移動平均計算でよく起きる問題と対処
結果が #DIV/0! エラーになる
対象範囲に空セルしか含まれない場合、AVERAGE関数は割り算でエラーを返します。IFERROR関数で囲んで =IFERROR(AVERAGE(B2:B8), 0) のように初期値を返す形にすると、エラー表示を回避できます。
移動平均の最初のN行が計算できない
7日移動平均なら、最初の6日分は過去データが不足するため計算できません。これは正常な挙動で、IF関数で =IF(ROW()<8, "", AVERAGE(B2:B8)) のように先頭行を空白にすると見栄えが整います。
TREND関数の結果がデータと異なる
TRENDは線形回帰のため、データが指数的に伸びている場合は実態とずれます。データの分布を確認し、指数的な場合はGROWTH関数を、対数的な場合はLINESTで対数回帰を組むのが適切です。
関数別の用途比較
| 関数 | 計算内容 | 主な用途 |
|---|---|---|
| AVERAGE | 単純移動平均 | ノイズ除去・短期変動の平滑化 |
| TREND | 線形回帰の予測値 | 直線トレンドの抽出と将来予測 |
| GROWTH | 指数回帰の予測値 | 指数的成長データの予測 |
| FORECAST | 単一の線形予測 | 1点だけの予測値が欲しい場合 |
| SUMPRODUCT | 加重移動平均 | 新しいデータを重視した平滑化 |
まとめ
移動平均は時系列データの傾向を視覚化する基本ツールで、AVERAGE関数による単純移動平均が最も入りやすい入口です。TREND関数を組み合わせると線形回帰による傾向線も描け、未来予測や欠損値の補間にも応用できます。グラフのトレンドライン機能と併用すれば、回帰式の係数を見ながら傾向の強さを定量的に把握することも可能です。データの性質に応じてAVERAGEとTRENDを使い分け、必要に応じてGROWTHやFORECASTを組み合わせると、より精度の高い分析が実現できます。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】複合グラフで棒と折れ線を同時表示!2軸グラフの作り方
- 【Googleスプレッドシート】FILTER関数で条件に合う行だけ抽出!数式1つで動的な絞り込み
- 【Googleスプレッドシート】フィルタ表示で他の人の表示を変えずに絞り込み!共有時の使い分け
- 【Googleスプレッドシート】重複データを抽出して表示!COUNTIFと条件付き書式の併用
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】ARRAYFORMULAで列全体に数式を一括適用!セル分の入力を不要に
- 【Googleスプレッドシート】データ範囲を動的に伸縮させる!INDIRECTと参照範囲のコツ
- 【Googleスプレッドシート】共有解除と権限の取り消し!アクセスを完全に閉じる手順
