gnuplotによる関数近似とガウス分布での例

gnuplotは,単体で最小自乗法による関数近似ができます.関数は計算機上で表現可能な任意関数ですので,テーラー展開,フーリエ級数展開,ガウス関数など,色々扱えます.
今回は例として,ガウス分布の関数近似が妥当であるかの検証をしてみます.

ガウス分布に従うデータとして,微小時間当たりの放射線量,試験の採点結果が有名です.
インターネットでいいデータがないかと探してみたら,次のものを見つけました.

平成23年新司法試験短答式試験結果 平成23年短答式試験結果[PDF:148KB]
平成23年新司法試験短答式試験得点別人員調(各科目最低ライン40%点以上)
http://www.moj.go.jp/jinji/shihoushiken/jinji08_00048.html

データを加工して,gnuplotで扱える形式にしました(問題があれば消しますので言ってください).上限,下限の点数については悩みましたが,140〜314点で考えることとしました.
結果テキスト

これをplotすると

set xrange [140:314]
set yrange [0:120]
plot 'sihou_s' pt 2 lt -1 lw 2


こうなります.どう見てもガウス分布です.

関数近似をする前に,μとσの初期値を与えてやらないと計算が上手く収束しません.
μは,理想的には最大値を与えているxとなるはずですので,μ=230を初期値とします.σは見当がつきにくいので,大雑把に目分量で20としておきます.
また,表中の全人数Nは,7797人です.

sigma=20
mu=230
f(x)=7797/(sqrt(2*pi)*sigma)*exp((-(x-mu)**2)/(2*sigma**2))
fit [140:314]f(x) "sihou_s" using 1:2 via sigma,mu

Final set of parameters Asymptotic Standard Error
======================= ==========================

sigma = 30.4499 +/- 0.3865 (1.269%)
mu = 229.571 +/- 0.4721 (0.2057%)

早速代入してみましょう

set xrange [140:314]
set yrange [0:120]
sigma=30.4499
mu=229.571
f(x)=7797/(sqrt(2*pi)*sigma)*exp((-(x-mu)**2)/(2*sigma**2))
plot 'sihou_s' pt 2 lt -1 lw 2, f(x) lt 1 lw 2 w l


概ね合っているように見えます.

ここで,じゃあ本当のμとσはいくらだったのか?という疑問が残りますが,表計算ソフトで一瞬で求まります.

μ=226.96
σ=29.489

このデータもさっきのグラフにまとめて載せてみましょう.

赤がgnuplotのfitにより求めたμとσによるガウス分布*N,青が表計算ソフトで求めたμとσによるガウス分布*N,黒が実測値とエラーバーです.
エラーバーで汚くなっておりますが,エラーバーの大きさの割に,赤と青が近いことが分かります.
ただし,実際の値はgnuplotが吐き出したAsymptotic Standard Errorの範囲内に収まっていないです.
gnuplotによる関数近似は手軽で有用かもしれないが,過信はよろしくないということが分かりました.