Menu

指数回帰の計算ツール

増加や減衰のデータに当てはまる曲線 y = a·bˣ と、1ステップごとの変化率。

著者 Nethanel Bar, 共同創業者兼CEO

最終更新

計算ツールなしで解けるようになりたいですか?

Coddy の数学コースは解き方そのものを教えます。対話式のボードで一手ずつ進め、どこで手順が狂ったのかを正確に教えてくれます。

指数回帰は、足すのではなく掛けて増えるものを当てはめる

直線は x が1増えるごとに同じ量を足します。一方、同じ倍率で掛けられていくものもたくさんあります。複利で増えるお金、細菌の培養、電池に残った電荷、冷めていく飲み物と部屋との温度差。このパターンが y = a·bˣ で、a は x = 0 での値、b は1ステップごとに掛かる倍率です。b が 1 より大きければ増加、0 と 1 の間なら減衰で、(b − 1) を百分率にしたものが1ステップあたりの変化率です。

当てはめる標準的な方法は、各 y の自然対数をとることです。y = a·bˣ なら ln y = ln a + x·ln b で、これは x についての直線です。そこで点 (x, ln y) に普通の最小二乗法で直線を当てはめ、傾きから ln b を、切片から ln a を読み取り、対数を元に戻します。TI-84 の ExpReg コマンドや Excel の指数近似曲線が行っているのもこの計算で、このページは ln y の列、当てはめた直線、a と b を取り戻す2つの指数計算と、すべての段階を見せます。

対数は無理数なので、このシリーズの回帰計算ツールの中で答えが正確な分数ではなく丸めた小数になるのはこれだけで、結果の隣にそう明記します。また、0 や負の数の対数は存在しないので、y はすべて 0 より大きい必要があります。表示される r² は ln y に当てはめた直線の r² で、グラフ電卓が表示するのと同じ値です。

この曲線について気づいてほしいこと

  • b は1ステップごとの倍率で、(b − 1) が変化率です。b ≈ 0.8195 なら、各ステップで前の値のおよそ 81.95% が残り、1ステップあたりおよそ 18.05% の減衰です。
  • a は x = 0 での当てはめた値で、最初のデータ点とは限りません。x = 0〜5 で y = 100, 82, 67, 55, 45, 37 なら、当てはめの結果は a ≈ 99.9517 です。
  • 同じ曲線は k = ln b として y = a·eᵏˣ とも書けます。k が正なら増加、負なら減衰で、ln 2 / |k| が倍になる時間、または半減期です。
  • 当てはめは y ではなく ln y に対する最小二乗法です。y が 5 でも 5000 でも、10% のずれを同じ重さで扱うので、割合で増えるデータに向いています。
  • 対数の尺度で r² が高くても、増え方が指数的だという証明にはなりません。直線上のデータ 5, 4, 3, 2, 1 でも、指数曲線を当てはめると r² ≈ 0.9473 になります。

指数回帰を手で計算する手順

  1. 各 y の対数をとる

    各 y を ln y に置き換えます。x = 0, 1, 2, 3, 4、y = 3, 6, 12, 24, 48 なら、新しい列はおよそ 1.0986、1.7918、2.4849、3.1781、3.8712 です。

  2. (x, ln y) に直線を当てはめる

    点 (x, ln y) について、普通の最小二乗法の式で傾きと切片を求めます。ここでは傾きはおよそ 0.6931、切片はおよそ 1.0986 です。

  3. 対数を元に戻す

    傾きは ln b、切片は ln a なので、b = e の(傾き)乗、a = e の(切片)乗です。ここでは b ≈ e^0.6931 = 2、a ≈ e^1.0986 = 3 です。

  4. 曲線を書き、変化率を読む

    y ≈ 3·2ˣ、底 e では y ≈ 3e^(0.6931x) です。b = 2 は各ステップで y が2倍になるという意味で、1ステップあたり 100% の増加、倍になる時間はちょうど1ステップです。

小さなデータの指数回帰

各行は、上の計算ツールに入力したデータ1組です。値はすべて小数第4位までに丸めています。

x の値y の値当てはめた曲線1ステップごとの変化ln y の r²
0, 1, 2, 3, 43, 6, 12, 24, 48y ≈ 3 · 2ˣ+100%1
0, 1, 2, 3, 4, 5100, 82, 67, 55, 45, 37y ≈ 99.9517 · 0.8195ˣ-18.05%1.0000
1, 2, 3, 4, 52.1, 4.3, 8.9, 17.5, 36y ≈ 1.0413 · 2.0313ˣ+103.13%0.9999
0, 1, 2, 3, 41000, 1050, 1102.5, 1157.625, 1215.50625y ≈ 1000 · 1.05ˣ+5%1
0, 1, 2, 3, 45, 4, 3, 2, 1y ≈ 5.6968 · 0.6762ˣ-32.38%0.9473

解いてみる

1ステップごとに2倍

plain
x: 0, 1, 2, 3, 4; y: 3, 6, 12, 24, 48

各 y は前の値のちょうど2倍なので、点は y = 3·2ˣ の上にぴったり並び、計算ツールは a ≈ 3、b ≈ 2、1ステップあたり 100% の増加、r² = 1 を返します。底 e では同じ曲線が y ≈ 3e^(0.6931x) で、0.6931 は ln 2 です。x = 6 まで延ばすと 3·2⁶ = 192 と予測します。

減衰: 冷めていくコーヒー

plain
x: 0, 1, 2, 3, 4, 5; y: 100, 82, 67, 55, 45, 37

y を部屋との温度差とし、5分ごとに測ったものと読んでください。当てはめは y ≈ 99.9517 · 0.8195ˣ、つまり y ≈ 99.9517e^(-0.1991x) です。各ステップで温度差のおよそ 18.05% が消え、半減期は ln 2 / 0.1991、およそ 3.48 ステップです。対数への当てはめはほぼ完全で、r² は小数第5位まで 0.99999、計算ツールはこれを 1 に丸めます。

ノイズのある増加

plain
x: 1, 2, 3, 4, 5; y: 2.1, 4.3, 8.9, 17.5, 36

値は各ステップでほぼ2倍になりますが、ちょうど2倍ではありません。当てはめは y ≈ 1.0413 · 2.0313ˣ、1ステップあたりおよそ 103.13% の増加で、対数の尺度で r² ≈ 0.9999 です。底 e では k ≈ 0.7087 なので、倍になる時間は ln 2 / 0.7087、およそ 0.98 ステップです。

複利

plain
x: 0, 1, 2, 3, 4; y: 1000, 1050, 1102.5, 1157.625, 1215.50625

年 5% の利息がつく残高 1000 です。計算ツールは y ≈ 1000 · 1.05ˣ、1ステップあたり +5% の変化、r² = 1 を取り戻します。残高の一覧から利率を読み戻すことこそ、この当てはめの使いどころです。

データが指数的でないとき

plain
x: 0, 1, 2, 3, 4; y: 5, 4, 3, 2, 1

これらの点は各ステップで同じ量だけ減るので、直線 y = -x + 5 の上にあります。それでも指数曲線を当てはめると y ≈ 5.6968 · 0.6762ˣ、対数の尺度で r² ≈ 0.9473 が返り、まずまずに見えます。曲線を点に重ねると両端でずれます。ここで正しいモデルは直線で、線形回帰ならぴったり当てはまります。

よくある間違い

  • 0 以下の y を含める。そこでは対数が定義されないので、計算ができません。データが本当に 0 に達するなら、それは指数的ではありません。
  • b を百分率として読む。b = 1.05 は1ステップあたり 5% の増加、b = 0.82 は 82% ではなく 18% の減衰です。
  • a と最初の y の値を取り違える。a は x = 0 での当てはめた値で、最初のデータ点と一致するのは、当てはまりが完全でデータが x = 0 から始まるときだけです。
  • 一方の手順で常用対数を、もう一方で e を使う。対数をとるときと元に戻すときに同じ底を使えば、底は何でもかまいません。
  • 対数の尺度の r² を指数的増加の証明と信じる。直線上のデータでも 0.9 を超えることがあります。曲線を点に重ねて見てください。
  • はるか先まで外挿する。指数的な増加はいずれ必ず行き詰まりますが、当てはめた曲線にはそれがいつかを知る手段がありません。

指数回帰についてよくある質問

指数回帰は手でどう計算しますか。
各 y の自然対数をとり、点 (x, ln y) に普通の最小二乗法で直線を当てはめ、対数を元に戻します。b は e の(傾き)乗、a は e の(切片)乗です。x = 0〜4 で y = 3, 6, 12, 24, 48 なら、直線の傾きは 0.6931、切片は 1.0986 で、b = 2、a = 3 となり、y = 3·2ˣ です。
y = a·bˣ の a と b は何を意味しますか。
a は x = 0 のときの y の値、b は x が1増えるごとに y に掛かる倍率です。b が 1 より大きければ増加、0 と 1 の間なら減衰です。1ステップあたりの変化率は (b − 1) を百分率にしたもので、b = 1.05 なら +5%、b = 0.8195 ならおよそ -18.05% です。
データから増加率はどう求めますか。
曲線を当てはめて b を読みます。計算ツールは x が1増えるごとの変化を百分率で表示します。このページのノイズのある倍増の例では +103.13%、冷めていくコーヒーでは -18.05% です。x を年で測っていれば、それが年率です。
y = a·bˣ と y = a·eᵏˣ の違いは何ですか。
書き方の違いだけです。k = ln b とした同じ曲線で、b = eᵏ です。k が連続的な変化率になり、ln 2 / |k| で倍になる時間や半減期が直接出るので、科学では底 e の形がよく使われます。
計算ツールが分数ではなく小数を出すのはなぜですか。
この方法は対数をとり、整数の対数はほとんどの場合無理数になるからです。このシリーズの線形回帰と二次回帰の計算ツールは正確な分数を出しますが、これは小数第4位までに丸めた値を出し、近似であると明記します。
Excel やグラフ電卓と答えが少し違うのはなぜですか。
TI-84 の ExpReg や Excel の指数近似曲線は、どちらも ln y に最小二乗法を当てはめるので、丸めの範囲で一致するはずです。y に直接非線形最小二乗法を当てはめるソフトウェアは別の量を最小にするので、a と b がわずかに違ってきます。最も大きな値でのずれを最も重く扱うからです。
指数回帰で y が負や 0 になってもかまいませんか。
いいえ。この方法はすべての y の対数をとり、ln 0 や負の数の対数は存在しません。そもそも a が正の曲線 y = a·bˣ はつねに 0 より上にあるので、0 に達するデータはそうした曲線に従っていません。

ほかの数学ツール

Coddyのプログラミング言語のイラスト

Coddyで数学を学ぼう

始める