「売上が毎月どんどん加速して伸びている」「このペースが続くと半年後はどれくらいになる?」
こんなふうに、伸びが加速するデータの将来予測をしたいときってありますよね。スプレッドシートのTREND関数やFORECAST関数で予測しても、直線的な予測になって実態と合わないことがあります。
そんなときに使えるのがGROWTH関数です。この記事では基本の書き方から実務での活用例、TREND関数やFORECAST関数との違いまで解説します。
スプレッドシートのGROWTH関数とは?指数トレンドで将来値を予測する
GROWTH関数(読み方: グロース関数)は、既存のデータから指数回帰で予測値を配列で返す統計関数です。「GROWTH」は英語の「growth(成長)」が由来です。
指数回帰とは、データの増え方が一定ではなく加速していくパターンに当てはめる手法のことです。数式モデルは y = b × m^x で、mが成長倍率、bがy切片にあたります。
たとえば「毎月1.3倍ずつ売上が伸びている」ようなデータがあるとします。GROWTH関数に将来の月番号を指定すると、指数トレンドに沿った予測値が一発で出ます。
GROWTH関数にできることをまとめると、次のとおりです。
- 既存データの指数的な傾向から、複数のxに対する予測値を配列で返す
- TREND関数が「直線的な予測」なのに対し、加速する成長パターンに対応できる
- 内部でLOGEST関数と同じ指数回帰の計算を自動的に行う
- 売上の急成長・SNSフォロワー増加・利用者数の拡大など、指数的な伸びの予測に活用できる
NOTE
GROWTH関数はGoogleスプレッドシートの全バージョンで使えます。Googleスプレッドシートでは結果が自動的にスピル(隣接セルに展開)されます。Excelの旧バージョンではCtrl+Shift+Enterで確定する必要がありますが、スプレッドシートではEnterだけでOKです。Excel版GROWTH関数の使い方はこちらで解説しています。
線形成長と指数成長の違い
GROWTH関数を使いこなすには、線形成長と指数成長の違いを押さえておきましょう。
| 項目 | 線形成長 | 指数成長 |
|---|---|---|
| 増え方 | 毎回同じ量だけ増える | 毎回同じ倍率で増える |
| 数式モデル | y = mx + b | y = b × m^x |
| 具体例 | 毎月20万円ずつ売上増加 | 毎月1.3倍ずつ売上増加 |
| グラフの形 | 直線 | 右肩上がりの曲線 |
| 対応する関数 | TREND / FORECAST | GROWTH |
「毎月+20万円」なら線形成長です。「毎月×1.3倍」なら指数成長です。増え方の量が一定か、倍率が一定かで判断するのがポイントです。
GROWTH関数の構文と4つの引数
=GROWTH(既知データ_y, [既知データ_x], [新規データ_x], [b])
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 既知データ_y | 必須 | 既存の従属変数データ(例: 売上データ)。正の数値のみ |
| 既知データ_x | 任意 | 既存の独立変数データ(例: 月番号)。省略すると {1,2,3,…} が使われる |
| 新規データ_x | 任意 | 予測したいxの値(例: 7〜9月の月番号)。省略すると既知データ_xと同じ値が使われる |
| b | 任意 | y切片を計算するか(TRUE/省略)、1に固定するか(FALSE) |
必須の引数は「既知データ_y」だけです。ただし、実務では「既知データ_x」と「新規データ_x」も指定するのが一般的ですよ。
WARNING
既知データ_yには正の数値のみ指定できます。0以下の値が含まれていると
#NUM!エラーになります。これはGROWTH関数が内部で対数を取るためです。
TIP
「既知データ_x」を省略すると、1, 2, 3… という連番がxとして使われます。時系列データで月番号を振っている場合は省略してもOKです。
GROWTH関数の基本的な使い方
実際にGROWTH関数を使ってみましょう。
あるお店で6か月分の売上を記録したとします。毎月の伸びが加速しているのが特徴です。
| A列(月番号) | B列(売上・万円) | |
|---|---|---|
| 2行目 | 1 | 120 |
| 3行目 | 2 | 155 |
| 4行目 | 3 | 200 |
| 5行目 | 4 | 260 |
| 6行目 | 5 | 340 |
| 7行目 | 6 | 440 |
このデータは毎月おおむね1.3倍ずつ増えています。直線的な伸びではなく、加速している典型的な指数成長パターンですね。
単一の将来値を求める
まず、7月目の予測値を1つだけ求めてみます。D2セルに予測したい月番号「7」を入力して、次のように書きます。
=GROWTH(B2:B7, A2:A7, D2)
結果は約 570 です。指数トレンドに沿って、7月目の売上は570万円になると予測できます。
複数の将来値を一括予測する(スピル自動展開)
D列に予測したい月番号(7, 8, 9)を入力しておきます。
=GROWTH(B2:B7, A2:A7, D2:D4)
結果は約 570, 740, 960 の3つの値が配列として返ります。D2〜D4セルに予測値が自動で展開されます。
1つの数式で3か月分の予測値が出るのがGROWTH関数の強みです。FORECAST関数だとセルごとに数式を入力する必要があります。しかもFORECASTは直線予測なので、加速するデータには合いません。
ちなみに、同じデータでTREND関数(直線予測)を使うと7月目は約474万円です。GROWTH関数の570万円と比べると、指数成長のデータではTRENDが過小評価になることがわかりますね。
第4引数「b」をFALSEにするケース
第4引数bをFALSEにすると、y切片が1に固定されます。数式モデルが y = m^x になるイメージです。
=GROWTH(B2:B7, A2:A7, D2:D4, FALSE)
これはどんなときに使うかというと、「x=0のときyは1であるべき」という前提がある場合です。たとえば成長倍率だけを見たいケースや、初期値を基準に何倍になるかだけを求めたい場面で使います。
通常はTRUE(デフォルト)で問題ありません。特別な理由がない限り、第4引数は省略してOKですよ。
実務でよく使う活用パターン
売上の指数成長予測
スタートアップや新サービスの立ち上げ期は、売上が指数的に伸びるケースが多いです。そんなときにGROWTH関数が活躍します。
| A列(月番号) | B列(月次売上・万円) | |
|---|---|---|
| 2行目 | 1 | 80 |
| 3行目 | 2 | 110 |
| 4行目 | 3 | 150 |
| 5行目 | 4 | 200 |
| 6行目 | 5 | 270 |
| 7行目 | 6 | 360 |
D2:D6に予測月(7〜12月)の番号を入力して、次の数式を入力します。
=GROWTH(B2:B7, A2:A7, D2:D7)
向こう6か月分の予測が一括で出ます。経営会議の資料や事業計画に使えるデータが一発で揃いますね。
TIP
GROWTH関数はあくまで「過去のトレンドがこのまま続く」前提の予測です。市場の飽和や競合の参入など、外部要因で成長が鈍化する可能性もあります。予測値はシナリオの1つとして扱ってください。
SNSフォロワー数・アクティブユーザー数の予測
SNSのフォロワー増加やアプリのアクティブユーザー数は、バズや口コミで指数的に伸びることがあります。
| A列(週番号) | B列(フォロワー数) | |
|---|---|---|
| 2行目 | 1 | 500 |
| 3行目 | 2 | 700 |
| 4行目 | 3 | 1,000 |
| 5行目 | 4 | 1,400 |
| 6行目 | 5 | 2,000 |
| 7行目 | 6 | 2,800 |
=GROWTH(B2:B7, A2:A7, {7; 8; 9})
配列リテラル {7; 8; 9} を使えば、別のセルに予測用の値を入力しなくても一括予測ができます。結果は約 3,970、5,610、7,920 です。
このデータは毎週おおむね1.4倍ペースで伸びています。TREND関数で直線予測すると7週目は約2,980になり、実態より低めの予測になってしまいます。成長が加速しているデータにはGROWTH関数のほうが適していますよ。
GROWTH・TREND・FORECASTの使い分け早見表
スプレッドシートには予測系の関数が複数あります。それぞれの違いを表にまとめます。
| 項目 | GROWTH | TREND | FORECAST / FORECAST.LINEAR |
|---|---|---|---|
| 予測の種類 | 指数回帰(曲線) | 線形回帰(直線) | 線形回帰(直線) |
| 数式モデル | y = b × m^x | y = mx + b | y = mx + b |
| 入力 | xを複数(配列)で指定 | xを複数(配列)で指定 | xを1つだけ指定 |
| 出力 | 予測値を配列で返す | 予測値を配列で返す | 予測値を1つ返す |
| 向いているデータ | 伸びが加速するデータ | 一定ペースで増減するデータ | 一定ペースで増減するデータ |
| 係数を取得する関数 | LOGEST | LINEST | SLOPE |
データが直線的か指数的かを見分ける3つのチェック
どの関数を選ぶかは、データの増え方で決まります。次の3つのチェックで判断してみてください。
チェック1: 差分と倍率を比べる
各データの「前月との差」と「前月との倍率」を計算します。差がほぼ一定なら線形、倍率がほぼ一定なら指数です。
チェック2: グラフで確認する
データを散布図にして眺めます。点が直線的に並んでいれば線形。右に行くほど急に上がる曲線なら指数です。
チェック3: 対数を取って直線になるか確認する
yの値にLN関数(自然対数)を適用します。対数を取ったあとのデータが直線的に並ぶなら、元のデータは指数的です。この判定方法が最も正確ですよ。
判断フロー:どの関数を選べばいい?
迷ったときは、次のフローで判断してみてください。
- 予測したい値は1つだけ? → YES なら FORECAST関数 または FORECAST.LINEAR関数
- 複数の予測値を一括で出したい? → 次のステップへ
- データの伸びが加速している? → YES なら GROWTH関数
- データが一定ペースで増減? → YES なら TREND関数
TIP
迷ったら、まずTREND関数とGROWTH関数の両方で予測を出してみましょう。予測値と実績のズレが小さいほうを採用するのが実務的なアプローチです。
よくある疑問と注意点
予測値がおかしいとき
GROWTH関数の予測値が実態とかけ離れている場合、次の原因が考えられます。
| 症状 | 原因 | 対策 |
|---|---|---|
| 予測値が大きすぎる | データ数が少なく成長率を過大評価している | データ期間を長くする |
| 予測が実績とずれる | そもそもデータが指数成長ではない | TREND関数に切り替える |
#NUM! エラー | 既知データ_yに0以下の値がある | yは正の数値のみにする |
#VALUE! エラー | 引数に数値以外の値が含まれている | セル範囲に文字列が混じっていないか確認する |
#NUM! エラー | 既知データ_yとxの配列サイズが異なる | セル範囲の行数を揃える |
特に多いのが #NUM! エラーです。GROWTH関数は内部でyの対数(LN関数)を計算するため、yに0やマイナスの値があると計算できません。売上データで「売上ゼロの月」がある場合は、その行を除外するか1に置き換える必要がありますよ。
TIP
エラーが表示されると困る場合は、IFERROR関数で囲むと安心です。
=IFERROR(GROWTH(B2:B7, A2:A7, D2:D4), "データを確認")のように書けます。
LOGESTとの違い
GROWTH関数とよく比較されるのがLOGEST関数です。この2つの関係は、TREND関数とLINEST関数の関係と同じです。
| 項目 | GROWTH | LOGEST |
|---|---|---|
| 返す値 | 予測値(yの値) | 回帰係数(m と b) |
| 用途 | 将来の値を予測したいとき | 成長倍率や切片を知りたいとき |
| 数式モデル | y = b × m^x の y を返す | y = b × m^x の m と b を返す |
GROWTH関数は「予測値そのもの」を返します。一方LOGESTは「成長倍率mとy切片b」を返します。「毎月何倍ずつ伸びているか」を知りたいならLOGEST、「来月の予測値はいくらか」を知りたいならGROWTHを使い分けてください。
たとえば先ほどの売上データ(120, 155, 200, 260, 340, 440)でLOGESTを実行すると、mが約1.30と返ります。これは「毎月約1.3倍ずつ成長している」という意味ですね。GROWTH関数はこのmとbを使って予測値を計算しているわけです。
まとめ
GROWTH関数は、既存のデータから指数回帰で予測値を配列で返す関数です。
この記事のポイント
- 構文は
=GROWTH(既知データ_y, [既知データ_x], [新規データ_x], [b])で、必須は既知データ_yのみ - 数式モデルは
y = b × m^x。伸びが加速するデータの予測に最適 - TREND関数は直線予測、GROWTH関数は曲線予測。データの増え方で使い分ける
- yに0以下の値があると
#NUM!エラーになる。正の数値のみ指定してください - LOGESTは係数を返す関数。GROWTHは予測値を返す関数。目的で選び分ける
関連する統計関数
GROWTH関数の使い方がわかったら、以下の関数もあわせて覚えてみてください。データ分析の幅が広がりますよ。
- TREND関数 — 線形回帰で複数の予測値を一括で返す
- FORECAST関数 — 1つのxに対する線形予測値を返す
- FORECAST.LINEAR関数 — FORECAST関数の新しい名称
- LINEST関数 — 線形回帰の係数(傾きと切片)を返す
- SLOPE関数 — 回帰直線の傾きを求める
- EXP関数 — 自然対数の底eのべき乗を求める
- LN関数 — 自然対数を求める
