「NUMERICAL RECIPES in C」
(ニューメリカル レシピーズ イン シー)
と言う、本に載っている
特異値分解法と最小2乗法のプログラムを完成させたいのですが
誰か、教えていただけないでしょうか?
別に、それでなくても、特異値分解法と最小2乗法のC言語でのプログラム
の作り方を教えてください!

また、特異値分解法と最小2乗法についてもよくわからないので
何かわかりやすい説明あれば教えていただけると幸いです!

よろしく、お願いします!

このQ&Aに関連する最新のQ&A

A 回答 (1件)

管理者より:


同等の質問があるのでそちらをご参照下さい

参考URL:http://www.okweb.ne.jp/kotaeru.php3?q=169753
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

Qどんな関数が最小2乗法に適する?

一般論をお聞きしたいのですが、どんな関数に従うか(理論的に)わからないデータがあったとします。
その場合にどんな関数を用いて最小2乗法を行うのが良いのかお尋ねしたいのです。

非常に狭い範囲においては一次関数に従うでしょうから、1次関数にするでしょうし、
少し範囲を広げるとグラフの曲がっているのが見えてくるでしょうから2次関数にするでしょう。
そうやって欲張って(笑)いくと、3次関数,4次関数,…としていくことになるのでしょうが、
他に方法はないのでしょうか。
例えば2次関数に√xの項を加えるとか、3次関数に1/xの項を加えるような方法は有効なのでしょうか。
グラフを見た感じy=ax^n (ただし0<n<1)のような関数なのですが
データの対数をとって一次関数にしてもあまり良い近似にならなかったようで、
EXCELの逆行列機能を用いて2次関数,3次関数,…としていったのですが、
わずかであっても極大・極小ができては困ります。
かといって数学力がないので複雑な関数で置いても解けないと困るのです。
こんな事態なのですがアドバイスいただけないでしょうか。

一般論をお聞きしたいのですが、どんな関数に従うか(理論的に)わからないデータがあったとします。
その場合にどんな関数を用いて最小2乗法を行うのが良いのかお尋ねしたいのです。

非常に狭い範囲においては一次関数に従うでしょうから、1次関数にするでしょうし、
少し範囲を広げるとグラフの曲がっているのが見えてくるでしょうから2次関数にするでしょう。
そうやって欲張って(笑)いくと、3次関数,4次関数,…としていくことになるのでしょうが、
他に方法はないのでしょうか。
例えば2次関数に√xの項を...続きを読む

Aベストアンサー

もし各係数が有意になる、などを「良い結果」とするのであればこの方法は使えませんが、単純に R^2 が 1 に近ければ良いというのであれば、私ならこうする、という方法を書きます。

1.
グラフを書いてみて大雑把な形を把握する
→この問題なら y=ax^n の形

2.
一次関数に変換する
→この問題なら log(y) = log(a) + n log(x)

3.
もし近似が良くなければ a,n の推定値 a~, n~ を用いて残差 e を
e = y - y~ = y - ( log(a~) + n~ log(x) )
として計算し、e と x の関係を 1. から 3. まで繰り返す。

4.
近似が良くなった e と x の関係式を例えば e=b+mx と仮定すると、
log(y) = log(a) + n log(x) + e
e = b + m x
から
log(y) = log(a') + n log(x) + m x
とすれば、充分に良い近似が得られる。
この場合、元々の式は
y = C x^n exp(x)
である。

もし各係数が有意になる、などを「良い結果」とするのであればこの方法は使えませんが、単純に R^2 が 1 に近ければ良いというのであれば、私ならこうする、という方法を書きます。

1.
グラフを書いてみて大雑把な形を把握する
→この問題なら y=ax^n の形

2.
一次関数に変換する
→この問題なら log(y) = log(a) + n log(x)

3.
もし近似が良くなければ a,n の推定値 a~, n~ を用いて残差 e を
e = y - y~ = y - ( log(a~) + n~ log(x) )
として計算し、e と x の関係を 1. から 3. まで繰り返す。
...続きを読む

Q重みつき最小2乗法について

最小2乗推定値mの分散を最小にする重みwiの値がわからずに困っています。
ラグランジュの未定乗数法を用いて導くらしいのですが、回答に辿り着けません。
最小2乗推値の分散は、var(m)=Σwi^2*var(mi)で、
制約条件は1=Σwiです。

よろしくお願いします……

Aベストアンサー

まず、問題が分かりません。
一般的な仮定の下で、最小自乗法は最良線形不偏推定量ですから、加重しない場合が最も分散が小さくなります。つまり wi=wj のときです。
加重するのは、不均一分散の問題が発生した場合です。

それから m は推定値ですか? それとも説明変数ですか? ひょっとして理論値ですか?
例えば、y=a+bX+u というモデルの (a,b) の推定値 (a~,b~) に当たる部分ですか? X に当たる部分ですか? y~=a~+b~X としたときの y~ ですか?

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


このカテゴリの人気Q&Aランキング

おすすめ情報