【統計計算の基礎】平均値(Mean)、中央値(Median)、最頻値(Mode)を平等視する「統計的決定理論」?
最近「統計的決定理論(Statistical Decision Theory)」なる概念を知りました。現段階では本当に右も左も全く解ってない状態。しかしながら、ゲームはもう始まってしまったのです。もはや後戻りなんて、決して出来ません…
統計的決定とは、ある確率分布にしたがう確率変数θを「(とりあえずの仮決めにせよ、曲がりなりにも)統計的に妥当な一点α」と想定する事をいう。
- 例えば確率変数θの確率分布を示す確率密度関数f(θ)について、それが平均 μ 、分散 σ^2 の正規分布と想定可能であり、かつθ の推定値として f(θ) の平均値=μが有力視される状況下では「(とりあえずの仮決めにせよ、曲がりなりにも)α = μ(と想定する判断)」が統計的決定 を代表する事になる。
もちろん確率密度関数f(θ)を正規分布ではない、すなわちパラメーターの異なる他の確率密度関数のどれかと想定した方が「妥当」な状況も存在する。
(統計言語Rで使える)様々な確率分布のパラメーター一覧
それでも有望なのが次の様な分布だったら、誰も無理して自発的に「a=平均」 なる想定まで棄却する事はあるまい。しかしながら、有望な分布が以下の様では、かかる言い訳すら通用しないのである。何しろ平均値がちょうど二つの山の間に入ってしまい、完全にどっちつかずの状態。むしろ右の大きな山の頭のあたり、すなわち最頻値に有力候補を乗り換える方が「妥当」といえる。
こうして状況展開の背後で跳梁する「(それまで準拠してきた確率変数自体の差し替えともなれば、不可逆的に様々な決定的変化が引き起こされる)妥当性そのものの検討尺度」とは一体何なのか。むしろそれを定量的に捉え、統計的決定過程の最適化を計る方が優先課題なのでは。まさにその発想こそが統計的決定理論の出発点趣旨なのである。
損失関数(loss function)
統計的決定理論が研究する「妥当性そのものの検討尺度」の一つ。まさしく確率変数θと統計的決定 α をパラメーターとし、両者の差に応じて「損失」が計算される。差が大きいほど「損失」が増大するので、統計的決定はその最小化を目指す。より具体的には、例えば以下のセットなどを想定する。
- 平方損失L(θ,α)=(θ−α)^2…平均値(Mean)がその期待損失を最小化する。つまり平方損失における最良の統計的決定α(最小化の対象)は 確率分布 f(θ) の平均値。
- 絶対損失L(θ,α)=|θ−α|…中央値(Median)がその期待損失を最小化する。つまり絶対損失における 統計的決定 α は確率分布 f(θ) の中央値。
- 0-1型単純損失L(θ,α)=if{|θ−α|≤Δ},0,1(otherwise)…最頻値(Mode)がその期待損失を最小化する。つまり絶対損失における 統計的決定 α は確率分布 f(θ) の最頻値。
統計的決定理論は、この様に損失関数の期待値(以下、期待損失)が小さいほど「妥当な」統計的決定と考える。つまり最適な統計的決定とは「期待損失を最小化するような α である」という事になる。
冒頭で述べた様にまだまだ理論的詳細についてはサッパリですが、どうやら統計学史上においてガウス(Carolus Fridericus Gauss、1777年〜1855年)が最小二乗法(least squares method)を発表して以降続いてきた上述の平方損失系(平均系)尺度、すなわち正規分布に紐付けられた標本分散(Sample Variance)/不偏分散(Unbiased Variance)/不偏標本分散(Unbiased Sample Variance)および標準偏差(SD=standard deviation)などの偏重から脱却しようとしての試みの一環である事だけは間違いない様ですね。
ここでは、まずこの問題における最初の取っ掛かりとして、以下のサイトの検証例の再現を試みたいと思います。
簡単な数値シミュレーションをして、標準偏差と平均偏差が最も小さくなる時の代表値がそれぞれ平均値と中央値になることを確かめてみましょう。
データの生成
今回の検証ではR言語を使い確率分布からデータをランダムに発生させます。ここで正規分布を採用すると、平均値と中央値のずれがほとんどないと予想できるので、あえて違う確率分布(対数正規分布)を用います。
統計言語Rによる検証
# データの生成
simData <- rlnorm(1000)
plot(simData)
#分布が正規分布と懸け離れている事の確認
qqnorm(simData)
qqline(simData, lwd=2, col="red" )
最低値(Max)と最高値(Min)の計算
生成したデータの最低値と最高値を計算します。最初に最低値を分布の代表値と仮定し、標準偏差と平均偏差をそれぞれ求めます。
次に最低値よりも少しだけ大きな値を代表値とし、データの最大値を代表値とする場合まで次々に繰り返します。
そして最後に、すべての計算結果からいつ標準偏差と平均偏差が最小になるかを調べます。
*手元のPCで計算してみた時にはminDataは0.04240865、maxDataは65.70159、numIterationは656592となりました。
統計言語Rによる検証(変数準備)
#最小値と最大値の取得
minData <- min(simData)
minData
[1] 0.05256874
maxData <- max(simData)
maxData
[1] 24.31248#繰り返しの回数を求める
numIteration<- round*1
resAD <- sum(abs(simData - repData))/length(simData)arrSD <- c(arrSD, resSD)
arrAD <- c(arrAD, resAD)
}
データ後処理
標準偏差と平均偏差を保存したデータの中かからいつ値が最小になったのかを求めます。
統計言語Rによる検証(シミュレーション本体)
# SDが最小となるような代表値
minData + 0.0001 * which.min(arrSD)
[1] 1.708869
# ADが最小となるような代表値
minData + 0.0001 * which.min(arrAD)
[1] 0.9646687
SD/ADが最小となるような代表値
計算の結果、SDが最小となるような代表値は1.708909、ADが最小となるような代表値は0.9827087でした。では、最後にこのデータの平均と中央値を計算してみます。
統計言語Rによる検証
mean(simData)
[1] 1.708847
median(simData)
[1] 0.9662305
最終結論
計算結果は、平均値が1.708862、中央値が0.9834444でした。正確な一致ではありませんが、おおよそ標準偏差が最小となるような代表値は、データの平均値であり、平均偏差が最小となるような代表値はデータの中央値であることがわかります。
とりあえず今回の収穫は以下が追証出来た事。
- おおよそ標準偏差が最小となるような代表値はデータの平均値である。
- おおよそ平均偏差が最小となるような代表値はデータの中央値である。
ところで私実は、およそ半世紀前の大学生時代、以下の教科書で初めて統計学なるものに触れた人間なんですが…
*もちろん当時の教科書は「統計言語R対応」なんてしてなかった。
今の人が当時について「まだ恐竜が街を闊歩してたんでしょ?」とか「まだ天動説の方が地動説より広まってたんですよね?」とか指摘されても反論する気が起こらないくらいには完膚なきまでに打ちのめされてしまいましたね。