ヒストグラムから確率密度分布を知りたいと思い、調べているとカーネル密度推定なるものがあるようです。色々調べてみたのですが....よく分からん。
Rで実行しながら、学んでいきます。
今回のお題
今回は正規分布から発生させた50個の乱数を使って、正規分布の確率密度を推定したいと思います。
rand <- round(rnorm(50,0,1),1) hist(rand,freq = F,main="",xlab = "",xlim = c(-3,3)) points(rand,rep(0,50),pch = "l") curve(dnorm(x,0,1),add = T,col = "red") legend(x = "topright",lty = 1 , col = "red",legend = "True Density",cex = 0.8)
カーネル密度推定法
早速始めてみましょう!実はRにはdensity関数というカーネル密度推定をする関数が用意されています。これを使うと
> estimated <- density(rand) > hist(rand,freq = F,main="",xlab = "",xlim = c(-3,3)) > lines(estimated,col = "blue") > curve(dnorm(x,0,1),add = T,col = "red") > legend(x = "topright",lty = 1 , + col = c("red","blue"), + legend = c("True Density","Estimated Density"),cex = 0.8) > head(data.frame(x = estimated$x, + y = estimated$y)) x y 1 -3.059651 0.0002600824 2 -3.047480 0.0002887392 3 -3.035309 0.0003195641 4 -3.023138 0.0003533890 5 -3.010968 0.0003910966 6 -2.998797 0.0004315577
はい、できました!個数が50個と少ないので少しいびつですが、推定された値にもしっかりアクセスできてます!
もう少し詳しくまとめてみたかったのですが、私の理解が追いつかず今回はここまでで断念します。m(__)m
また理解が進んだらまとめてみたいと思います。
参考

- 作者: C.M.ビショップ,元田浩,栗田多喜夫,樋口知之,松本裕治,村田昇
- 出版社/メーカー: 丸善出版
- 発売日: 2012/04/05
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 33回
- この商品を含むブログ (20件) を見る