- 締切済み
データのカーブフィッティングについて
(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)
- 専門家の回答
みんなの回答
- ddtddtddt
- ベストアンサー率56% (180/320)
最小二乗法の計算は、あなたの思っている通りです。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が再現される事は、証明できるはずです。
- info222_
- ベストアンサー率61% (1053/1707)
>科学ソフトに入っているものと思います。 フリーソフトの <gnuplot>には 任意の関数形でフィッティングできる機能があります。 もちろんy=a+bx+cx^2..という曲線をフィットさせることも可能です。 >最小二乗法のように誤差を調べて、その誤差の式をa, b, cで偏微分して0として3つの式を立て、それを解いてa, b, cを求めるというようなことでしょうか。 >それはダメなんじゃないかと思うのですが。 非線形関数にも対応した最小二乗法を採用しているので何ら問題ありません。 gnuplot を実際に使って, 係数を求めて得られたフィッティング関数をプロットして確認してみて下さい。納得できると思います。
お礼
回答ありがとうございます。 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...という風に独立な変数で展開するということが前提になっているように思えてしまうのですが。たぶん私は誤解しているはずですけれども。