이전 및 가능성으로부터 사후 밀도 추정을 어떻게 계산할 수 있습니까?


9

Bayes의 정리를 사용하여 사후를 계산하는 방법을 이해하려고하지만 계산 방법에 갇히고 있습니다. 예를 들어 다음과 같은 경우 이전과 가능성의 곱을 취한 다음 계산하는 방법이 명확하지 않습니다. 후부:

이 예에서는 의 사후 확률 계산에 관심이 있으며 이전의 표준 법선을 사용 하지만 알고 싶습니다. MCMC 체인으로 표시되는 에 대한 이전의 후부 계산 방법을 기준으로 1000 샘플을 시작점으로 사용합니다.μμ p(μ)N(μ=0,σ=1)μ

  • 이전의 샘플 1000.

    set.seed(0)
    prior.mu      <- 0
    prior.sigma   <- 1
    prior.samples <- sort(rnorm(1000, prior.mu, prior.sigma))
    
  • 몇 가지 관찰 :

    observations <- c(0.4, 0.5, 0.8, 0.1)
    
  • 그리고 가능성을 계산합니다. 예 : :p(y|μ,σ)

    likelihood <- prod(dnorm(observations, mean(prior.samplse), sd(prior.samples)))
    

내가 이해하지 못하는 것은 :

  1. 이전과 가능성을 언제 / 어떻게 곱할 것인가?
  2. 후방 밀도를 언제 어떻게 정상화합니까?

참고 : 분석 솔루션이 없어도 일반화 가능한 문제가 될 수있는 일반 계산 솔루션에 관심이 있습니다.


1
귀하의 예에서 다른 분포가 무엇인지 명확하지 않습니다. 이전 / 조건부 배포가 무엇인지 명확히하십시오. 여러 용어가 섞여있을 수 있기 때문입니다.
Nick Sabbe

@ 닉 당신이 맞습니다. 의견 감사합니다. 나는 명확히하려고 노력했다.
Abe

답변:


8

여러 가지가 섞여 있습니다. 이론은 이전 분포의 표본이 아니라 이전 분포와 가능성을 곱하는 것에 대해 이야기합니다. 또한 당신이 이전에 무엇을 가지고 있는지 분명하지 않습니다. 이것이 무엇인가에 대한 사전입니까? 또는 다른 것?

그런 다음 가능성이 반전 된 결과가 있습니다. 관측치는 x와 평균 및 표준 편차로 알려진 고정 상수를 가진 x 여야합니다. 그렇더라도 실제로는 각각의 관측치가 x이고 동일한 평균 및 표준 편차로 dnorm에 대한 4 번의 호출의 결과 일 것입니다.

정말로 분명하지 않은 것은 당신이하려는 일입니다. 귀하의 질문은 무엇인가? 어떤 매개 변수에 관심이 있습니까? 해당 매개 변수에 대해 어떤 이전의 것들이 있습니까? 다른 매개 변수가 있습니까? 그에 대한 사전 또는 고정 가치가 있습니까?

현재의 방식으로 일을 시도하면 질문이 무엇인지 정확히 파악하고 거기서부터 일할 때까지 더 혼란 스러울 것입니다.

아래는 원래 질문을 편집 한 후 추가되었습니다.

여전히 일부 조각이 누락되어 있으며 모든 것을 이해하지 못할 수도 있지만 현재 위치에서 시작할 수 있습니다.

나는 당신이 몇 가지 개념을 혼란스럽게 생각합니다. 데이터와 매개 변수 사이의 관계를 표시 할 가능성이 있으며, 평균과 표준 편차 (또는 분산 또는 정밀도)의 두 매개 변수가있는 법선을 사용하고 있습니다. 그런 다음 모수에 사전 분포가 있으며 평균 0 및 sd 1로 정규 사전을 지정했지만 해당 평균 및 표준 편차는 우도의 평균 및 표준 편차와 완전히 다릅니다. 완료하려면 가능성 SD를 알고 있거나 가능성 SD에 사전을 배치해야합니다. 단순성 (실제로는 적음) 저는 SD가 일 것입니다. 1).12

따라서 우리는 당신이 한 일과 비슷하게 시작하여 이전에서 생성 할 수 있습니다.

> obs <- c(0.4, 0.5, 0.8, 0.1)
> pri <- rnorm(10000, 0, 1)

이제 우리는 가능성을 계산해야합니다. 이것은 평균의 이전 추첨, 데이터와의 가능성 및 알려진 SD 값을 기반으로합니다. dnorm 함수는 단일 점의 가능성을 제공하지만 각 관측 값에 대한 값을 곱해야합니다. 여기에는 다음과 같은 기능이 있습니다.

> likfun <- function(theta) {
+ sapply( theta, function(t) prod( dnorm(obs, t, 0.5) ) )
+ }

이제 평균에 대한 이전의 각 추첨에 대한 가능성을 계산할 수 있습니다.

> tmp <- likfun(pri)

이제 후자를 얻기 위해서는 새로운 유형의 추첨을해야합니다. 거부 표본 추출과 유사한 한 가지 접근 방식은 각 이전 추첨의 가능성에 비례하여 이전 평균 추첨에서 표본을 추출하는 것입니다 (이는 곱셈 단계에 가장 가깝습니다 질문) :

> post <- sample( pri, 100000, replace=TRUE, prob=tmp )

이제 사후 추첨 결과를 볼 수 있습니다.

> mean(post)
[1] 0.4205842
> sd(post)
[1] 0.2421079
> 
> hist(post)
> abline(v=mean(post), col='green')

위의 결과를 이론의 닫힌 양식 값과 비교하십시오.

> (1/1^2*mean(pri) + length(obs)/0.5^2 * mean(obs))/( 1/1^2 + length(obs)/0.5^2 )
[1] 0.4233263
> sqrt(1/(1+4*4))
[1] 0.2425356

나쁜 근사치는 아니지만 내장 된 McMC 도구를 사용하여 후부에서 그리는 것이 더 좋습니다. 이러한 도구의 대부분은 위와 같은 배치가 아닌 한 번에 한 점씩 샘플링합니다.

더 현실적으로 우리는 가능성의 SD를 알지 못하고 그에 대한 사전도 필요합니다 (종종 분산의 사전은 또는 감마입니다). 그러나 계산하기가 더 복잡합니다 (McMC는 편리합니다. )와 비교할 닫힌 양식이 없습니다.χ2

일반적인 솔루션은 WinBugs 또는 OpenBugs (R의 BRugs는 R과 Bugs간에 인터페이스를 제공함)와 같은 McMC 계산 또는 R의 LearnBayes와 같은 패키지를 수행하는 기존 도구를 사용하는 것입니다.


좀 더 명확하게 설명해 주셔서 감사합니다. 여전히 명확하지 않지만 답변을 업데이트했습니다. 내 질문은 ' 이전 및 데이터를 감안할 때 의 가장 좋은 추정치는 무엇 입니까?'입니다. 다른 매개 변수는 없습니다. μ
Abe

이 문제를 해결해 주셔서 감사합니다. 나는 힘든 시간을 보내고 있지만 이것이 도움이됩니다.
Abe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.