포아송 분포 : 감마 분포 (베이즈 추정)

11976 단어 R

기사의 목적



포아송 분포와 공액 사전 분포의 감마 분포를 사용하고 R을 사용하여 베이지안 추정을 수행합니다.
특정 상품 A의 평균 구매 수를 사후 분포로 추정합니다.
참고 : 베이즈 추론에 의한 기계 학습 입문

목차



0. 모델 설명
1. 라이브러리
2. 추정할 분포
3. 사전 분포
4. 사후 분포
5. 예측 분포

0. 모델 설명





1 라이브러리


library(dplyr)
library(ggplot2)
set.seed(100)

2. 추정할 분포



상품 A의 구매되는 개수는 평균 15인 포아송 분포를 따릅니다. 그러나 우리는 그것을 모른다.
이 진정한 분포 평균의 15를 사후 분포로 추정합니다.
NULL %>% ggplot(aes(x=1:40)) + geom_bar(aes(y=dpois(1:40, 15)), stat="identity") +
  labs(x="商品Aの購買個数", y="確率密度", title="推定する分布")



3. 사전 분포



사전 분포로 포아송 분포의 공액 사전 분포인 감마 분포를 지정합니다.
데이터에 적합하기 쉽도록 a0, b0 은 작은 값을 초기값으로 설정합니다.
a0 <- 1
b0 <- 1
curve(dgamma(x, a0, b0), 0, 50 , xlab = "商品Aの平均購買個数(lambda)", ylab="確率密度", ylim=c(0,0.8))



4. 사후 분포



진정한 분포에서 50개의 샘플을 취하여 사후 분포를 추정합니다.
사후 분포는 녹색 곡선입니다. 50부근이 제일 나오기 쉽다고 추정할 수 있습니다.
#データ
N <- 50
X <- rpois(N, 15)
#事後分布
a <- sum(X)+a0
b <- N+b0
curve(dgamma(x, a, b), 0, 50 , 
      xlab = "商品Aの平均購買個数(lambda)", ylab="確率密度", col="green", add=T)



5. 예측 분포



예측 분포가 진정한 분포를 성공적으로 추정할 수 있음을 알 수 있습니다.
Data <- data.frame(x=rep(1:40,2),
                   compare=rep(c("推定する分布", "予測分布"), each=40),
                   y = append(dpois(1:40, 15), dbinom(1:40, a, 1/(b+1))) )
Data %>% ggplot(aes(x=x, y=y, fill=compare)) + 
  geom_bar(stat="identity", alpha=0.7, position="identity") +
  labs(x="商品Aの購買個数", y="確率密度", title="推定する分布と予測分布の比較") +
  scale_fill_manual(values = c("black", "blue"))

좋은 웹페이지 즐겨찾기