• 締切済み
  • 困ってます

データのカーブフィッティングについて

(x,y)の組み合わせのデータが数多くあり、y=a+bx+cx^2..という曲線をフィットさせることを考えます。係数a, b, cを求めるということです。エクセルとか科学ソフトに入っているものと思います。 この係数の決め方は、実際にはどのような方針なのしょうか。例えば、最小二乗法のように誤差を調べて、その誤差の式をa, b, cで偏微分して0として3つの式を立て、それを解いてa, b, cを求めるというようなことでしょうか。それはダメなんじゃないかと思うのですが。 y(x,z)=a+bx+czで、x, zが独立ならそれがやれるのであり、この場合、z=x^2なのでzのxに対する独立性に問題があるからなのですが。どうでしょうか。 試しにy=1.5x^2 でxに乱数を与えて計算して(x, y)の組み合わせを数多く作成し、模擬データとしてy=a+bx+cx^2のa, b, cを推定してa=b=0, c=1.5がしっかり算出されるものでしょうか。y=1.5x^2 で乱数で発生したデータであっても低次のy=a + bxという式で最小二乗法を使えばa, b(いずれも非0)の結果が出ますね。そこでもう1つ高次の項 cx^2を付けて推定したら先のa, bが変更を受けてa, bが0でc=1.5となる結果が出てくるものでしょうか。 よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数329
  • ありがとう数1

みんなの回答

  • 回答No.2

 最小二乗法の計算は、あなたの思っている通りです。Excelの近似曲線は、そういう方法で計算されてます。  ところで「y=1.5x^2でxに乱数を与えて・・・」をExcelでやってみました(0≦x≦1,200点)。 1次近似:y = 1.5485x - 0.2729,R^2 = 0.9410 2次近似:y = 1.5000x^2 - 7.1054×10-15x + 3.8921×10-15,R^2 = 1.0000 3次近似:y = 1.5916×10^(-12)x^3 + 1.5000x^2 + 1.3470×10^(-12)x - 2.7320×10^(-13),R^2 = 1.0000 4次近似:y = -2.3647×10^(-11)x^4 + 4.4281×10^(-11)x^3 + 1.5000x^2 - 3.8606×10^(-12)x + 5.6882×10^(-12),R^2 = 1.0000  1次の場合はa,b≠0ですが、2次以上では2次の係数だけがc=1.5000で、他は倍精度実数の精度内で0と考えられる数値です。さらに相関係数R^2値が、1次では0.9410ですが、2次以上では1.0000になります。いちおうグラフを見なくても、2次で十分(というか2次関数だったのか)と判断すると思います。 >フーリエ級数はそのようになっていませんね(最終性があるので)。  最終性の意味は良く知りませんが、異なる周波数のsin,cosの積の積分を実際に数値計算すれば、10^(-10)程度の誤差は必ず出て0にはなりませんよ。0にして良いという保証があるので、最初から計算しないだけです。さらにどの周波数まで取れば良いのか?、という問題もあります。原則は、十分小さいフーリエ振幅になったら打ち切ってOKですから、普通はそれをグラフを見て判断するでしょう。そこは多項式近似と同じじゃないですか?。総じて言えば、数値誤差があるので、数値計算結果から何かを証明する事は出来ません。出来るのは、証明があって、その確認を取る事だけです。 >・・・多重共線性を嫌う・・・  「ある現象を説明する変数に独立性がなくても・・・」は正しいと思います。でも発想が逆だと思うんですよ。説明変数に独立性がないから、多重回帰ではなく、単回帰に持ち込むべきだじゃないですか?。だからy=a+bx+cx^2による、最小二乗法を行うと。そう出来るのは、関数としてxとz=x^2が線形独立だからだと思います。  ちなみにy=1.5x^2を厳密に満たすデータに最小二乗法を適用すれば、y=1.5x^2が再現される事は、証明できるはずです。

共感・感謝の気持ちを伝えよう!

  • 回答No.1
  • info222_
  • ベストアンサー率61% (1053/1706)

>科学ソフトに入っているものと思います。 フリーソフトの <gnuplot>には 任意の関数形でフィッティングできる機能があります。 もちろんy=a+bx+cx^2..という曲線をフィットさせることも可能です。 >最小二乗法のように誤差を調べて、その誤差の式をa, b, cで偏微分して0として3つの式を立て、それを解いてa, b, cを求めるというようなことでしょうか。 >それはダメなんじゃないかと思うのですが。 非線形関数にも対応した最小二乗法を採用しているので何ら問題ありません。 gnuplot を実際に使って, 係数を求めて得られたフィッティング関数をプロットして確認してみて下さい。納得できると思います。

参考URL:
http://folk.uio.no/hpl/scripting/doc/gnuplot/Kawano/misc2.html

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございます。 2次曲線で完全にフィッティングできることが分かっているデータ(自分で作ったのだから)があり、それを知らない人がひとまず1次(y=a+bx)でフィットしたとします。それなりにa, bが決まったとします。それで終わりという場合もありますが、1つ次数を上げてみることを思いついて(y=a+bx+cx^2)でやってみました。そうすると、a=b=0, c=1.5と正解になる。ということですね。この場合、次数をどこまでやればよいかは、グラフを書いて見なければわからないということになります。そこに何かひっかかりを覚えてしますのですが。また、係数には最終性がない、ということですね。3次まで展開した時の1次の係数と4次まで展開したときの1次の係数が異なるので。フーリエ級数はそのようになっていませんね(最終性があるので)。 話が飛んでしまうかもしれませんが、ある現象を説明する変数に独立性がなくても最小二乗法は問題ないのでしょうか。共分散行列などの性質も問題ないでしょうか。重回帰分析をする場合、共分散行列は多重共線性を嫌うところがあると思うのですが。xとx^2は共線的だと思うのですが。どうでしょうか。説明変数がx, x^2, x^3..でその係数を決めるということをやるわけですが、Yをx, y, z...という風に独立な変数で展開するということが前提になっているように思えてしまうのですが。たぶん私は誤解しているはずですけれども。

関連するQ&A

  • 乱数によって発生したデータの関係式の抽出

    [0 : 1]の範囲で乱数xを発生させ、その乱数xを使ってy=0.5 x^2 を計算しました。乱数による(x, y)のペアが数多くできています。この乱数のペアをデータとして与えて、これがy = 0.5 x^2という関係式になっていることを見破れるか、ということを考えます。データをプロットして雰囲気を調べる、というようなことはナシで、データ処理としてできるかということですが。y=a+bx+cx^2+dx^3などと仮定して最小二乗法でa,b,c,dを決めてみると、a=b=d=0, c=0.5となるのでしょうか。単純な最小二乗法でよいのでしょうか。すなわち、誤差の評価式をa,b,c,dで偏微分してゼロとなる代数方程式を解いてa,b,c,dを決めるということですが。 これに関連して疑問なのですが、手始めとして一旦、(x,y)の相関係数を調べてみたとします。これは両者が直線関係(すなわち1次)になっていることを想定してどの程度1次なのかを見るという性格があると思います。例えばy=a+bxとひとまず考えて、最小二乗法でa, bを計算することはできます。2次曲線だけども1次で近似したようなものですね。aはかなり小さいでしょうが、a,bとも非ゼロ値が出てきそうです。その後、近似を上げようと思って、y=a+bx+cx^2としてa,b,cを求めると先に直線と考えて求めたa,bとは違う値(正解のa,bゼロでc=0.5)になるのでしょうか。 この問題は、正解が多項式であり、近似式も1次、2次、...と高次になっていくのでたまたま答えであるx^2が出てきたということは言えそうですが、もし発生させる関数がもっと手の込んだもの(sin, cosなど)だったら関数形を見破れないのではないでしょうか。たまたま発見されるということはあるかも知れませんが。 y=0.5 sin(x)としてxの乱数を発生させ(x,y)のペアを作って、関数形を推測させるということですが、たまたま、sin(x)とyについて相関係数を調べたら1となるわけで、 y=a+b sin(x)で最小二乗法をすると、a=0, b=0.5となるわけですね。これはたまたま見つかったということですね。偶然に依らない方法はあるのだろうかということですが。

  • sinc関数のカーブフィッティング

    データ配列に、 y = a sinc(b(x-c)) で表せれる式をフィッティング(最小二乗法など)したいのですが、良い方法がわかりません。 どなたか教えてもらえませんでしょうか?

  • 実験データのフィッティングについて

    i 個の測定データ(x[i],y[i]) を,最小二乗法などを用いて下記の式にフィッティングさせ、AとBを求めたいと思うのですが、私の勉強不足で線形最小二乗法(グラフにプロットして、切片と傾きから求める方法)で解く方法が分かりません。 Y = Alog{x/(x-B)} (x>B) 考え方だけでも構いませんので,どうかご教授下さい。よろしくお願いいたします。 また、最小二乗法に関する大学学部生程度のレベルの教科書的な本がありましたら、教えて下さい。よろしくお願いします。

  • パネルデータを使ったパラメータ推定の方法を教えてください

    都市に関する簡単な式を1つ作ったのですが、経済学、数学ともに知識が浅く、パネルデータの処理方法、パラメータの推定方法(通常最小二乗法と一般化最小二乗法の違い)が共にわかりません。80都市×15時点のパネルデータがあります。何かご存知の方、教えてください。よろしくお願いします。

  • 指数関数のカーブフィッティング

    時間tに対する1chデータ列yがありまして、それを y=a exp(b t) + c に対して客観的に、できれば自動的にフィッティングして、a,b,cを求めたいです。 これがただの1次関数の最小二乗法ならわかりますし、cが既知なら1次関数の応用で、というところまでもわかります。恥ずかしながら渡井には非線形最小二乗法を一般論で理解して解けるような気がしません。 Excelを使った最小二乗法手順説明サイト http://szksrv.isc.chubu.ac.jp/lms/lms2.html のような方法か、 C/C++のプログラム http://www.sist.ac.jp/~suganuma/kougi/other_lecture/SE/predict/predict.htm#2 のようなアルゴリズムの説明をいただけると大変ありがたいです。 よろしくお願いします。

  • 最小二乗法の推定値の誤差

    変数xを変化させたときの測定値yを最小二乗法で二次式y=a*x^2 + b*x +c にフィッティングさせ推定値a, b, cを求めるとき、 測定値yの誤差がδyであるときの推定値a, b, cの誤差を求めたいのです。 具体的には、(x,y)=(-1,2), (0,0), (1,1.5), (2,5) の4つのデータを 二次式にフィッティングさせたときのa,b,cはa=1.375, b=-0.325, c=0.225ですが、 測定値yの測定誤差が0.1のときのa,b,cの誤差を求めたいのです。 よろしくお願いします。

  • 最小二乗法。円の方程式x^2+y^2+Ax+By+C=0において、最小二乗法でA,B,Cを求める式をあらわすとどうなりますか。

    円の方程式x^2+y^2+Ax+Bx+C=0において、最小二乗法でA,B,Cを求める式をあらわす場合、どうなりますか。複雑な行列式であらわさないとだめなのですか。y=ax+bの場合の最小二乗法は何とかわかるのですが、未知数がA,B,Cの3つになると、わからなくなります。ご指導お願いいたします。

  • 多変数の最小二乗法

    Y=AX+Bという形で(Y,X)の組から係数A,Bを推定する方法が最小二乗法かと思います。(そのような整理が妥当であるか、意味があるか、についてはデータの分布形状や変動係数などで別途検証する必要がありますがここでは不問として) さて、その次ですが、YY=AX+BY+CZという関数で表示しようと考えたとします。(YY,X,Y,Z)というデータ系列があり、係数(A,B,C)を求めるというような解析です。(前述のようにそれが妥当かどうかは不問として。)係数A,B,Cを最小二乗法のようにできるだけ妥当に求める方法を教えていただきたいのですが。 1)たとえば、YY=AX+CCとして最小二乗法でAを求めたあと、残差CCについてCC=BY+CZとおいて再度最小二乗法でBを求めるというような手法を何度も行うとか? これだと解く順番に依存するようなので全部の順番でやって平均値を取るとか? 下手な考え休むに似たりのようですが。 2)カルマンフィルタ、ニューラルネットワークの手法で解析するということもあるでしょうか。その場合、YY=AX+BY+CZという枠組みではなくなりますが、それでもよいと言えばよいです。 このような問題を解く方法について解説されている本とか分野の名称(数理統計学とか?)などを教えて頂けると探索する手がかりとなります。今は手がかりすらはっきりしていないのです。 最小二乗法についてはその程度だったら専門分野ではなく、各分野で個別に解説されているようで込み入った問題になったときにどこを捜索したらよいかわからないもので質問しました。よろしくお願いします。

  • 最上2乗法って

    最小二乗法の最小は元のデータとの誤差の二乗の合計値を最小にするものでいいのでしょうか?

  • 重み付けを用いた場合の回帰係数の分散の求め方

    x に関する 0 次式 y = a0 について、正規分布を仮定できる場合、複数の観察値から、真の値 μ の推定値として、最小二乗法で平均値、その平均値に基づいて、分散を求めるときは、観察値と μ との誤差に Weight をかけても結果は変わりません。 次に x に関する一次式 y = a0 + a1x において、複数の観察値 (xi , yi) から、最小二乗法を用いて、a0、a1 の推定値を求めることができます。 伺いたいのは、この場合の a0、a1 は、平均値そのもので、この場合、a0、a1 の分散をどう求めるのか、また推定を行なうとき、誤差 yi - (a0 + a1xi) の二乗に Weight をかけた場合の分散をどう求めるか、の二点です。 これをきちんと解説した成書でも結構ですので、教えてください。