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

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

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

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

  • 回答数4
  • 閲覧数1568
  • ありがとう数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に対する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

  • 最小二乗法について

    最小二乗法についてhttp://szksrv.isc.chubu.ac.jp/lms/lms1.html をみたのですが、 >bを固定すれば、Sはaの二次関数の見なせるので、これをグラフ化す>ると という一文がありますが、bを固定するというのはどういうことか 教えてください。

  • 最小二乗法

    オームの法則の実験を行いました。その時に縦軸 I 、横軸 V の図を最小二乗法を用いて書こうと思いました。関数をY=aX+b  とおいて計算したのですが、オームの法則は Vが0ならIも0のはずなのですがbが0になりません。どうしたらよいでしょうか?関数をY=aXとおけばできるのでしょうか? よろしくお願いします。

  • 最小二乗法?

    i 個の測定点 (x[i],y[i]) を,最小二乗法などを用いて下記の式にフィッティングさせようと考えています。Visual Basic で作成した測定プログラムの中で使用したいのですが,具体的にどのようなアルゴリズムでフィッティングを行えばいいのか分かりません。 Y = A * sin(X - C)^2 + B 実測する x[i] の範囲は狭く,例えば -15°~ +15°まで 0.2°毎の計 151 プロット,といった感じです。そして定数 A,B,C の内,最も高い精度で求めたい定数は C です。測定の段階で x の範囲を狭めているのは,正確な C (通常 1°未満)を求めるためです。 この測定は x[i] にはほとんど誤差が含まれませんが y[i] には誤差があります。y[i] の含まれている誤差は試料によってまちまちなので,一概には言えません。目視ではほとんど誤差が分からない綺麗なカーブの場合,逆に目視で辛うじて下に凸の曲線が分かる程度の場合,どちらもあり得ます。 考え方だけでも構いませんので,どうかご教授下さい。よろしくお願いいたします。

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

    変数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の誤差を求めたいのです。 よろしくお願いします。

  • 2次の最小二乗法

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

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

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

  • ロジスティック曲線の解法(最小二乗法)について困っています。

    初めてgooを利用させて頂きます。 以下のロジスティック曲線の解法(a,bの解法)にいて、教えてください。(過去の実績を基に、将来値の推計する際に利用しようと思っています。) ロジステック曲線式 Y=K/(1+e^(a-bx)) Kは、定数。 で、a,bを求める解法がどうしても分かりません。 最小二乗法で求めるみたいですが・・・ a,bの答えは、以下のようになるのは、分かっております。 a=(Σx・Σxy-Σx^2・Σy)/{logx・(nΣx^2-ΣxΣy)} b=(nΣx^2-(Σx)^2)/(nΣxy-ΣxΣy) a,bを求める解法を教えてください。よろしくお願いします。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ちなみに、y=ax+bを最小二乗法を用いた解法は、 S=Σ(y-ax-n)^2 の最小値を求めるために、Sをa,bで微分して0と置いて解くまでは、理解して、a,bを求めることが出来ました。 ロジステックだと、aの分母にlogxが、なぜ付いてるのかが分かりません。

  • gnuplotでの最小二乗法について。

    他のカテで質問したのですが、 こちらの方が関係性が深いと思い移動しました。 y,x1,x2 を測定データとして、線形関数 y=a*x1-b*x2 におけるパラメータ a,b をgnuplotを使って最小二乗法で求めたいのですが、参列のデータ(x1,x2,y)を用意して、 f(x)=a*x1-b*x2 fit f(x) "data.dat" via a,b とうった時点で、undefined variable: x1 とエラーが出てしまいます。 どうすればよいでしょうか。よろしくお願いします。