■粟屋の方法について

 通常用いられる最小2乗法は,計算を単純にするため「縦軸のデータだけに誤差がある場合で,横軸のほうの誤差は全くないかあるいは無視できるものと見なすことができる」という前提をおいて,目的関数を

  2次元:s=Σwi(yi−f(xi))^2   (wi:重み)

  3次元:s=Σwi(zi−f(xi,yi))^2    (wi:重み)

などとし,誤差はあくまでもyのみ(3次元の場合はzのみ)に含まれるものとしています.それとは逆に,xのみに誤差がある場合は従属変数と独立変数を入れ替えるだけで,この解析法がそのまま適用できます.

 実用上はこれで十分な場合も多いのですが,横軸側のデータといえども必ずしも理想的には管理されず,誤差の混入が常ですから,どうしてもx,y双方に誤差を考えないといけない場合があります.たとえば,ある物質と受容体の結合親和性や受容体量を求めるためのラングミュア・プロット(Langmuir plot)では,縦軸・横軸とも測定濃度をプロットするので,x軸側,y軸側ともに誤差があり,その値が大きいほどその誤差の絶対値は大きくなります.また,最高血圧(東京の最高気温)をx,最小血圧(仙台の最高気温)をyとした散布図ではxがyの原因である(yがxの原因である)という関係が想定しにくく,通常の回帰の観念を用いるのは適当ではありません.

 x側,y側どちらにも誤差がある場合は独立変数,従属変数の区別がなく対等と考えられますから,f(x,y)=0のように陰関数表現しておく方が楕円のような多価関数となるデータに対しても曲線のあてはめができるので何かと都合がよくなります.そのような方法に,青山学院大学理工学部・物理を定年退官された粟屋隆先生による2次元フィッティングの方法があります.

 読者が粟屋の方法に興味を持ち使って下さることを願って,ここで宣伝しておきますが,詳細は参考文献

  粟屋 隆「データ解析」,学会出版センター

をご参照願います.

 ところが,先日,東海大学・海洋学部の大西修平先生から粟屋の方法に対するひとつの問題が提起されました.粟屋の計算式には母分散σxi^2,σyi^2が含まれるのですが,これらが既知の場合はいいとして未知の場合はどうしたらいいかというものです.実際問題として未知であるほうが当り前ですから,今回のコラムでは母分散σxi^2,σyi^2が未知のときの粟屋の2次元フィッティング法の取り扱いについて考えてみます.

===================================

【1】ラグランジュの未定係数法

 まず最初に粟屋の方法について説明します.粟屋の方法ではラグランジュの未定係数法が使われていますが,ラグランジュの未定係数法は,たとえば,「x^3−3xy+y^3=0の条件のもとでx^2+y^2の極値を求めよ」といった条件つき極値問題や制約条件付きの最小2乗法などの解を得るために導入された方法です.

 制約条件付きの最小2乗法は19世紀の測量士たちのおこなった三角測量でもっともよく用いられましたが,以下にその簡単な例を示します.

 「三角形の三つの内角を等精度で測定し,α=54°05′,β=50°01′,γ=76°06′を得た.内角の和は2直角になるべきであるが,測定誤差のため180°12になった.」

 このような場合に内角の最確値x,y,zおよび確率誤差を求めるにはどうしたらよいかを考えてみましょう.x+y+z=πが要請されている条件です.また,測定精度は等しいので荷重をwi =1とします.

 このような制約条件付きの問題では,変数λを新たに導入して,目的関数を

  s=Σ(測定誤差)^2−λ(条件式)

   =(x−α)^2+(y−β)^2+(z−γ)^2−λ(x+y+z−π)

としてsを最小にするx,y,zおよびλを求めます.極値の必要条件により,  ∂s/∂x=2(x−α)−λ=0・・・・・(1)

  ∂s/∂y=2(y−β)−λ=0・・・・・(2)

  ∂s/∂z=2(z−γ)−λ=0・・・・・(3)

  ∂s/∂λ=−(x+y+z−π)=0・・・(4)

前の3つの式を加え合わせて,

  2(x+y+z−α−β−γ)−3λ=0

が得られます.(4)式より,x+y+z=πを代入すると

  λ=2/3(π−α−β−γ)

が得られます.このλを(1),(2),(3)式に代入して

  x=α+1/3(π−α−β−γ)=54°01′

  y=β+1/3(π−α−β−γ)=49°57′

  z=γ+1/3(π−α−β−γ)=76°02′

が求める解となります.すなわち,等精度で三角形の内角を測定したときの各補正量は測定値の和と180°との差を3等分したものです.

 このように,制約条件のある最小2乗問題を解くには未定係数λを導入して,未知のパラメータと未定係数λについて方程式を解けばよいことになり,制約条件のない場合の手法を用いて容易に解くことができることが理解されるでしょう.

===================================

【2】粟屋の方法

 粟屋の方法は,品質管理・計量管理で有名なデミング(Deming)のクラシカルな方法を改良したものですが,デミングの方法が反復計算にそぐわない1回限りの計算法であるのに対し,粟屋の方法は反復計算によって精度を逐次高めていくことが可能になっています.

 この2次元フィッティングは実に念の入った膨大なものであり,未知数が多くなって計算はかなり複雑になります.この解法については

  粟屋隆著「データ解析」(学会出版センター)

に詳しいのですが,特殊な問題にはこのような考察が必要になり,拡張した取り扱いを然るべく行なえば解が得られることをアウトラインだけでも知っておいたほうがよいと思われます.

 詳細は省略し理論の要点のみを記しますが,粟屋の関数フィッティングの方法は,最尤法に基づいていて,データ(x,y)の真の値を(x0,y0)とすると,目的関数sは

  s=Σ{(x−x0)^2/σx^2+(y−y0)^2/σy^2}

と書き表すことができます.これはz軸方向の残差2乗和ではなくて,x−y平面におけるデータ点と真値のマハラノビス距離の2乗和です.もし,σx=σyならば,

  s=Σ{(x−x0)^2+(y−y0)^2}

ですから,x−y平面上のユークリッド距離の2乗和を最小化することと等価になります.すなわち,粟屋の方法は陽関数におけるガウス・ニュートン法を陰関数まで取り扱いを拡張したもので,線形関数・非線形関数いずれの場合もユニバーサルに取り扱うことができるのです.

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

 2次元フィッティングでは,取り扱う陰関数をパラメータも含めf(x,y,a)=0と書くことにします.ここで,データ(xi,yi)の真の値を(xi0,yi0),真の係数を示すベクトルa0=(a10,・・・,am0)とすると,

  f(xi0,yi0,a0)=0

が恒等的に成り立ちます.したがって,制約条件式にはf(xi0,yi0,a0)=0を用いることになります.

 目的関数sは,

  s=Σ(xi−xi0)^2/2σxi^2+Σ(yi−yi0)^2/2σyi^2

   =ΣΣ(xi−xi0)^2/2σxi^2+Σ(yi−yi0)^2/2σyi^2−Σλif(xi0,yi0,a0)      (λi :ラグランジュの未定係数)

と表わすことができますから,

  ∂s/∂xi0=−(xi−xi0)/σxi^2−λi∂f(xi0,yi0,a0)/∂xi0=0

  ∂s/∂yi0=−(yi−yi0)/σyi^2−λi∂f(xi0,yi0,a0)/∂yi0=0

  ∂s/∂aj0=−Σλi∂f(xi0,yi0,a0)/∂aj0=0

   (i=1〜n,j=1〜m)

を解けばよいことになります.

 ここで解くべき連立方程式の未知数は,xi0,yi0,λiがn個ずつ,aj0がm個で合計3n+m個となり,未知数が多すぎて計算は大変複雑となります.そこで,まずλiを消去することを考えます.以下,表記を簡単にするため,

  ∂f(xi0,yi0,a0)/∂xi0≡〜 fxi

  ∂f(xi0,yi0,a0)/∂yi0≡〜 fyi

  ∂f(xi0,yi0,a0)/∂aj0≡〜 fji

と表わすことにします.

 アプロ−チの途中を省略しますが,誤差伝播の法則より,z=f(x,y)の母分散σz^2は,分布形にかかわらず,

  σz^2=(∂f/∂x)^2σx^2+(∂f/∂y)^2σy^2

で近似することができることより,重み係数に相当するのが

  wi={(σxifxi)^2+(σyifyi)^2}^(-1)

また,2変数関数のテイラー展開より

  f(x+Δx,y+Δy)=f(x,y)+Δxfx+Δyfy+1/2(Δx^2fxx+2ΔxΔyfxy+Δy^2fyy)+・・・・・

 ニュートン法の漸化式ではf(x+Δx,y+Δy)=0とおいてΔx,Δyを求めるわけですから,残差の近似値に相当するのがfi0+(xi−xi0)fxi+(yi−yi0)fyiになり,結局,

  Fj≡Σwi{fi0+(xi−xi0)fxi+(yi−yi0)fyi}fji=0   (j=1〜m)

を解けばよいことになります.

 これをガウス・ニュートン法と同様の方法で整理することにします.真の値xi0,yi0,a10,・・・,am0の近くの点(xi,yi,a1,・・・,am)で関数f(xi0,yi0,a0)=0をでテイラー展開し,1次までの項をとると

  fi0=fi+fxiΔxi+fyiΔyi+ΣfkiΔak=0

となり,また,微分係数は点(xi,yi,a1,・・・,am)における値で置き換えると,

  Σwi{fi+(xi−xi0)fxi+(yi−yi0)fyi}fji=ΣwifaiΣfkiΔak

が得られ,Δakが計算されることになるのです.

 多価関数に対する取り扱い(2次元フィッティング)において,パラメータを計算するには最初に未知のパラメータの初期値を与えなくてはいけないことはガウス・ニュートン法と同じですが,粟屋の方法ではさらに測定値の真の値も与えなければなりません.測定値の真の値の初期値には測定値自身を用いることにし,パラメータと測定値の真の値の第1近似値を与えてやって逐次近似解法により漸近連立方程式を解きます.

===================================

【3】大西先生の問題提起

 前節で示したように「粟屋の方法」には母分散σxi^2,σyi^2が含まれています.必ずしもそれらが母分散といった量である必要はありませんが,それらの値があらかじめ与えられていないと計算できません.したがって,これらが既知の場合はいいとして未知の場合はどうしたらいいかというのが大西先生からの問題提起でした.

 大西先生のご指摘の通り,確かに一般的なデータ解析では分散も未知として扱う必要があります.粟屋の方法は最尤法に基づいていますから,分散が未知の場合についても対数尤度を書き下し最大化を実行する必要があるのですが,データ(xi,yi)が独立な誤差をもつときの確率分布は,2次元正規分布:

  p(xi,yi)=1/2πσxi^2σyi^2exp{−(xi−xi0)^2/2σxi^2−Σ(yi−yi0)^2/2σyi^2}

ですから,対数尤度関数は,

  L=Σ{−(xi−xi0)^2/2σxi^2−logσxi−Σ(yi−yi0)^2/2σyi^2−logσyi}−nlog2π

と書けます.

 これをσxi,σyiで偏微分し0とおくことによって

  ∂L/∂σxi=0 → σxi^2=(xi−xi0)^2

  ∂L/∂σyi=0 → σyi^2=(yi−yi0)^2

が得られます.これを

  wi={(σxifxi)^2+(σyifyi)^2}^(-1)

に代入すると,σxi^2,σyi^2が陽には現れない形になって大西先生の提起された問題点が解消されます.

 実際に計算してみたところ,誤差の小さいデータに大きな重みのかかった形の解が得られました.また,計算所要時間は余分にかかりましたが,それは重みwiのなかに未知のパラメータxi0,yi0が潜在変数として含まれるために応答曲面が滑らかにならないためと考えられました.なお,繰り返し計算の初回にはwi=∞となるのを防ぐ工夫が必要でした.

===================================

【4】f(x,y,θ)=0型回帰の信頼区間

 以下,∂f/∂θk,∂f/∂x,∂f/∂yをそれぞれfk,fx,fyと略記することにしますが,この場合も,未知母数の信頼区間を与えてくれる分散共分散行列{cov(θi,θj)}は正規方程式の係数行列の逆行列として求めることができますし,関数fの誤差は,パラメータの回りでテイラー展開して,

  (Δf)2=ΣΣfifjcov(θi,θj)

で与えられることも,y=f(x,θ)型回帰の場合と同様です.

 横軸側にも誤差がある場合の信頼区間表示で異なっている点は,この誤差を縦軸方向と横軸方向に分解する必要があることです.再び,誤差伝播の法則

  (Δf)^2=(fxΔx+fyΔy)^2

を用いますが,この式は,いわば誤差の分散公式

  σ2(x+y)=σ2(x)+σ2(y)+2rσ(x)σ(y)

であって,z=x+yとするとz軸方向の合成分散をx軸,y軸の2つの方向に分配すると考えることができます.

 その際,ベクトル(Δx,Δy)は法線方向を向きますが,陰関数f(x,y)=0上の点(x,y)で接線の方程式を求めるには,2変数関数の微分の知識が必要で,f(x,y)=0のyをxの関数(f(x,y(x))=0)とみなして,両辺をxで偏微分すれば2変数関数の合成微分の公式によって

  ∂f/∂xdx/dx+∂f/∂ydy/dx=0

すなわち,fx+fydy/dx=0より,

  y’=dy/dx=−fx/fy

が得られます.

 これが陰関数定理ですが,これにより,

  Δy/Δx=fy/fx

となり,独立な誤差をもつときは

  (Δf)^2=(fxΔx)^2+(fyΔy)^2

ですから

  (Δx)^2=(Δf)^2fx^2/(fx^4+fy^4)

  (Δy)^2=(Δf)^2fy^2/(fx^4+fy^4)

が得られます.

===================================