最小2乗法で固定点を通過するプログラム
もしくは考え方等を知っている方がお見えなら,教えて下さい.
お願いします.

A 回答 (2件)

最小二乗法とは、モデルf(p,x[k])の、パラメータのベクトルpを適当に調節して、実測値y(x[k])とのズレ(残差)ε(k):


(1) ε(k)=y(x[k])-f(p,x[k]) (k=1,2,.....,K)
の重み付き二乗和S
(2) S=Σ(W[k]ε(k)^2) (k=1,2,.....,K)
が最小になるようにすることで、ベクトルpを決定する問題です。ここにW[k]は重み係数で、予め与えられている。

さて、これに制約条件として、「f(p,x[k])がpの値に関わらず固定点(xc,yc)を通ること」を加えます。つまり
(3) f(p,xc)=yc
である。
これは、パラメータのベクトルpの要素を一つ減らすことに相当します。
簡単な例はf(p,x)が定数項および既知の関数列g(j,x) (j=1,....,n) の重み付き合計であって、その重みがパラメータpで指定されている場合(定数項のある線形最小二乗法):
(4) f(p,x) = p[0]+p[1]g(1,x)+p[2]g(2,x)+.....+p[n]g(n,x)
でしょう。このとき、(3)を要請するとは、
(5) p[0]+p[1]g(1,xc)+p[2]g(2,xc)+.....+p[n]g(n,xc) = yc
という事ですから、自動的に定数項p[0]が決まってしまいます。すなわち
(6) p[0]= yc-(p[1]g(1,xc)+p[2]g(2,xc)+.....+p[n]g(n,xc))
従って、モデルfの代わりにモデルh(p,x[k])を用いれば良い。ここに
(7) h(p,x[k]) = C+p[1]g(1,xc)+p[2]g(2,xc)+.....+p[n]g(n,xc)
ただし
(8) C=yc-(p[1]g(1,xc)+p[2]g(2,xc)+.....+p[n]g(n,xc))
です。

このように陽にパラメータを減らすのが難しい場合には、ラグランジュの未定乗数法を用いることができます。「未定乗数法」で検索すれば過去の詳しい解説が見つかる筈。

さらに手抜きをする方法としては、人工的にサンプルを追加し、
x[k]=xc, y(x[k])=yc (k=K+1,K+2,..........,K+R)
というデータを与えてやることです。
勿論、重み付き最小二乗法の場合には1個だけサンプル
x[K+1]=xc, y(x[K+1])=yc
を追加し、その重みW[k+1]をうんと大きくしておけば良い。
    • good
    • 0
この回答へのお礼

丁寧な回答ありがとうございます.
大まかな流れがわかりました.
また,わからないことを質問させて頂くかと思いますが
よろしくお願いします.

お礼日時:2001/06/27 23:03

実験結果のグラフを最小2乗法処理する場合、sma4winの最小2乗で特定点通過オプションを使えば可能です。

この回答への補足

回答ありがとうございます.

しかし今回は,研究でプログラムの作成を行う必要があるので
プログラムもしくは考え方を質問したわけであります.

お知りなら回答をよろしくお願いします.

補足日時:2001/06/27 21:46
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Aベストアンサー

>所で、今回の問題は
「また、この線形方程式についての結果は何を物語っているか?」
とも問われているのですが
その答えは「∩[i=1,..,m]Ker(yi)の補集合の直交補空間の元を表している」と答えれば正解でしょうか?

●「この線型方程式」とあるが、どこに線型方程式があるのか僕には分かりません。

●意味・意義の解釈は種々にできます。これこそ自分の頭で考えるべきことでしょう。

●あなた自身が指摘してくれた通り、Vはもともと内積は定義されてないのですから、直交補空間をもちだすのは不適切です。内積を用いない解釈を、まずは求められていると思います。
もしも「直交補空間」という概念を用いるなら、どういう内積を入れるのか、書かねばなりません。(僕が「修正」でそうしたように)

●しかしどんな内積を入れたとしても、「「∩[i=1,..,m]Ker(yi)の補集合の直交補空間」は、yiがすべてゼロ写像ならば、V。そうでなければ、{0}になります。(よく考えて見ましょう)

●僕ならば、「この結果は、残念ながら言葉を話せないので、何も物語ることができない」と答えます。
ほとんど自明な結果であり、大した意味があるとは思えませんので、皮肉として。

以上。あまり人にばかり聞かず、自分でよく勉強することを勧めます。
おそらく同じ学校のメンバーがよく問題を丸投げしているので、しばらく答えるのは控えようと思います。

>所で、今回の問題は
「また、この線形方程式についての結果は何を物語っているか?」
とも問われているのですが
その答えは「∩[i=1,..,m]Ker(yi)の補集合の直交補空間の元を表している」と答えれば正解でしょうか?

●「この線型方程式」とあるが、どこに線型方程式があるのか僕には分かりません。

●意味・意義の解釈は種々にできます。これこそ自分の頭で考えるべきことでしょう。

●あなた自身が指摘してくれた通り、Vはもともと内積は定義されてないのですから、直交補空間をもちだすのは不適切です...
続きを読む

Q最小2乗法とエクセル

 質問したいのですが、(x,y)=(0.1,0.306),(0.3,0.807),(0.5,1.177),(0,0)の値を利用して、最小2乗法を使ってエクセルでグラフを書きました。このとき、自分で計算した値と、エクセルで作成したグラフで近似線を描き、その直線の式を出したものとでは値が異なりました。なぜでしょうか?

Aベストアンサー

では、基本に立ち戻ってそれぞれの数値を確認しましょう。

Σxi=0.9
Σyi=2.29
Σxi^2=0.35
Σxiyi=0.8612

で、
傾き=(4×0.8612-0.9×2.29)/(4×0.35-0.9^2)=2.34542372881356
切片=(0.35×2.29-0.8612×0.9)/(4×0.35-0.9^2)=0.0447796610169492

でExcelの結果になりますが、どこで違ってきているのでしょうか?

Q非負最小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)を満足させるという条件がある
場合には,その条件を具体的にどのようにプログラム化
するのか不明であり質問した次第です。
宜しくお願いします。

Aベストアンサー

何も考えずに回答してみる。

普通に最小値を求めて領域 { 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) が最小値を与える。

Q最小2乗法について

最小2乗法で傾き並びに、切片、相関関数の求め方が分かりません。グラフなどを作ろうとも思ったのですがどれを縦、横軸にとっていいのか分かりません。教えてください

Aベストアンサー

参考URLを見て下さい

参考URL:http://szksrv.isc.chubu.ac.jp/lms/lms2.html

Qx1=(1,1,1),x2=(1,1,-1),x3=(1,-1,-1)をC^3の基底,{y1,y2,y3}がその双対基底でx=(0,1,0)の時,y1(x),y

[問] ベクトルx1=(1,1,1),x2=(1,1,-1),x3=(1,-1,-1)をC^3の基底とする。
{y1,y2,y3}がその双対基底でx=(0,1,0)の時、
y1(x),y2(x),y3(x)を求めよ。

という問題の解き方をお教え下さい。

双対基底とは
{f;fはF線形空間VからFへの線形写像}
という集合(これをV*と置く)において、
V(dimV=nとする)の一組基底を{v1,v2,…,vn}とすると
fi(vj)=δij(:クロネッカーのデルタ)で定めるV*の部分集合
{f1,f2,…,fn}はV*の基底となる。これを{v1,v2,…,vn}の双対基底と呼ぶ。

まず、
C^3の次元は6(C^3の基底は(1,0,0),(0,1,0),(0,0,1),(i,0,0),(0,i,0),(0,0,i))
だと思うので上記のx1,x2,x3は基底として不足してると思うのです(もう3ベクトル必要?)。

うーん、どのようにしたらいいのでしょうか?

Aベストアンサー

>C^3の次元は6(

これが間違え.
「x1=(1,1,1),x2=(1,1,-1),x3=(1,-1,-1)をC^3の基底」
といってるんだから,係数体はRではなく,C.

あとは定義にしたがって,
dualな基底を書き下せばいいだけ.
y1(x1)=1,y1(x2)=y1(x3)=0であって
v=ax1+bx2+cx2と表わせるわけだし,
v=(v1,v2,v3)とすれば,a,b,cはv1,v2,v3で表現できる
#単なる基底変換の問題.


人気Q&Aランキング

おすすめ情報