- ベストアンサー
非負最小2乗法のコーディング
非負条件の最小2乗法のプログラムを作成 したいのですが,参考文献やプログラムが あれば,教えて下さい。考え方のヒントでも よいです。 具体的には,関数f[{x}]=|[A]{x}-{b}|^2・・・(1) がxi>=0(i=1,2,..,n)・・・(2)の条件で, 最小となる{x}を求めるという問題を解くプログラムを 作りたいと考えています。 ここで,{x}=(x1,x2,...,xn) {b}=(b1,b2,...,bm) [a]は サイズm x nのマトリクス(m>n) であり,[A]および{b}は既知です。 条件(2)が無い場合の最小二乗のプログラムは 作成できますが,条件(2)を満足させるという条件がある 場合には,その条件を具体的にどのようにプログラム化 するのか不明であり質問した次第です。 宜しくお願いします。
- SP603
- お礼率100% (4/4)
- 数学・算数
- 回答数2
- ありがとう数3
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
何も考えずに回答してみる。 普通に最小値を求めて領域 { x_i >= 0 | i = 1,2,...,n } に含まれなければ、この領域のエッジで最小値をとるしかないだろうから。 特に制限を設けずに {x} を求める x が非負ならそれが答え それ以外の場合 x_1 = 0 として {x} を求める、x_1 = 0 として {x} を求める... x_n = 0 として {x} を求める。 非負の解となったものの内で、f({x}) が最小であるものが答え 上記 n 個の解すべてが NG だった場合 x_1 = x_2 = 0 として {x} を求める、(以下 n(n-1)/2 通りの組合せ) どんどん、= 0 の数を増やしていって、すべてに失敗した場合には (0, 0, ... 0) が最小値を与える。
その他の回答 (1)
- hitokotonusi
- ベストアンサー率52% (571/1086)
これは線形の最小二乗法じゃあ使えないですよね。 非線形の場合は初期値によって停留点が複数ある場合があるから、 初期値をいろいろ変えて、xiが全部正になる解をを探すんですかね・・・・ なんとなくですが、xiが正にならなければならない問題で、 負の解が出てくるっていうのはモデルそのものを見直したほうがいいような気がするです。
お礼
ご解答ありがとうございます。 あれから,いろいろさがしまして,非負条件の最小二乗法の コード自体は存在するようです。 しかし,ご指摘のとおり,余り素直な解き方ではないようなので, 私の問題の場合,最終的には2次計画法のコードを利用しました。
関連するQ&A
- 数列に関する最小二乗法
ある数列{X(n)},{S1(n)},{S2(n)},{S3(n)}について, min{Σ_[n=1,N]({X(n)}-a*{S1(n)}-b*{S2(n)}-c*{S3(n)})^2} となるような正の実数a,b,cを求めたいのですが,一般的な最小二乗法のように,微分などを使用して求めることはできるのでしょうか? よろしくお願いします.
- ベストアンサー
- 数学・算数
- 最小二乗法の応用について
実験により、xに対するyの値をxの値をかえながら、N回測定した。測定したxに対するyの関係をグラフに描くと、次の二次関数で表現するのが適当であることがわかった。 y=ax*x+bx+c この時、最小二乗法によりパラメータa、b、cの値を求める式を導出せよ。という問題なのですが、どのようにしたら最小二乗法で求めることができるのですか? どうか教えてください
- 締切済み
- 数学・算数
- 最小二乗法を用いたデータ解析(三角関数を含む)
データ解析に関して f(x)=(a1cosk1x+a2cosk2x-(b1sink1x+b2sink2x))/√x g(x)=-(a1sink1x+a2sink2x+b1cosk1x+b2cosk2x)/√x を最小二乗法でフィッティングするにはどうしたらよいのでしょうか? k1,k2は既知ですが整数ではありません。データの数は多数あります。 a1,a2,b1,b2の値を求めたいのですが、方法がわかりません。 プログラム等ご存じでしたら、重ねてお願いいたします。 どうか助言を頂きたく投稿しました。よろしくお願いいたします。
- ベストアンサー
- 数学・算数
- ロジスティック曲線の解法(最小二乗法)について困っています。
初めて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が、なぜ付いてるのかが分かりません。
- 締切済み
- 数学・算数
- 最小二乗法?
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] の含まれている誤差は試料によってまちまちなので,一概には言えません。目視ではほとんど誤差が分からない綺麗なカーブの場合,逆に目視で辛うじて下に凸の曲線が分かる程度の場合,どちらもあり得ます。 考え方だけでも構いませんので,どうかご教授下さい。よろしくお願いいたします。
- ベストアンサー
- 数学・算数
お礼
nが小さい場合はご指摘の方法で, も解けそうな気がします。 ご回答ありがとうございました。