モデルの違いによる最小2乗解とは

このQ&Aのポイント
  • モデルの違いによる最小二乗解とは、観測値をモデルで表現し、誤差の二乗を最小にする未知数を求める方法です。
  • 特異値分解法を用いてモデル(x₁、z)=(0、10)で解を求めた場合、別のモデルで未知数(x₁、x₂、z)を求めた際には解が異なることがあります。
  • なぜ同じ観測値を異なるモデルで解析した場合に解が異なるのか、その理由について説明できません。質問者はこの疑問を解決するためのヒントを求めています。
回答を見る
  • ベストアンサー

モデルの違いによる最小2乗解

ある観測値Yiをaix1+biz+eiというモデルを用いて連立方程式をたて、eの2乗を最小にする未知数 x1、zを特異値分解法を用いて(x1、z)=(0,10)と言う解を得たとします。 ここでiは観測数、ai,biは既知の係数、eiは正規分布に従う誤差とします。 つぎに、同じ観測値Yiをa1ix1_a2ix2+biz+eiというモデルを用いて同じように未知数x1、x2、zを求めたとき、つまりひとつ未知数を増やした場合、その解は(x1、x2、z)=(0,0,10)とはなりませんでした。ここで、a1i, a2i,biは既知の係数、iは3以上、biは前のモデルと同じ係数。 感覚的にそうならないだろうと思いますが、なぜそうならないのか、うまく説明できません。お力をお借りできれば幸いです。 よろしくお願いいたします。

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

  • ベストアンサー
  • ramayana
  • ベストアンサー率75% (215/285)
回答No.1

2点確認します。 [1]  2番目のモデルは、 a1ix1+a2ix2+biz+ei の意味か? [2]  1番目のモデルに現れる ai は、2番目のモデルに現れる a1i と同じか? 以下、 [1] と [2] を前提とします。 また、次の [3] 、 [4] の記号を使います。 [3]  1番目のモデルで推計される x1、z、ei と、2番目のモデルで推計されるx1、z、ei は、違うものなので、2番目のモデルの推計値は、すべて「 ' 」を付けて表示する。すると、2番目のモデルは、次のようになる。   Yi = a1ix1'+a2ix2'+biz'+ei' [4]  添字が煩わしいので、 Yi、a1i、a2i、bi、ei、ei' をそれぞれ縦に並べた列ベクトルを、それぞれれ、 Y、A1、A2、B、E、E' と記す。 すると、2つのモデルは、次のように表されます。 [5]  Y = x1A1 + zB + E [6]  Y = x1'A1 + x2'A2 + z'B + E' ここで、 Y、A1、A2、B が既知の値で、x1、z、E、x1'、x2'、z'、E' が推計される値です。最小二乗法では、次のようにパラメータが推計されます。 [7]   x1 と z は、A1 と E が直交し、B と E が直交するように、決定される。 [8]   x1'、x2'、z' は、A1 と E' が直交し、A2 と E' が直交し、B と E' が直交するように、決定される。 ご質問は、 x1 = x1' 、 z = z' にならないのが何故か、ということだと思います。以下が回答になります。 ********** 直感的に言えば、次のようになる。 A1 の変動には、 A2 の変動と相関を持って動いている部分がある。よって、 [5] の x1 には、実はA2 の変動によって引き起こされる部分が含まれる。同様に、 B の変動には、 A2 の変動と相関を持って動いている部分がある。よって、 [5] の z には、A2 の変動によって引き起こされる部分が含まれる。 [6] の x1' と z' は、これらの部分が吸い取られた後なので、x1やz と異なる。 数式では、次のように表される( ux2' と vx2' が吸い取られる部分)。 [9]   x1 = x1' + ux2' [10]  z = z' + vx2' [11]  E = x'2F + E ただし、u、v、F は、次のモデルを最小二乗法で推計した結果である。 [12]  A2 = uA1 + vB + F  ( F は残差項) なお、 [9]、[10]、[11] は、[7]、[8] を使って簡単に証明できる。以上の議論で、残差が正規分布に従うことは、使われない。

関連するQ&A

  • 最小2乗法などによる推定について

    2次による推定(近似?)を行っているのですが、 (a1*x^2+a2*x+a3)(a4*y^2+a5*y+*a6)(a7*z^2+a8*z+a9) =c1*x^2*y^2*z^2+c2*x^2*y^2*z+・・・・・・+c27 上記の式の場合、最終的に係数cが1から27まででてくるとおもいます。この係数はどのようにして求めればよいのでしょうか? なお、x,y,zは既知の数です。 見にくく、わかりづらいかと思いますがよろしくお願いいたします。

  • 行列の形をしたN元連立方程式

    詰まってしまったのでお知恵を拝借させてください。 まずベクトルXi,Yiと行列Wが以下のようであるとします Xi = (  xi  yi  zi ) Yi = (  ai  bi  ci  di ) W = (  w11 w12 w13  w21 w22 w23  w31 w32 w33  w41 w42 w43 ) このとき ・Xの3要素は未知 ・Wの12要素も未知 ・Yの4要素は値が観測できるため既知 次にこれらから  Yi = W Xi ――(1) という式が成り立つとし、 これにより  [Y1 Y2 ・・・ Yi ・・・ Yn] = W [X1 X2 ・・・ Xi ・・・ Xn] ――(2) という式が成り立ちます。 この式より、XiとWが求めたいです。 このとき, 式(1)からは拘束が4つ得られる(式が4個立つ)ので 式(2)では拘束が4n得られ(式が4n個立つ)ます。 一方,未知数の数はX1・・・Xnの3nとWの12で3n+12個となります。 一般に式の数が未知数の数以上になれば未知数は求まるはずなので  4n ≧ 3n + 12  n ≧ 12 即ち、式(2)においてnが12以上であれば未知数WとXが求まる条件は満たしていることになります。 さてここで質問なのですが式(2)(n≧12)のような行列の形をした方程式からWとXiを求めるにはどうすればいいのでしょうか? 解法についてどのように調べたらいいのかさえ解らない現状です。 よろしくお願いします。

  • 複素数の問題

    以下の問題について、解き方と解を教えていただけないでしょうか。 1.複素数a+biの形にする。 (1)e^(3+9πi) (2)z^3+2iz※z=x+yiとする (3)(1/2+√3・i/2)^12 2.関数f(z)が正則であるか考え、正則であればf'(z)を求める。但しz=x+yiとする。 (1)f(z)=z^5-3z^3-1 宜しくお願い致します。

  • 最小二乗平面

    ある複数の空間座標(x1,y1,z1)~(xn,yn,zn)(nは3以上)から、平面近似式である最小二乗平面の方程式を求める関数を作ろうと考えています。 平面方程式はz=ax+by+c(a,b,cが定数)であらわされ、引数を座標と座標個数n、戻り値をa,b,cにします。 ここ(http://oshiete1.goo.ne.jp/qa2802443.html)を参考に 最小二乗平面の連立方程式を解くコードを書いたのですが、 どうも答えが合いません。どなたかご教授願えないでしょうか? 開発環境はC++Builder2007です。 ↓の数式をコードにしましたが、コードが間違っているのか、 数式自体がダメなのかさっぱりわかりません。 //与えられるn個の3次元座標(xi,yi,zi)から平面方程式を求める //平面方程式:z = ax + by + c //最小二乗平面を求める連立方程式は下記のようになる。 // aΣxi^2 + bΣxiyi + cΣxi = Σxizi // aΣxiyi + bΣyi^2 + cΣyi = Σyizi // aΣxi + bΣyi + cn = Σzi //これを行列で解く // |Σxi^2 Σxiyi Σxi | |a| = |Σxizi| // |Σxiyi Σyi^2 Σyi | |b| = |Σyizi| // |Σxi Σyi n | |c| = |Σzi | //ここで // |Σxi^2 Σxiyi Σxi | // A = |Σxiyi Σyi^2 Σyi | // |Σxi Σyi n | // // |Σxizi| // B = |Σyizi| // |Σzi | // // |a| // C = |b| // |c| // //とすると // // C = B・A^-1 // //で求めることができる

  • 数IIの問題を教えてください

    有理数係数の方程式では a+b√m が解のとき、a-b√m も解であると習ったのですが、これは無理数係数の方程式では成り立たないのでしょうか。 もう1つ、実数係数の方程式では a+bi が解のとき、 a-bi も解であると習ったのですが、虚数係数の方程式では成り立たないのでしょうか。

  • 複素数のn乗について2

    前回の質問でよくわからない部分があったのでサイド質問させていただきます。 解説の抜粋なのですが、 z=a+bi (a,bは自然数 i は虚数単位) とし (a^2+b^2)^n=(|z|^2)^n=|z|^2n=(|z|^n)^2 というくだりがあるのですが、 a+biの絶対値の2乗はどうしてa^2+b^2になるのでしょうか? 回答よろしくお願いします

  • 波動方程式の解

    電磁界の平面波に関する問題で偏微分方程式を 解く必要がでてきたので質問させていただきたいのですが、 ∂^2Ex/∂z^2=εμ∂^2Ex/∂t^2 の波動方程式の解は未定係数法により Ex=Ae^{jωt}e^{jβz}とおいて解くと、 β=ω√(εμ)とし、Ex=Ae^{jβz}となりますが、 これから、もう1つの偏微分方程式 -∂Hy/∂z=ε∂Ex/∂tから、Hyを求めたいのですが、 この偏微分方程式はどのように解いたらいいのでしょうか?答えは、(ω/β)εExとなるそうですが、途中の過程が 分からなくて・・・。 また、最初の偏微分方程式において解の形をA,βを未知数として、Ex=Ae^{jωt}e^{jβz}とおく未定係数法以外の方法で解く手段はあるのでしょうか? よろしければ回答お願いいたします。

  • 指数関数 連立方程式 未知数3個(A1,A2,a)

    指数関数 連立方程式 未知数3個(A1,A2,a) I(x1)=A1*exp(-a*x1)+A2*exp(a*x1) I(x2)=A1*exp(-a*x2)+A2*exp(a*x2) I(x2)=A1*exp(-a*x1)+A2*exp(a*x3) 上の三本の連立方程式があります。未知数は3個で、x1~x3とI(x1)~I(x3)は既知です。この式を解くにはどのようにすればよいでしょうか。紙とペンだけで解けるのでしょうか。教えていただければ嬉しいです。

  • 分子構造の重ねあわせ (行列、最小二乗法など?)

    すいません、化学っぽい内容の質問なのですが、 アルゴリズムは数学になると思うのでこちらで質問させていただきます。 また、説明不足を補うために一部プログラムっぽい表記をさせていただきますのでご了承ください。 現在、分子構造を比較するためのプログラムを作成しています。 そのプログラムに構造の「重ね合わせ」機能を追加したいのですが そのアルゴリズムに最小二乗法などが必要らしく、悩んでいます。 (詳細は長くなるので下に書きます) 分かる方がいましたらご教示お願いします。 よろしくお願いします。 ■重ね合わせについて 分子構造のデータは、各原子がそれぞれX, Y, Z座標の3つの値を持っています。 例えば、200原子からなる分子のデータ構造は以下のようになります。 Atom { double x; double y; double z; } Atom atom = new Atom[200]; 重ね合わせる2つの構造は原子数は同じとします。なので、分子構造2つをa1, a2とし、 対応する点の誤差をとっていくと、誤差の平均を求める計算は以下のようになります。 Atom a1 = new Atom[200]; Atom a2 = new Atom[200]; double d = 0; for (i = 0; i < a1.length; i++) d += sqrt(pow((a1[i].x-a2[i].x),2) + pow((a1[i].y-a2[i].y),2) + pow((a1[i].z-a2[i].z),2)); d = d / a1.length; このdの値が最小値をとるようにa2の原子の座標を変更することを「重ね合わせ」と定義します。 ■重ね合わせのアルゴリズムについて 基準となる構造に対し、もう一つの構造を並進や回転によって合わせる感じになると思います。 今回質問する箇所はこのアルゴリズムになります。 この際に行列計算や最小二乗法を使うことになるかと思われます。 ■質問者の考え 途中まで、しかも間違っている可能性がありますが私の考えたアルゴリズムを追記しておきます。 (i) a1, a2の重心を求める double x1 = y1 = z1 = x2 = y2 = z2 = 0; for (i = 0; i < a1.length; i++) { x1 += a1[i].x; y1 += a1[i].y; z1 += a1[i].z; x2 += a2[i].x; y2 += a2[i].y; z2 += a2[i].z; } x1 = x1 / a1.length; y1 = y1 / a1.length; z1 = z1 / a1.length; x2 = x2 / a1.length; y2 = y2 / a1.length; z2 = z2 / a1.length; a1の重心(x1, y1, z1)とa2の重心(x2, y2, z2)が求まります。 (ii) 重心の誤差を求め、誤差をa2の各原子の座標に反映させる xd = (x2 - x1); yd = (y2 - y1); zd = (z2 - z1); for (i = 0; i < a1.length; i++) { a2[i].x -= xd; a2[i].y -= yd; a2[i].z -= zd; } この方法で誤差はかなり小さくなります。しかし、最小値にはなってないと思われます。 なので、この方法が正しいのかよく分かりません。

  • 統計学: 尤度推定量、最小二乗法

    統計学なのですが、悩んでいるところは 微分の極値問題 なので 微分ができる方にも アドバイスをお願いしたいです。 さて、問題ですが L = - Σ(i=1->n)(Yi - θ*Xi)^2/(2*σ^2) - (n/2)ln(2*π*σ^2) を最大化するθ,σ^2を求め、 そのθとσ^2がLを最大化していることを示せ。という問題です。  ただし X1,X2,...,Xn と Y1,Y2,...,Yn は定数扱い。 また θ>= 0 , n は自然数,σ^2 > 0 です。 もとは 統計学の問題で 線形回帰モデル  Yi = θ*Xi + εi ,εi は 正規分布 N(0,σ^2) に従う。 を考えたとき θとσ^2の最尤推定量を求め、その推定量が尤度を最大化していることを証明せよ。 という問題で (対数)尤度L を計算すると L = - Σ(i=1->n)(Yi - θ*Xi)^2/(2*σ^2) - (n/2)ln(2*π*σ^2) となり、 あとは極値問題を解くだけというところから 分からなりました。 この先、私が考えたのは ∂L/∂(σ^2) =0 かつ ∂L/∂θ =0 を満たす θ,σ^2 を求めること(grad(L)を導出) 前者は  σ^2 = Σ(Yi-θ*Xi)^2 /n 後者は  Σ(Yi-θ* Xi)*Xi = 0 という 形に変形できたのですが、 後者の式をこれ以上 くずせませんでした。 ここでアドバイスがほしいのです。 統計、もしくは解析ができる方、アドバイスをいただけないでしょうか。 文が長くなってしまいましたが、よろしくお願いします。