【Rでベイズ統計学#3】カテゴリカル分布のベイズ推定

記事の目的

カテゴリカル分布のパラメータpのベイズ推定をRを使用して実装していきます。事前分布にはディリクレ分布を指定して、事後分布を求めていきます。データの作成から実装するので、コピペで再現することが可能です。

 

目次

  1. ライブラリ
  2. 真の分布
  3. 事前分布
  4. データ
  5. 事後分布

 

1 ライブラリ

library(ggplot2)
library(MCMCpack) # rdirichlet
set.seed(1)

 

2 真の分布

x <- c(1, 2, 3)
p <- c(0.1, 0.6, 0.3)
prob <- p

ggplot() + 
  geom_bar(aes(x, prob), stat ="identity") +
  labs(x="x", y="prob", title="カテゴリカル分布")+
  theme_classic(base_family = "HiraKakuPro-W3") +
  theme(text = element_text(size = 24))

 

3 事前分布

alpha_pre <- c(1, 1, 1)
p_samples_pre <- rdirichlet(100, alpha_pre)

plot <- ggplot()+
  geom_point(aes(x=p_samples_pre[,1], y=p_samples_pre[,2]))+
  labs(x="1", y="2", title="ディリクレ分布")+
  theme_classic(base_family = "HiraKakuPro-W3") +
  theme(text = element_text(size = 24))+
  lims(x=0:1, y=0:1)
plot

 

4 データ

data <- which(rmultinom(300, 1, c(0.1, 0.6, 0.3))==1, arr.ind = TRUE)[,1]
N <- length(data)

 

5 事後分布

alpha_pos <- as.vector(table(data)) + alpha_pre
p_samples_pos <- rdirichlet(100, alpha_pos)

plot + geom_point(aes(x=p_samples_pos[,1], y=p_samples_pos[,2]), col="blue")