• ベストアンサー
  • すぐに回答を!

次数が未知の最小二乗法について

最小二乗法により実験データを解析したいと考えています。 n回の測定でyとxを求め、 y=ax^2+bx+c という二次関数でフィッティングする場合、未知パラメータabcを擬似逆行列で求めるというところまでは分かったのですが、 y=ax^d+bx+c というように、未知パラメータがabcに加えて、次数のdも未知の場合にはどのように解いたら良いのでしょうか。 どなたか分かる方、教えてください。

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

  • 物理学
  • 回答数4
  • 閲覧数1591
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2

Excelを用いるのであれば,a,b,c,dをパラメータとして ソルバーを用いるのが良いのではないでしょうか. まずは,ツール=>アドインでソルバーが入っているか確認して 入っていなければ,ソルバー アドインのところをチェック下さい. シート上にパラメータa,b,c,d,をきまったセルに入れます. xの値とyの値とax^d+bx+cの値を横に並べてy-(ax^d+bx+c)も並べます. 取得したx,yの分,同じ用に縦に並べます. y-ax^d+bx+cのセルをsumsq()で平方和します. この状態でツール=>ソルバーを起動させると, 目的セルは平方和を入れたセルで,目標値は最小値とします. 変化させるセルはパラメータa,b,c,dになります. (各パラメータについて正のみなどの制約条件も入れられます.) うまくいかない場合は,オプション設定で制限時間や反復回数を変化させると良いと思います.

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

質問者からの補足

回答有難う御座います。 早速ソルバーで計算させてみました。(詳しい説明ありがとう御座いました。) 残差平方和がより小さくなるように、オプションで 制限時間や探索法など色々変えて見たのですが、 測定値となかなか一致しません。(全体的に右に少しシフトした感じに なっています。) 現在、残差平方和が3.47719E-05ほどなのですが、 通常はどのくらいの残差平方和を一致の目安としているのでしょうか。 度々申し訳御座いませんが、回答のほど宜しくお願い致します。

その他の回答 (3)

  • 回答No.4

もともとの値がいくらか分かりませんが, 1程度の数値だとすると,5桁落ちはたいしたものと思います. 最小二乗法などの回帰曲線は近似曲線なので,測定点を通ることは ほとんどありえません. 全体的に右に少しシフトした感じ=>これはx軸上に平行移動 したようなイメージなのでしょうか. そうであれば,y=ax^d+bx+cを y=a(x-e)^d+b(x-e)+c=a(x-e)^d+bx+c' と平行移動させれば良いかと思います. パラメータを1個増やすことになりますが... ちなみに,最小二乗法ではパラメータ数は データ数の半分程度が限界と何かで読んだことがあります.

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

質問者からのお礼

回答有難う御座います。 >最小二乗法などの回帰曲線は近似曲線なので,測定点を通ることは ほとんどありえません. そうだったんですね。勉強不足でした。有難う御座います。 >全体的に右に少しシフトした感じ=>これはx軸上に平行移動 したようなイメージなのでしょうか. そうです。傾きも少し大きくなっていますが・・。 >そうであれば,y=ax^d+bx+cを y=a(x-e)^d+b(x-e)+c=a(x-e)^d+bx+c' と平行移動させれば良いかと思います. パラメータを1個増やすことになりますが... 有難う御座います。そうやればいいんですね。 しかし、そうすると求めたい式の形が変わってしまう 気がするのですが・・・。 >ちなみに,最小二乗法ではパラメータ数は データ数の半分程度が限界と何かで読んだことがあります. それは初耳でした。大変勉強になりました。 フィッティングするように色々と試して見たいと思います。 有難う御座いました。

  • 回答No.3
  • TACOSS
  • ベストアンサー率40% (9/22)

最も大きな次数の項の寄与が大きい(i.e. y≒ax^d)のなら、Logを取って   log y = d・log x + a として最小二乗フィットさせれば、最大次数dを推定できると思います。 普通、実験結果からザっと次数を決定するときは、結果をLog-Logプロットして その勾配を見る、ってしませんか? 最大次数が推定できたら、後は次数に応じて普通に最小二乗法を適用すれば 良いのでは。

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

質問者からの補足

回答有難う御座います。 教えて頂いた通り log y = d・log x + a として最小二乗フィットさせ、 dを求めましたところ、d=0.00679となったので、この次数を用いて y = ax^d + bx + c に最小二乗フィットさせてみました。 その結果、測定値と大きくずれてしまったので、探索方法などを変えて フィットさせて行くうちに、dはd=2に近づいて行きました。 また、未知パラメータの初期値は測定値のグラフにおいて、excelの 近似曲線の追加で出た値を入力しています。 間違えている点などありましたら、ご指摘頂けると有難いです。

  • 回答No.1
  • usokoku
  • ベストアンサー率29% (744/2561)

dの値で大きくグラフが変化するでしょう。このような場合には、行列ではちょっと無理です。 ただし、 Y=aiX^i + a(i-1)X^(i-1) +... + a(1)x + a(0) の形に直せれば、可能です。 なおせないとして 作図法で、エイヤーと、a,b,c,d を決定してください。 a,b,c,d のいずれかひとつを少し(普通は1/100くらい)変化させて、計算してみて、残差が減ったらば、変化後の値が正しい という作業を飽きれるまで(山さが十分少なくなったと判断できるまで)つづけてくだ最。 今のパソコンですと早いですから、2-10秒でできるでしょう。 8086無wait , 無コプロで10分ぐらいの計算ですから。

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

質問者からのお礼

早速の回答、有難うございます。 excelのソルバーで図を描かせて、そのような作業をしてみたいと思います。 有難う御座いました。

関連するQ&A

  • 最小二乗法。円の方程式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つになると、わからなくなります。ご指導お願いいたします。

  • 最小2乗

    (1) (x,y)=(-3,4),(-2,1),(-1,0),(0,-1),(1,1),(2,2),(3,3)を 方程式 y = ax^2 + bx + c で最小2乗法に当てはめたときの a,b,cを求める (2) 要素(x,y,z)=(1,3,2),(2,1,1),(3,2,4),(4,5,3),(5,4,5)が z = ax + by + p とモデル化されるとき、残差の2乗Σp^2 が 最小になるように定式化して、最小となるa,bを求める という問題です。 これらを行列を用いて解きたいのですが、どのようにすればよいか分かりません。よろしくお願いします。

  • 遂次最小二乗法について

    遂次最小二乗法についてです。 y=a*x+b*dx+c というように 微分dxが入る場合も2次方程式の場合と同様にして解けるのでしょうか。 未知パラメータベクトルθを(a b c) データベクトルXを(x dx 1)としてy=θXを考え 共分散行列Pを3×3の行列として解けばいいのでしょうか。 どなたか教えていただけると幸いです。 よろしくお願いします。

  • 最小二乗法の応用について

    実験により、xに対するyの値をxの値をかえながら、N回測定した。測定したxに対するyの関係をグラフに描くと、次の二次関数で表現するのが適当であることがわかった。 y=ax*x+bx+c この時、最小二乗法によりパラメータa、b、cの値を求める式を導出せよ。という問題なのですが、どのようにしたら最小二乗法で求めることができるのですか? どうか教えてください

  • 最小二乗法 擬似逆行列

    下のサイトの説明を読んで最小二乗法の勉強をしています。 未知パラメータxが1個(N=1)、出力yが10個(M=10)のとき、 擬似逆行列を求めようとすると、(A#A)^-1 が1×1行列になってしまいます。 このとき逆行列はどのように求めたら良いのでしょうか??勉強不足ですみませんが、よろしくお願いします。 http://www.star.t.u-tokyo.ac.jp/~kaji/leastsquare/leastsquare_main.htm

  • 2次の最小二乗法

    1次(ax+b)の最小二乗法は、 http://szksrv.isc.chubu.ac.jp/lms/lms1.html に載っている通りに求めるのですが、 2次(ax^2+bx+c)のa,b,cを求める式はどうなるのですか?

  • Rを使った非線形最小二乗について

    はじめまして。 Rを使った非線形最小二乗のフィッティングについて、ご教授お願いします。 (カテゴリーが違うようでしたらご指摘お願いします) 二つのデータの組Y=(y1,y2,y3,・・・)、Z=(z1,z2,z3,・・・)について、これらをf(x) = α / { 1 + β exp(-γx) }の関数でフィッティングしたいと考えています。 ここで、f(x)の未知パラメータα、βはYとZで同じ値を持ち、γはYとZに固有のパラメータとして、フィッティングしようとしています。 以上のことをRのnls関数を用いて行いたいが、どのようにすればよいか。 以下の流れでフィッティングしてみましたが、上手くいきませんでした。 (1) Yをf(x)でフィッティングして、α、β、γを求める。 (2) (1)のα、βを用いてZをf(x)でフィッティングする。 そもそも、αとβを共通の値と考えること自体が間違いというご指摘があるかもしれませんが、 あくまでもαとβが共通の値と考えたとき、YとZをf(x)で最も上手くフィッティング(Yの残差とZの残差の和が最小になる)したいと考えています。 よろしくお願いいたします。

  • 最小二乗法

    n組のデータ (xi, yi) を,特定点(X0, Y0) を通る直線 y = ax+b でフィッティングしたい。最小二乗法で係数a,bを求めるため の式を導きなさい。 という問題で 各データの残差を二乗した和が最小になるときのa,bを求めるのですが 特定点(X0,Y0)を通るにはどうすればよいでしょうか? ただ単に、特定点を通らずフィッティングするやりかたはわかるのですが・・・。 よろしくお願いします。

  • 最小二乗法について

     y=ax+b+c/x という式での最小二乗法の求め方を 教えてください。

  • 最小2乗法に関して

    はじめて質問させていただきます。よろしくお願いいたします。 数学が苦手でよくわからず助けてください。 a,b,cはパラメーターであり、 log(Yn)=log(a)+blog(n)-cn の最小2乗法で各パラメーターを出すことができるみたいなのですが、どのように出すのでしょうか? またYとnに関しては Y=10,n=20 Y=50,n=60 Y=15,n=100 Y=13,n=180 といった感じです。 また、このパラメーターはエクセルで計算できるのでしょうか? わかり難い内容となってしまいましたが、 大変困っております。どうぞ教えてください。 よろしくお願いいたします。