「売上が毎月1.3倍ずつ伸びているけど、この成長倍率って正確にはいくつなんだろう?」
こんなふうに思ったことはありませんか? GROWTH関数で予測値は出せても、指数回帰の倍率や切片といったパラメータそのものを確認したいときってありますよね。
そんなときに使えるのがスプレッドシートのLOGEST関数です。この記事では基本の書き方から統計量の読み方、LINEST関数との違いまで解説します。
スプレッドシートのLOGEST関数とは?(GROWTHの内部エンジン)
LOGEST関数(読み方: ロゲスト関数)は、指数回帰のパラメータを配列でまとめて返す統計関数です。「LOGEST」は英語の「LOGarithmic ESTimation(対数推定)」の略が由来です。
指数回帰とは、データの増え方が加速していくパターンに当てはめる手法のことです。数式モデルは y = b * m^x で、mが成長倍率、bがy切片にあたります。
LOGEST関数はLINEST関数の指数版です。LINESTは線形回帰(y = mx + b)のパラメータを返します。一方、LOGESTは指数回帰(y = b * m^x)のパラメータを返します。
もう1つの大事なポイントは、GROWTH関数との関係です。GROWTH関数は内部でLOGESTと同じ計算を行います。そして予測値を直接返してくれます。つまりLOGESTは「GROWTHの内部エンジン」にあたる関数です。
まとめると、LOGESTにできることは次のとおりです。
- 指数回帰の成長倍率(m)とy切片(b)を一括で返す
- verbose=TRUEにするとR²やF統計量など統計量フルセットも出力できる
- LINEST関数が「線形回帰のパラメータ」なら、LOGESTは「指数回帰のパラメータ」
- GROWTH関数が「予測値」を返すのに対し、LOGESTは「パラメータそのもの」を返す
NOTE
LOGEST関数はGoogleスプレッドシートの全バージョンで使えます。Googleスプレッドシートでは通常のEnterで自動的にスピル(隣接セルに展開)されます。Excelの旧バージョンではCtrl+Shift+Enterの配列入力が必要ですが、スプレッドシートでは不要です。
LOGEST関数の基本構文と引数
基本構文
=LOGEST(既知のy, [既知のx], [定数計算], [統計情報])
カッコの中に、従属変数のデータと、必要に応じて独立変数のデータやオプションを指定します。
引数の説明
| 引数 | 必須/任意 | 既定値 | 説明 |
|---|---|---|---|
| 既知のy | 必須 | — | 従属変数のデータ範囲(例: 売上データ)。正の数値のみ |
| 既知のx | 任意 | {1,2,3,…} | 独立変数のデータ範囲(例: 月番号)。省略すると連番が使われる |
| 定数計算 | 任意 | TRUE | TRUE=y切片bを計算、FALSE=bを1に固定 |
| 統計情報(verbose) | 任意 | FALSE | TRUE=統計量フル出力(5行)、FALSE=mとbのみ(1行) |
必須の引数は「既知のy」だけです。ただし、実務では「既知のx」も指定するのが一般的ですよ。
WARNING
既知のyには正の数値のみ指定できます。0以下の値が含まれていると
#NUM!エラーになります。指数回帰は内部で対数を取るため、0や負の値は計算できません。
TIP
4番目の引数「統計情報」をTRUEにすると、5行分の統計量マトリックスが出力されます。指数回帰の精度を確認したいときはTRUEがおすすめです。
最小構成と推奨構成
=LOGEST(B2:B7)
これが最小構成です。成長倍率mとy切片bだけが1行×2列で返ります。
=LOGEST(B2:B7, A2:A7, TRUE, TRUE)
こちらが推奨構成です。統計量フルセットが5行×2列で返ります。回帰分析に使うならこの書き方を基本にしてみてください。
WARNING
4番目の引数をTRUEにしたとき、結果は5行×2列に展開されます。出力先の下方向に5行・右方向に2列分の空きスペースを確保してください。既にデータがあると
#REF!エラーになります。
LOGEST関数の基本的な使い方
実際にLOGEST関数を使ってみましょう。
あるお店の6か月分の売上を記録したとします。毎月の伸びが加速しているのが特徴です。
| A列(月番号) | B列(売上・万円) | |
|---|---|---|
| 2行目 | 1 | 120 |
| 3行目 | 2 | 155 |
| 4行目 | 3 | 200 |
| 5行目 | 4 | 260 |
| 6行目 | 5 | 340 |
| 7行目 | 6 | 440 |
このデータは毎月おおむね1.3倍ずつ増えています。直線的ではなく加速する、典型的な指数成長のパターンですね。
成長倍率とy切片を取得する
D2セルに次の数式を入力します。
=LOGEST(B2:B7, A2:A7)
結果は2つの値が横に並んで返ります。
| D2(成長倍率 m) | E2(y切片 b) |
|---|---|
| 約 1.29 | 約 93.5 |
成長倍率mが約1.29ということは、「1か月ごとに約1.29倍ずつ伸びている」ことを意味します。y切片bは月番号0のときの理論上の売上ですよ。
GROWTH関数の結果と手動で照合する
LOGESTで得たmとbを使えば、予測値を手動で計算できます。たとえば月番号7の予測値は次のように求まります。
=93.5 * 1.29^7
この結果は約570万円です。GROWTH関数で =GROWTH(B2:B7, A2:A7, 7) と入力した結果と一致しますよ。
LOGESTはパラメータを返し、GROWTHは予測値を返す。この関係を押さえておくと使い分けがしやすくなります。なお、EXP関数とLN関数を組み合わせた =EXP(LN(b)+LN(m)*x) でも同じ結果が得られます。
verbose=TRUEで統計量を一括取得する
統計情報(verbose)をTRUEにすると、5行×2列の統計量マトリックスが返ります。単回帰(独立変数が1つ)の場合のレイアウトは次のとおりです。
=LOGEST(B2:B7, A2:A7, TRUE, TRUE)
| 行 | 列1 | 列2 |
|---|---|---|
| 1行目 | 成長倍率(m) | y切片(b) |
| 2行目 | mの標準誤差 | bの標準誤差 |
| 3行目 | 決定係数(R²) | 推定標準誤差(Syx) |
| 4行目 | F統計量 | 自由度(df) |
| 5行目 | 回帰平方和(SSR) | 残差平方和(SSE) |
構造はLINEST関数のverbose出力とまったく同じです。違いは1行目の値だけです。線形回帰の傾き・切片ではなく、指数回帰の成長倍率・y切片が入ります。
各行の意味を簡単に見ていきましょう。
1行目: 成長倍率とy切片
指数回帰モデル y = b * m^x のmとbです。mが1より大きければ成長、1より小さければ減少を示します。
2行目: 標準誤差
mとbの推定がどれくらい信頼できるかを示す指標です。値が小さいほど精度が高いことを意味します。
3行目: R²と推定標準誤差
R²(決定係数)はデータのばらつきのうち、指数回帰モデルで説明できる割合です。0〜1の範囲で、1に近いほどモデルの当てはまりが良いことを示します。
4行目: F統計量と自由度
F統計量は回帰モデル全体が統計的に有意かどうかを示す指標です。値が大きいほど有意性が高くなります。
5行目: 回帰平方和と残差平方和
回帰で説明できたばらつき(SSR)と、説明できなかったばらつき(SSE)です。
項目が多く見えますが、実務でまず確認すべきは1行目(m・b)と3行目(R²)です。この3つを押さえれば十分活用できますよ。
LINEST関数との違い(線形 vs 指数)
LOGESTとLINESTは対になる関数です。どちらを使うかは、データの増え方で判断します。
| 項目 | LINEST | LOGEST |
|---|---|---|
| 回帰モデル | 線形(y = mx + b) | 指数(y = b * m^x) |
| 1行目の出力 | 傾きm、切片b | 成長倍率m、y切片b |
| 適したデータ | 毎回同じ量だけ増える | 毎回同じ倍率で増える |
| 予測値を返す関数 | TREND関数 / FORECAST関数 | GROWTH関数 |
| 具体例 | 毎月+20万円ずつ売上増加 | 毎月×1.3倍ずつ売上増加 |
| 引数の構造 | 4つ(y, x, 切片, verbose) | 4つ(y, x, 定数, verbose) |
| verbose出力 | 5行×2列 | 5行×2列(同じ構造) |
どちらを選ぶか迷ったときは、グラフを描いてみるのが一番わかりやすいです。散布図が直線的ならLINEST関数、曲線的に加速しているならLOGESTを選んでみてください。
両方の関数でR²を出して比較するという方法もあります。R²が高いほうのモデルがデータに合っているので、判断材料として使えますよ。
よくあるエラーと対処法
LOGEST関数でよく見かけるエラーと、その対処法をまとめました。
| エラー | 原因 | 対処法 |
|---|---|---|
#NUM! | 既知のyに0以下の値が含まれている | yの値をすべて正の数値にする。0や負の値は指数回帰で計算できない |
#REF! | verbose=TRUE時に出力先のセルにデータがある | 下方向5行×右方向2列分のセルを空けてから入力する |
#N/A | 既知のyとxのデータ数が一致していない | yとxの行数を揃える |
特に #NUM! エラーはよく遭遇します。LOGEST関数は内部でLN関数(自然対数)を使って計算しています。対数は正の数値にしか定義されていないため、0以下の値があるとエラーになります。
売上データに「0」がある月は、1や0.1など小さい正の値で代替するか、該当行を除外して対処してみてください。
まとめ
この記事では、スプレッドシートのLOGEST関数の使い方を解説しました。
- LOGEST関数は指数回帰モデル(y = b * m^x)のパラメータを返す関数
- 成長倍率(m)とy切片(b)を一括で取得できる
- verbose=TRUEでR²やF統計量を含む統計量フルセットを出力できる
- LINEST関数は線形回帰、LOGESTは指数回帰という対の関係
- GROWTH関数は内部でLOGESTを使い、予測値を直接返す
指数的に伸びるデータの回帰パラメータを確認したいときは、ぜひLOGEST関数を使ってみてください。パラメータではなく予測値がほしいときはGROWTH関数が便利ですよ。
