Excel の近似式が間違っている!?
UB3/informatics/excel/trend_eq_wrong
このページの最終更新日: 2024/09/30広告
Excel の近似式は間違っている (合わない) 場合がある
最初のこの問題に出くわしたときは、全く何が起こっているのかわからなかった。
まず、こんな感じの x と y があったとする。両者の関係性を知りたいときには、まず散布図を書くのが基本である (参考: R のプロット関数、ggplot で散布図を作成する)。
散布図は以下のようになり、上に凸の分布になる。そこで、二次関数の近似曲線 trendline を追加し、式と R2 値を表示させる。
ちなみに、これは回帰分析である。このあたりを詳しく知りたい人は、以下のページなどを参照のこと。
回帰式は y = -2E-05x2 + 0.0038x - 0.0721 であり、R2 も 0.9383 とかなり良い値が出ている。-2E-05 は 0.00002 のこと。
したがって、この式の x に 40, 60, 70... などの値を代入すれば、y の値に近い 0.04, 0.07, 0.082... のような値が出るはずである。
ところが、実際に計算してみると、
最大値もおかしい。プロットと近似曲線からみると、x = 80 前後で y は最大の値をとるはずである。しかし、計算してみると x = 95 付近で y が最大になっており、これも非常におかしい。
これは多くの人が経験する問題のようで、「Excel 近似曲線 合わない」などで検索するとヒントが得られる。しかし、トップヒットした Microsoft のページは、以下のように支離滅裂なもの。機械翻訳か?
Microsoft Excel で近似曲線が正しくプロットされないのは、X 値を手動で入力すると、表示される数式によって不正確な結果が得られる可能性があるためです。外観の場合、各 X 値は、グラフに表示される有効桁数に丸められます。この動作により、数式がグラフ領域で占めるスペースが少なくなります。ただし、グラフの精度は大幅に低下します。これにより、傾向が正しく表示されない可能性があります。 |
解決方法
y を 1,000 倍にしてやってみたらヒントがつかめた。x に対して 1000y をプロットする。もちろんグラフの形は全く同じで、y 軸の値が変わるだけであるが、数式には変化がみられ、y = -0.024x2 + 3.8172x - 72.074 となる。
先ほどと同じように、この式に x の値を当てはめてみる。たとえば x = 40 のときには 1000y = 42.214 となり、これはもともとの y の値にかなり近い。最大値も x = 80 付近であり、グラフの見た目と一致している。
二次関数の最大値を求めるサイトはいろいろあるが、この WolframAlpha がお気に入りである。最大値を求める場合には maximum calculator というページを使い、関数を入力する。
Compute をクリックすると、x = 9543/112、つまり約 85.2 のときに y は 47464079/605000 ~ 78.5 ぐらいで最大となる。これはグラフと非常に一致した結果である。
つまり、解決方法は
原因
Excel の近似式が合わなかった原因は、本来の x2 の係数である -0.000024 が
これを避けるためには、上で示したように回帰の際に x と y の値を近くすればいいのだが、もっと本質的には
0.00002 などという数字を見たら「有効数字一桁じゃん、これはなんとかしないと不正確だな」と思えるようなセンスを身につけておきたい。
広告
コメント欄
サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。