2011年12月15日

朝からプログラムの改修にかかる。どうも誤差の与え方(プロセスノイズ、観測ノイズ)が気に入らなく、もう一度最初考えなおすことにした。こうして日記ばかり書いていても、誰も見ないだろうから、少しはRのコードも書くことにする。ただし、私はとりあえず動けば良いという程度のコードしか書かない。遅い、速いは構わないのですが、間違いがあればどうか指摘して欲しい。それで、私の研究が改善することになるのだから大歓迎。

さて、今回誤差構造を変えようとしたのは、対数正規分布誤差にしようと思ったから。対数正規分布誤差は、例えば次のような式で表せる。(はてなでの数式表記は今後の課題)

exp(ipsiron*sigma-0.5*sigma^2)
ただし、ipsironは正規分布の正規乱数、sigmaはスケールを表すパラメーター。基本的にsigmaの値でばらつき具合を調整する。

では、実際に簡単なRのコードで試してみよう。実際に図にするのが一番わかり易い。

sigma1 <- 0.05; sigma2 <- 0.1; sigma3 <- 0.2
error1 <- exp(rnorm(100000,mean=0,sd=1)*sigma1-0.5*sigma1^2)
error2 <- exp(rnorm(100000,mean=0,sd=1)*sigma2-0.5*sigma2^2)
error3 <- exp(rnorm(100000,mean=0,sd=1)*sigma3-0.5*sigma3^2)
par(mfrow=c(3,1))
hist(error1,breaks=seq(0,2.5,0.01))
hist(error2,breaks=seq(0,2.5,0.01))
hist(error3,breaks=seq(0,2.5,0.01))
以上をコピー&ペーストして実行させると次のような図になるはず。

ポイントはsd=1にすること。こうしないと、誤差の平均が1にならない。あとはsigmaの数字をあれこれ変えてどの程度の誤差分布にするのかを確かめながら、モデルを作れば良い。

こんな感じで、うだうだと改修しながら、来年度の予算についても横目で作業。

昼からは隣のチームが調査から戻ってきたので後片付けを手伝ったり・・・。

午後5時過ぎに撤退。

朝:トースト、昼:弁当、夜:煮しめと納豆

勉強:4年生はチャレンジ(ベネッセ)の12月号となぜか6年生の担任からもらってきている6年生の算数の問題。1年生の子は残念ながら見る時間なし。学童保育の役員会が長い・・・。