「来月の売上はどれくらいになりそう?」「このペースだと年末には何件に届く?」
こんなふうに、過去のデータから将来の値を予測したいときってありますよね。グラフを見て「なんとなく上がりそう」ではなく、具体的な数値で示せると説得力が段違いです。
そんなときに使えるのがFORECAST関数です。この記事では基本の書き方から実務での活用例、SLOPE・INTERCEPTとの関係、TREND関数との違いまで解説します。
FORECAST関数とは?線形予測で将来の値を求める関数
FORECAST関数(読み方: フォーキャスト関数)は、既存のデータから線形回帰で予測値を返す統計関数です。最小二乗法という手法で回帰直線を求めます。「FORECAST」は英語の「forecast(予測・予報)」が由来です。
線形回帰とは、散布図に描かれた点の並びに最もフィットする直線を引く手法のことです。FORECAST関数はこの直線上の値を返すので、「過去のトレンドがこのまま続くと仮定したときの予測値」が得られます。
たとえば、6か月分の広告費(x)と売上(y)のデータがあるとします。FORECAST関数に「広告費40万円」を指定すると、その直線に基づいた売上予測が一発で出ます。
FORECAST関数にできることをまとめると、次のとおりです。
- 既存データの傾向から、指定したxに対するyの予測値を求める
- SLOPE関数とINTERCEPT関数の計算を内部で自動的に行う
- 売上予測・需要予測・人員計画など、数値の将来推定に活用できる
- CORREL関数と組み合わせて予測の信頼性を確認できる
NOTE
FORECAST関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同名の関数があり、動作は同じです。Excel 2016以降では後継の「FORECAST.LINEAR」も用意されていますが、結果は同じです。
FORECAST関数の書き方(構文と引数)
基本構文
=FORECAST(x, データ_y, データ_x)
カッコの中に、予測したいxの値と、既存の2つのデータ範囲を指定します。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| x | 必須 | 予測したいxの値(例: 広告費40万円) |
| データ_y | 必須 | 従属変数のデータ範囲(例: 売上データ) |
| データ_x | 必須 | 独立変数のデータ範囲(例: 広告費データ) |
引数は3つです。最初にxの値を指定し、そのあとにyとxのデータ範囲を並べます。SLOPE関数やINTERCEPT関数と同じく、yが先、xが後です。
WARNING
データ_yとデータ_xのデータ数は同じにしてください。データ数が異なると
#N/Aエラーになります。
TIP
範囲内の文字列・TRUE/FALSE・空白セルは自動的に無視されます。ただし、数値としての「0」は計算の対象になります。
FORECAST関数の基本的な使い方
実際にFORECAST関数を使ってみましょう。
あるお店で6か月分の「広告費(万円)」と「売上(万円)」を記録したとします。
| A列(月) | B列(広告費) | C列(売上) | |
|---|---|---|---|
| 2行目 | 4月 | 10 | 150 |
| 3行目 | 5月 | 15 | 200 |
| 4行目 | 6月 | 20 | 280 |
| 5行目 | 7月 | 25 | 310 |
| 6行目 | 8月 | 30 | 390 |
| 7行目 | 9月 | 35 | 450 |
広告費40万円のときの売上を予測する
=FORECAST(40, C2:C7, B2:B7)
結果は約 512 になります。これは「広告費を40万円に増やすと、売上は約512万円になる」という予測です。
予測値の読み取り方
FORECAST関数の結果は、データの傾向をそのまま延長した推定値です。読み取るときのポイントをまとめます。
| ポイント | 説明 |
|---|---|
| あくまで直線的な予測 | データが曲線的に変化する場合、予測がずれる可能性がある |
| データ範囲内の予測は安定 | 既存データの範囲内(10〜35)の予測は比較的正確 |
| 範囲外の外挿は注意 | 既存データの範囲を大きく超えた予測は精度が落ちる |
TIP
「データの範囲を大きく超えたxの値」を指定するときは注意が必要です。たとえば広告費100万円の予測は、実際のデータ(10〜35万円)から遠いため精度が保証されません。
FORECAST関数の実践的な使い方・応用例
来月の売上を予測する
月番号をxとして使えば、時系列の予測ができます。
| A列(月番号) | B列(売上) | |
|---|---|---|
| 2行目 | 1 | 320 |
| 3行目 | 2 | 345 |
| 4行目 | 3 | 360 |
| 5行目 | 4 | 390 |
| 6行目 | 5 | 410 |
| 7行目 | 6 | 440 |
7か月目の売上を予測するには、次のように書きます。
=FORECAST(7, B2:B7, A2:A7)
結果は約 463.7 です。「7か月目の売上は約464万円になる見込み」と報告できますね。
複数月を一括で予測する
8か月目、9か月目もまとめて予測したい場合は、D列にxの値を入れてFORECAST関数をコピーするだけです。
D2: =FORECAST(7, B2:B7, A2:A7) → 約 463.7
D3: =FORECAST(8, B2:B7, A2:A7) → 約 487.4
D4: =FORECAST(9, B2:B7, A2:A7) → 約 511.1
CORREL関数で予測の信頼性を確認する
FORECAST関数はどんなデータでも予測値を返します。しかし、データに相関がなければ予測の意味がありません。
そこでCORREL関数の出番です。先に相関の強さを確認しておきましょう。
=CORREL(B2:B7, A2:A7)
相関係数が0.7以上なら、FORECAST関数の予測を信頼して活用できます。0.3程度の場合は「参考値」にとどめておくのが安全です。
| 相関係数 | 判断 | FORECAST関数の使い方 |
|---|---|---|
| 0.7以上 | 相関が強い | 予測値を意思決定に活用できる |
| 0.4〜0.7 | 中程度の相関 | 予測は参考値として扱う |
| 0.4未満 | 相関が弱い | 予測の信頼性は低い |
FORECAST関数とSLOPE・INTERCEPTの関係
FORECAST関数は、内部でSLOPE関数とINTERCEPT関数の計算をしています。数式で書くと次のとおりです。
FORECAST(x, データ_y, データ_x) = SLOPE(データ_y, データ_x) × x + INTERCEPT(データ_y, データ_x)
つまり回帰式 y = ax + b の計算を、FORECAST関数が一括で行ってくれるわけです。傾き(a)と切片(b)を個別に求める手間が省けます。
実際に検算してみましょう。先ほどの広告費・売上データで確認します。
=SLOPE(C2:C7, B2:B7) → 約 12.1(傾き)
=INTERCEPT(C2:C7, B2:B7) → 約 28.3(切片)
回帰式は y = 12.1 x x + 28.3 です。x=40を代入すると、12.1 x 40 + 28.3 = 約512。FORECAST(40, C2:C7, B2:B7) の結果と一致しますね。
使い分けの目安
| やりたいこと | 使う関数 |
|---|---|
| 予測値だけほしい | FORECAST関数 |
| 傾きや切片の数値も把握したい | SLOPE + INTERCEPT |
| 傾き・切片・予測値すべてほしい | SLOPE + INTERCEPT + 手計算(またはFORECASTで検算) |
「予測値だけサッと出したい」ならFORECAST関数がおすすめです。「傾きの数値を報告に使いたい」ならSLOPE関数を個別に使ってください。
TREND関数との違い・使い分け
FORECAST関数と似た関数にTREND関数があります。どちらも線形回帰で予測値を求めますが、使いどころが異なります。
| 項目 | FORECAST | TREND |
|---|---|---|
| 入力 | xの値を1つ指定 | xの値を複数(配列)で指定できる |
| 出力 | 予測値を1つ返す | 予測値を配列で返す |
| 構文 | =FORECAST(x, データ_y, データ_x) | =TREND(データ_y, データ_x, 新しいx) |
| 用途 | 「来月の売上は?」のようなピンポイント予測 | 「向こう6か月の売上推移は?」のような一括予測 |
| 引数の順序 | x, データ_y, データ_x | データ_y, データ_x, 新しいx |
FORECASTが向いているケース
- 「広告費40万円のときの売上は?」のように、特定の1つのxに対する予測値がほしい
- セルに1つの数式を入れて結果を得たい
TRENDが向いているケース
- 「7月〜12月の売上予測を一括で出したい」のように、複数のxに対する予測が必要
- グラフ用のデータとして予測値の列を作りたい
TIP
迷ったらFORECAST関数から試してみてください。1つの値を予測するだけならFORECASTのほうがシンプルです。複数の予測が必要になったらTREND関数に切り替えるという流れがスムーズですよ。
よくあるエラーと対処法
#N/Aエラー
FORECAST関数で最もよく見るエラーです。
| 原因 | 対策 |
|---|---|
| データ_yとデータ_xの行数が異なる | セル範囲の行数を揃える |
たとえば =FORECAST(40, C2:C7, B2:B10) のように行数がずれていると発生します。範囲を確認してください。
#DIV/0!エラー
以下の原因が考えられます。
| 原因 | 対策 |
|---|---|
| 数値データが1つしかない | 2つ以上の数値データを指定する |
| データ_xがすべて同じ値 | データにばらつきがあるか確認する |
データ_xがすべて同じ値だと、回帰直線を引くための分母が0になります。データ入力のミスがないか確認してください。
#VALUE!エラー
| 原因 | 対策 |
|---|---|
| xに数値以外の値を指定した | xには数値またはセル参照を指定する |
最初の引数xに文字列を入れてしまうケースです。予測したいxの値が数値であることを確認してください。
TIP
エラーが表示されると困る場合は、IFERROR関数で囲むとスマートです。
=IFERROR(FORECAST(40, C2:C7, B2:B7), "データ不足")のように書けます。
まとめ
FORECAST関数は、既存のデータから線形回帰で予測値を返す関数です。
この記事のポイント
- 構文は
=FORECAST(x, データ_y, データ_x)で、予測したいxの値を最初に指定する - 内部で SLOPE x x + INTERCEPT の計算を自動的に行っている
- 予測値だけほしいならFORECAST、傾き・切片も把握したいならSLOPE+INTERCEPT
- TREND関数は複数のxを一括予測できる上位互換
- 使う前にCORREL関数で相関の強さを確認するのがおすすめ
関連する統計関数
FORECAST関数の使い方がわかったら、以下の関数もあわせて覚えてみてください。データ分析の幅が広がりますよ。
