정규 분포 : 정규-감마 분포 (베이즈 추정)
16880 단어 R
기사의 목적
정규 분포와 평균과 분산이 알려지지 않았을 때의 공액 사전 분포인 정규 분포를 사용하고, R을 사용하여 베이즈 추정을 실시합니다.
20대 남성 신장의 평균과 분산을 사후 분포로 추정한다.
참고 : 베이즈 추론에 의한 기계 학습 입문
목차
1. 모델 설명
2. 추정할 분포
3. 사전 분포
4. 사후 분포
5. 예측 분포
1. 모델 설명
2. 추정할 분포
20대 남성의 신장은 평균이 170이고 표준차가 10인 정규 분포를 따릅니다(적당). 그러나 우리는 그것을 모른다.
이 진정한 분포의 평균 170과 분산의 역수 1/100 = 0.01을 사후 분포로 추정합니다.
curve(dnorm(x, 170, 10), 100, 250, xlab="20代男性の身長", ylab="確率密度")
3. 사전 분포
평균의 사전 분포로서 정규 분포, 분산의 역수의 사전 분포로서 감마 분포를 가정합니다.
둘 다 데이터에 맞게 쉽게 매개 변수를 설정합니다.
par(mfrow=c(1,2))
lambda0 <- 1
beta0 <- 1/100^2
m0 <- 100
lambda.mu0 <- 1/50^2
curve(dnorm(x, m0, 1/sqrt(lambda.mu0)), 0, 250,
xlab="20代男性の平均身長", ylab="確率密度", ylim=c(0,0.3))
a0 <- 1
b0 <- 1
curve(dgamma(x, a0, b0), 0, 0.1, ylim=c(0,230),
xlab="20代男性の身長の分散の逆数", ylab="確率密度")
4. 사후 분포
진정한 분포로 100개의 샘플을 취하여 사후 분포를 추정합니다.
사후 분포는 녹색 곡선입니다. 평균은 170, 분산은 1/100=0.01을 잘 추정할 수 있습니다.
#データ
N <- 50
X <- rnorm(N, 170, 10)
#事後分布
beta <- N + beta0
m <- (sum(X)+beta0*m0)/beta
curve(dnorm(x, m0, 1/sqrt(lambda.mu0)), 0, 250,
xlab="20代男性の平均身長", ylab="確率密度", ylim=c(0,0.3))
curve(dnorm(x, m, 1/sqrt(lambda0*beta)), 100, 250, add=T, col="green")
a <- N/2 + a0
b <- (sum(X^2)+beta0*m0^2-beta*m^2)/2+b0
curve(dgamma(x, a0, b0), 0, 0.1, ylim=c(0,230),
xlab="20代男性の身長の分散の逆数", ylab="確率密度")
curve(dgamma(x, a, b), 0, 0.1, add=T, col="green")
5. 예측 분포
예측 분포도 잘 추정된다는 것을 알 수 있습니다.
u.p <- m
lambda.p <- beta*a/((1+beta)*b)
n <- 2*a
par(mfrow=(c(1,1)))
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")
Reference
이 문제에 관하여(정규 분포 : 정규-감마 분포 (베이즈 추정)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Tatsuki-Oike/items/f9027cb40204dfe6e97d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
1. 모델 설명
2. 추정할 분포
3. 사전 분포
4. 사후 분포
5. 예측 분포
1. 모델 설명
2. 추정할 분포
20대 남성의 신장은 평균이 170이고 표준차가 10인 정규 분포를 따릅니다(적당). 그러나 우리는 그것을 모른다.
이 진정한 분포의 평균 170과 분산의 역수 1/100 = 0.01을 사후 분포로 추정합니다.
curve(dnorm(x, 170, 10), 100, 250, xlab="20代男性の身長", ylab="確率密度")
3. 사전 분포
평균의 사전 분포로서 정규 분포, 분산의 역수의 사전 분포로서 감마 분포를 가정합니다.
둘 다 데이터에 맞게 쉽게 매개 변수를 설정합니다.
par(mfrow=c(1,2))
lambda0 <- 1
beta0 <- 1/100^2
m0 <- 100
lambda.mu0 <- 1/50^2
curve(dnorm(x, m0, 1/sqrt(lambda.mu0)), 0, 250,
xlab="20代男性の平均身長", ylab="確率密度", ylim=c(0,0.3))
a0 <- 1
b0 <- 1
curve(dgamma(x, a0, b0), 0, 0.1, ylim=c(0,230),
xlab="20代男性の身長の分散の逆数", ylab="確率密度")
4. 사후 분포
진정한 분포로 100개의 샘플을 취하여 사후 분포를 추정합니다.
사후 분포는 녹색 곡선입니다. 평균은 170, 분산은 1/100=0.01을 잘 추정할 수 있습니다.
#データ
N <- 50
X <- rnorm(N, 170, 10)
#事後分布
beta <- N + beta0
m <- (sum(X)+beta0*m0)/beta
curve(dnorm(x, m0, 1/sqrt(lambda.mu0)), 0, 250,
xlab="20代男性の平均身長", ylab="確率密度", ylim=c(0,0.3))
curve(dnorm(x, m, 1/sqrt(lambda0*beta)), 100, 250, add=T, col="green")
a <- N/2 + a0
b <- (sum(X^2)+beta0*m0^2-beta*m^2)/2+b0
curve(dgamma(x, a0, b0), 0, 0.1, ylim=c(0,230),
xlab="20代男性の身長の分散の逆数", ylab="確率密度")
curve(dgamma(x, a, b), 0, 0.1, add=T, col="green")
5. 예측 분포
예측 분포도 잘 추정된다는 것을 알 수 있습니다.
u.p <- m
lambda.p <- beta*a/((1+beta)*b)
n <- 2*a
par(mfrow=(c(1,1)))
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")
Reference
이 문제에 관하여(정규 분포 : 정규-감마 분포 (베이즈 추정)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Tatsuki-Oike/items/f9027cb40204dfe6e97d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
20대 남성의 신장은 평균이 170이고 표준차가 10인 정규 분포를 따릅니다(적당). 그러나 우리는 그것을 모른다.
이 진정한 분포의 평균 170과 분산의 역수 1/100 = 0.01을 사후 분포로 추정합니다.
curve(dnorm(x, 170, 10), 100, 250, xlab="20代男性の身長", ylab="確率密度")
3. 사전 분포
평균의 사전 분포로서 정규 분포, 분산의 역수의 사전 분포로서 감마 분포를 가정합니다.
둘 다 데이터에 맞게 쉽게 매개 변수를 설정합니다.
par(mfrow=c(1,2))
lambda0 <- 1
beta0 <- 1/100^2
m0 <- 100
lambda.mu0 <- 1/50^2
curve(dnorm(x, m0, 1/sqrt(lambda.mu0)), 0, 250,
xlab="20代男性の平均身長", ylab="確率密度", ylim=c(0,0.3))
a0 <- 1
b0 <- 1
curve(dgamma(x, a0, b0), 0, 0.1, ylim=c(0,230),
xlab="20代男性の身長の分散の逆数", ylab="確率密度")
4. 사후 분포
진정한 분포로 100개의 샘플을 취하여 사후 분포를 추정합니다.
사후 분포는 녹색 곡선입니다. 평균은 170, 분산은 1/100=0.01을 잘 추정할 수 있습니다.
#データ
N <- 50
X <- rnorm(N, 170, 10)
#事後分布
beta <- N + beta0
m <- (sum(X)+beta0*m0)/beta
curve(dnorm(x, m0, 1/sqrt(lambda.mu0)), 0, 250,
xlab="20代男性の平均身長", ylab="確率密度", ylim=c(0,0.3))
curve(dnorm(x, m, 1/sqrt(lambda0*beta)), 100, 250, add=T, col="green")
a <- N/2 + a0
b <- (sum(X^2)+beta0*m0^2-beta*m^2)/2+b0
curve(dgamma(x, a0, b0), 0, 0.1, ylim=c(0,230),
xlab="20代男性の身長の分散の逆数", ylab="確率密度")
curve(dgamma(x, a, b), 0, 0.1, add=T, col="green")
5. 예측 분포
예측 분포도 잘 추정된다는 것을 알 수 있습니다.
u.p <- m
lambda.p <- beta*a/((1+beta)*b)
n <- 2*a
par(mfrow=(c(1,1)))
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")
Reference
이 문제에 관하여(정규 분포 : 정규-감마 분포 (베이즈 추정)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Tatsuki-Oike/items/f9027cb40204dfe6e97d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
par(mfrow=c(1,2))
lambda0 <- 1
beta0 <- 1/100^2
m0 <- 100
lambda.mu0 <- 1/50^2
curve(dnorm(x, m0, 1/sqrt(lambda.mu0)), 0, 250,
xlab="20代男性の平均身長", ylab="確率密度", ylim=c(0,0.3))
a0 <- 1
b0 <- 1
curve(dgamma(x, a0, b0), 0, 0.1, ylim=c(0,230),
xlab="20代男性の身長の分散の逆数", ylab="確率密度")
진정한 분포로 100개의 샘플을 취하여 사후 분포를 추정합니다.
사후 분포는 녹색 곡선입니다. 평균은 170, 분산은 1/100=0.01을 잘 추정할 수 있습니다.
#データ
N <- 50
X <- rnorm(N, 170, 10)
#事後分布
beta <- N + beta0
m <- (sum(X)+beta0*m0)/beta
curve(dnorm(x, m0, 1/sqrt(lambda.mu0)), 0, 250,
xlab="20代男性の平均身長", ylab="確率密度", ylim=c(0,0.3))
curve(dnorm(x, m, 1/sqrt(lambda0*beta)), 100, 250, add=T, col="green")
a <- N/2 + a0
b <- (sum(X^2)+beta0*m0^2-beta*m^2)/2+b0
curve(dgamma(x, a0, b0), 0, 0.1, ylim=c(0,230),
xlab="20代男性の身長の分散の逆数", ylab="確率密度")
curve(dgamma(x, a, b), 0, 0.1, add=T, col="green")
5. 예측 분포
예측 분포도 잘 추정된다는 것을 알 수 있습니다.
u.p <- m
lambda.p <- beta*a/((1+beta)*b)
n <- 2*a
par(mfrow=(c(1,1)))
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")
Reference
이 문제에 관하여(정규 분포 : 정규-감마 분포 (베이즈 추정)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Tatsuki-Oike/items/f9027cb40204dfe6e97d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
u.p <- m
lambda.p <- beta*a/((1+beta)*b)
n <- 2*a
par(mfrow=(c(1,1)))
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")
Reference
이 문제에 관하여(정규 분포 : 정규-감마 분포 (베이즈 추정)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Tatsuki-Oike/items/f9027cb40204dfe6e97d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)