アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルであるデータの散布図を作りました。
ばらつきがみられたので、近似曲線をどうしようかと思ったのですが、6次の多項式近似を行ったところ、プロットした点をほぼすべて正確に通る近似曲線がひけました。
その近似式の式は
y==3E-10*x^6 - 8E-08*x^5 + 8E-06*x^4 - 0.0004*x^3 + 0.0091*x^2 - 0.0695x + 0.3314
でした。
R^2も0.999でほとんど1だったので、このデータ(曲線)の式=近似曲線の式とみなしてもいいと思ったのですが、ダメなのでしょうか?

実際のデータではx=97.12561のときy=6.37なのですが、この式に代入するとy=-14になってしまいます。
なぜでしょうか?
E-10というのは10^(-10)ということで正しいですよね?

A 回答 (7件)

#1さんも言われているように単なる各項の有効桁数の不足による桁落ち誤差ですね。


多項式の各項の係数が1桁では、計算精度も高々1桁ですね。
x=97.12 ... ≒100=10^2ですから
y≒3*10^2-8*10^2+8*10^2-4*10^2+0.91*10^2-0.0695*10^2+0.003314*10^2
≒(3-8+8-4+0.9-0.1+0.0)*10^2
≒(-1.1+0.9)*10^2=-0.2*10^2
この計算は100の位だけが有効桁で10の桁は誤差の範囲に含まれ、有効桁数0桁に桁落ちしているということです。

なので100の桁が有効な桁なので、y=6.37もy=-14も見かけだけの数値で、その値が100より1桁以上、下の桁なので数値的意味はありません。

正確にy=6.37まで計算するには係数の有効桁数を6桁与えて計算し最後の桁を四捨五入しないといけないですね。
従って、エクセルで与える有効桁数を6桁以上にして計算しないといけないですね。エクセルの中では有効桁数は15桁(表示指定しなければ表示されないだけ)なので計算はその精度でやっています。
その係数を、人が介在して、表示されている係数データ(有効桁数を表示していない)を使って、近似多項式を書き写して入力しなおす作業で、有効桁数1桁の近似式になってしまいます。

>R^2も0.999でほとんど1だった
これは、エクセル中の表示されていない正確なデータを使って計算した数値だからです。
エクセルの中で保持しているデータの数値と、デホルト設定(あるいはエクセル使用者が設定した桁数設定)の表示データとは異なりますので、表示データをそのまま他で使わないように注意しないといけないですね。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
R^2についてのご回答ありがとうございました。。
これぞ僕が本当に聞きたかったことでした。
ありがとうございました。

お礼日時:2009/06/18 02:26

データ数が7個で、6次の多項式近似をを行ったのではないのでしょうね。


データ数:Nに対し、(N-1)次式で近似させれば当然R^2は1になりますよね。
近似式をグラフ化すれば分かるのですが、横軸の数値の少しの変化に対し、縦軸は大きく変化しますが、理論的にそれでよいのですか。
一般的にデータの数が少ないときに高次式で近似すると、失敗する場合場が多いと思います。
    • good
    • 2
この回答へのお礼

今回の件については大丈夫だと思います。
しかし、R^2=1に近ければすべてよいというわけではないとは考えたことがありませんでした。
ありがとうございました。

お礼日時:2009/06/18 02:29

すでに皆さんが近似曲線の係数の精度についてはおっしゃっているので、それ以外のことを言ってみます。



あるデータの近似曲線として6次の多項式が適当なのかどうか?
もしあるデータがなにかの物理モデルで表せるような現象を表しているのならば、たとえそれが正確にデータ点を通らないとしても、そのモデル式で近似すべきです。その点は大丈夫ですか?

また6次の多項式近似を行って得た近似式は、その元となったデータの存在する範囲では正確かもしれませんが、その範囲外では保証されません。そのような使い方をしようとしていませんか?

以上のような点に注意してくださいね。
    • good
    • 1
この回答へのお礼

皆さんと違ったことをわざわざ教えていただき、ありがとうございました。
今回については考えるべき範囲で曲線は近似曲線とほぼ一致したので問題ないとおもいます。
しかし、それは意識していませんでした。
ありがとうございました。

お礼日時:2009/06/18 02:28

 「プロットした点をほぼすべて正確に通る近似曲線」なのに、


 「実際のデータではx=97.12561のときy=6.37なのですが、この式に代入するとy=-14になる」
というのは、両立しないような気もしますが…。
プロットしたグラフでも y=6.37 と y=-14 では、不一致が目立つのでは?

とりあえず x=97.12561 にて項別試算してみました。

交互に正負になり、正負それぞれを合算してから引き算すると、正項合計がおよそ 1050 、これにマイナス分を加えると -14.8 まで桁落ちしますね。
係数をちょいと振ってみると、y の変化率が大きく、係数感度が大きいみたいです。

慎重な取り扱いを要する式だとしかわかりませんが。
 
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
計数の微妙な違いが結果に大きく響くということはすべての回答者様が教えてくださっていますね。
それほど大事なこということを覚えておきます。
ありがとうございました。

お礼日時:2009/06/18 02:24

前回回答に、



「本当は2桁目以降もあるのですが、エクセルの表示上の都合で、1桁だけしか表示されないのでしょう。」

と書きましたが、それは無視ですか?

エクセルちゃんは、2桁目以降も「知っている」のに、1桁目しか出してくれていないということです。
    • good
    • 0
この回答へのお礼

再びご回答ありがとうございました。
無視したつもりはございません。
>>本当は・・・とは
表示される係数の桁が省略されており、表示する桁数を増やすと結果に大きな違いが生じるということを言っているだけだと思い、上の文章ではR^2はどの式についての相関関数なのかわかりませんでしたので、補足をつけさせていただいたのです。

ですので補足で聞いたのはR^2のことでした。
R^2がほとんど1にも関わらず、なぜ実際とまったく違う値が算出されるのか。
僕はここで表示されているR^2は、実際に表示された式についての相関関数だと思っていたのですが、R^2は表示されている式ではなく、真の式(2桁目の桁数も考慮した式)についての相関関数を表しているのですね。

お礼日時:2009/06/18 02:23

添付したグラフは x^6 の係数をほんの少し変えたときの近似曲線です。


ANo.1さんのご指摘の通り、次数の大きな項の係数の有効数字の2桁目が変わるとこんなにも変わります。x^5 や x^4 の係数の有効数字も1桁しかありませんが、この桁数を増やせば解決すると思います。

Excel の近似式は、普通に数式表示させると、小さい数値を有効数字1桁で丸めてしまうという致命的な欠点があります。ご存知とのことですが、この質問を初めて見る人のために、有効数字を増やす方法を以下に書いておきます。
   数式をダブルクリック → 表示形式 → 指数 → 小数点以下の桁数を増やす
「多項式近似」の回答画像2
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
わざわざ図をつけてまでの親切なご回答で助かりました。
ありがとうございました。

お礼日時:2009/06/18 02:06

こんにちは。



前にも似たような質問に答えたことがあるのですが、

xの次数が大きい項ほど、yの値に与える影響が大きくなります。
したがって、xの次数が高い項の係数が重要なのですが、
その近似式では、x^6、x^5、x^4、x^3 の係数の有効数字が1桁しかありませんよね。
そこが問題です。
本当は2桁目以降もあるのですが、エクセルの表示上の都合で、1桁だけしか表示されないのでしょう。

1つの案ですが、
t = y×10^7
と置いて、tとxの散布図を作れば、係数の有効数字が2桁以上表示されると思いますので、
やってみられては。

(私、他のソフトを使っていますので、エクセルで確認した回答ではありませんが・・・)


ご参考になりましたら幸いです。

この回答への補足

ご回答ありがとうございます。
おっしゃる意味はよくわかります。
実際式の書式設定から表示する桁数をふやすやり方もしっています。
しかし、R^2がほとんど1なのに実際のプロットデータと算出した値とでこうも違いがでるものなのでしょうか?

統計学などはわからないのであまり詳しいことはしりませんが、僕のなかではR^2というのは実際のデータと近似曲線のズレをあらわした値だと思っています。
値が1に近いほどズレは少ないということではないのでしょうか?
つまりR^2=1だとしたら
実際のデータ=近似曲線と思っているのですが・・・。

補足日時:2009/06/17 18:41
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!