Cauchy分布のパラメタ推定
Cauchy分布の乱数を100個生成し,その中心の値をどうすれば正確に求められるかを試してみる。
sim = function() {
r = rcauchy(100)
m1 = mean(r) # 平均
m2 = median(r) # 中央値
f = function(par) {
-sum(dcauchy(r, par[1], par[2], log=TRUE))
}
m3 = optim(c(0,1), f)$par[1] # 最尤推定値
c(m1, m2, m3)
}
r = replicate(100000, sim())
それぞれの誤差を求めてみる:
sqrt(mean(r[1,]^2))
[1] 451.953
sqrt(mean(r[2,]^2))
[1] 0.158399
sqrt(mean(r[3,]^2))
[1] 0.1432506
max(abs(r[1,]))
[1] 131453.7
max(abs(r[2,]))
[1] 0.7711901
max(abs(r[3,]))
[1] 0.677196
最後の方法が一番正確だが,中央値とは僅差である。