■「積分値の誤差」と「誤差の積分値」

 ある現象の測定データがn個のデータ組(x1,y1),(x2,y2),・・・,(xn,yn)で与えられ,xiとyi(i=1〜n)の間には何らかの関数関係があるとしよう.2次元データ(xi,yi)に何らかのモデル式をあてはめるというデータ処理において,通常用いられるモデル式はm個の未知のパラメータθ=(θ1,θ2,θ3,・・・,θm)を含む陽関数:y=f(x,θ)である.
 
 ところで,実際のデータ処理において,真に求められているものはyではなく,yの(定)積分値
  ∫ydx
であるというケースにしばしば遭遇する.たとえば,横軸が時間tの場合,時刻0から時刻24までのyの積算値
  ∫(0,24)ydx
を知りたい−−−などがそのようなケースである.
 
 その際,積算値∫(0,24)ydxの誤差はどのように表されるのであろうか? 今回のコラムのテーマには,誤差伝播の法則の適用をめぐって,その周辺に派生した問題を取り上げるが,このような場合の誤差伝播の法則の取り扱いを考えてみることは,誤差解析にとって大変重要なことである.
 
===================================
 
 ここでは,y=f(x,θ)がパラメータθに関して非線形の場合を扱うことにするが,この関数を真の値θ0のまわりでテイラー展開し,パラメータの推定値がよければ2次以上の導関数を無視できるため,1次までの項をとると,
 
  f(x,θ)=f(x,θ0)+Σ∂f(x,θ0)/∂θk(θk−θk0)
 
と線形近似することができる.コラム「精度保証つき非線形解析」では,誤差伝播の法則(propagation of error)を用いて,yの誤差Δy(の2乗)が,
 
  (Δy)^2=E(y−y0)^2
       =ΣΣ(∂f/∂θi)(∂f/∂θj)cov(θi,θj)
 
と表されることを示した.実は,線形であっても同じ形になる.→【誤差伝播の法則とデルタ法】参照
 
 一方,積分値の誤差(の2乗)は,(Δy)^2=E(y−y0)^2ではなく,
  E(∫ydx−∫y0dx)^2
である.テイラー展開より,
  y−y0=Σ∂f(x,θ0)/∂θk(θk−θk0)
であるから,両辺をxについて積分して
  ∫ydx−∫y0dx=Σ∫∂f(x,θ0)/∂θkdx(θk−θk0)
 
 この式に対して,誤差伝播の法則を適用すると
  E(∫ydx−∫y0dx)^2=ΣΣ(∫∂f/∂θidx)(∫∂f/∂θjdx)cov(θi,θj)
が得られる.これが積分値の誤差(の2乗)である.
 
 この式は,いわば連続の世界(∫dxの世界)の積分値の誤差を表すものであるが,連続型:∫∂f/∂θkdxを離散型:Σ∂f/∂θkで置き換えても問題は生じない.すなわち,離散の世界(Σの世界)での積分値の誤差は,
  E(Σy−Σy0)^2=ΣΣ(Σ∂f/∂θi)(Σ∂f/∂θj)cov(θi,θj)
で表されることになる.
 
===================================
 
 ところで,「積分値の誤差」
  √ΣΣ(∫∂f/∂θidx)(∫∂f/∂θjdx)cov(θi,θj)
を求めよという問題を出題すると,必ずといっていいくらい「誤差の積分値」
  ∫Δydx=∫√ΣΣ(∂f/∂θi)(∂f/∂θj)cov(θi,θj)
が解答として返ってくる.パラメータ数が1のとき,両者はまったく同じ式を与える.しかし,パラメータ数が2以上になると異なってくる.にもかかわらず,多くの人の解答が「誤差の積分値」なのである.一体,これはどうしたことであろうか?
 
 「積分値の誤差」と「誤差の積分値」の比較を行ってみると,「積分値の誤差」は「誤差の積分値」ほどには直感に訴える意味を持ち合わせていない.喩えていうならば,前者は論理を優先し面白味に欠けるが着実である方法なのに対し,後者のほうが直感的で人の心にストレートに訴えるものがあるが往々にして失敗する方法というわけである.
 
 「積分値の誤差」は論理的には正しいものであるが,おそらく「積分値の誤差」を直観的に求められる人はいないであろう.
 
===================================
 
 さて,幾何学的な直感により「積分値の誤差」は「誤差の積分値」よりも大きいことが推測できる.以下,このことを解析的に証明してみたい.
 
 表現をコンパクトにするために,「積分値の誤差」と「誤差の積分値」を行列・ベクトル表現しておくことにする.
 
[1]分散共分散行列:
cov(θi,θj)=Δ
[2]偏微分ベクトル:
(∂f/∂θ1,∂f/∂θ2,∂f/∂θ3,・・・,∂f/∂θm)=g
[3]その積分型:
(∫∂f/∂θ1dx,∫∂f/∂θ2dx,・・・,∫∂f/∂θmdx)=G
と定義すると,誤差の積分値は
  ∫(0,x)Δydx=∫√gΔgtdx
また,積分値の誤差は,
  √GΔGt
のように見やすい形に表現される.ただし,gt,Gtはそれぞれの行列の転置行列を表わすこととする.
 
 ここで,「誤差の積分値」−「積分値の誤差」をxの関数とみて,F(x)とおくと
  F(x)=∫gΔgtdx−GΔGt
微分すると
  F’(x)=√gΔgt−1/(2√GΔGt)×(gΔGt+GΔgt)
 
 行列Δは正定値2次形式の対称行列,すなわち対角線に対して対称であるから,
  gΔGt=GΔgt
したがって,
  F’(x)=1/√GΔGt(√gΔgt×√GΔGt−gΔGt)
 
 √gΔgt×√GΔGt≧gΔGtは,形こそ違えど,シュワルツの不等式
  ‖g‖‖G‖≧|〈g,G〉|
にほかならない.→【シュワルツの不等式】参照
 
 〈g,G〉はgとGの内積である.Δ=I(単位行列)のとき,左辺はノルムの積,右辺は内積になるが,Δのときも内積の条件を満たすので,求める結果:F’(x)≧0が得られる.以上より,F’(x)≧0,また,F(0)=0.したがって,「積分値の誤差は,誤差の積分値よりも大きい」ことが証明されたことになる.
 
 また,
  E(∫ydx)=∫y0dx
は不偏推定量のなかで,分散が最小のもの(最小分散不偏推定量)になっていることも窺い知ることができるだろう.
 
===================================
 
 行列とベクトルを使うと表現がコンパクトになる反面,慣れない人にとっては極めてわかりにくく,数学が苦手な人はタジタジですし,さらにマトリックスの数値計算になると数学アレルギーの人は重症のノイローゼになりそうです.しかし,このような積分を含んだ不等式の証明にとっては,この表現のほうがエレガントになり実際の証明になじみやすいのです.前述の証明の場合でも,たった数行でエレガントに解くことができました.
 
 なお,エレガント(elegant)でない力まかせの表現はエレファント(elephant)と呼ばれます.これはエレガントとエレファントをかけたダジャレですが,数学の表記法は無駄を省いて短く巧みに簡潔にをよしとしていて,数学形式のすばらしいところはエレファントな表現を排除できるところにあります.
 
===================================
 
【誤差伝播の法則とデルタ法】
 
 確率変数xの母平均がμ,母分散がσ^2であるとき,一般的な変数変換:y=f(x)に対しては,関数xをμのまわりでテイラー展開し,1次の項までとると
  f(x)=f(μ)+f'(μ)/1!(x-μ)+f"(μ)/2!(x-μ)^2+・・・
    ≒f(μ)+f'(μ)/1!(x-μ)
ですから,
  E[y]≒f(μ)
  V[y]≒{f'(μ)}^2σ^2
が得られます.この近似法は,統計分野ではデルタ法と呼ばれていますが,数値計算の分野では,誤差伝播の法則という別称で呼ばれ,誤差を取り扱ううえで重要な法則になっています.
 
===================================
 
【定理】(シュワルツの不等式)
 
[1]2乗可積分な関数f,gに対して,以下の不等式が成立する.
  (∫f2∫g2)^(1/2)≧∫fg
 
(証明)
  ∫(tf−g)^2dx=t^2∫f2−2t∫fg+∫g2≧0
 したがって,tを変数とする2次式の判別式
  D=(∫fg)^2−(∫f2∫g2)≦0
 等号はg=cf   (c:定数)のとき
 
[2]Δをm次対称行列,行列の固有値をλ1,・・・,λmとする.f,gを2乗可積分な関数とすると,
  |∫(Δf,g)|=|∫(f,Δg)|≦max|λi|(∫f2∫g2)^(1/2)
  |∫(Δf,g)|=|∫(f,Δg)|≦max|Δij|(∫f2∫g2)^(1/2)
 
(証明)
 正の対称行列は適当な座標の回転(ユニタリ変換)により,対角行列(対角要素以外はすべて0の行列)で表現可能である.このとき,
  〈f,g〉:=(Δf,g)=(f,Δg)=ΣΔijfigj
の値は不変であるから,変換後の座標で計算すると
  |(Δf,g)|=|(f,Δg)|≦Σ|λi||f||g|
|λi|≦max|λi|を適用すると,[1]より
  ∫|(Δf,g)|=∫|(f,Δg)|≦max|λi|(∫f2∫g2)^(1/2)
が成り立つ.
 
 また,これにより
  |∫(Δf,g)|=|∫(f,Δg)|≦max|Δij|(∫f2∫g2)^(1/2)
は自明である.
 
===================================