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

10541 단어 R

기사의 목적



정규분포와 분산이 미지일 때의 공액 사전분포인 정규분포를 사용하고, R을 사용하여 베이즈 추정을 실시합니다.
20 남성 신장의 분산을 사후 분포로 추정합니다.
참고 : 베이즈 추론에 의한 기계 학습 입문

목차



1. 모델 설명
2. 추정할 분포
3. 사전 분포
4. 사후 분포
5. 예측 분포

1. 모델 설명





2. 추정할 분포



20대 남성의 신장은 평균이 170이고 표준 편차가 10인 정규 분포를 따릅니다(적당). 그러나 우리는 그것을 모른다.
이 진정한 분포의 분산의 역수 1/100 = 0.01을 사후 분포로 추정합니다.
curve(dnorm(x, 170, 10), 100, 250, xlab="20代男性の身長", ylab="確率密度")



3. 사전 분포



사전분포로서, 정규분포의, 분산이 미지일 때의 공액 사전분포인 감마분포를 지정합니다.
데이터에 맞게 쉽게 a0, b0을 작은 값으로 설정합니다.
a0 <- 1
b0 <- 1
curve(dgamma(x, a0, b0), 0, 0.1, ylim=c(0,150), 
      xlab="20代男性の身長の分散の逆数", ylab="確率密度")



4. 사후 분포



진정한 분포에서 50개의 샘플을 취하여 사후 분포를 추정합니다.
사후 분포는 녹색 곡선입니다. 0.01 부근이 제일 나오기 쉽다고 추정할 수 있습니다.
N <- 50
X <- rnorm(N, 170, 10)
#事後分布
u0 <- 170
a <- N/2 + a0
b <- ((X-u0) %*% (X-u0))/2 + b0
curve(dgamma(x, a, b), 0, 0.1, add=T, col="green")



5. 예측 분포



약간의 분산이 작고 추정되고 있지만, 대략 추정할 수 있습니다.
u.p <- u0
lambda.p <- a/b
n <- 2*a
curve(dnorm(x, 170, 10), 100, 250, ylim=c(0,0.05),xlab="20代男性の身長", ylab="確率密度")
curve(dt(x, df=n)*((1+x^2/n)^((n+1)/2))*sqrt(lambda.p)*((1+lambda.p*(1/n)*(x-u.p)^2)^(-(n+1)/2)), 100, 250,
      add=T, col="blue")

좋은 웹페이지 즐겨찾기