Kommentarer
- Jeg skrev en bog kaldet Introduktion til Monte Carlo-metoder med R , som du kunne kontrollere til sådanne eksempler.
Svar
Problem
Antag $ Y \ sim \ text {N} (\ text {middel} = \ mu, \ tekst {Var} = \ frac {1} {\ tau}) $.
Baseret på en prøve, få de bageste fordelinger af $ \ mu $ og $ \ tau $ ved hjælp af Gibbs-sampleren.
Notation
$ \ mu $ = population betyder
$ \ tau $ = befolkningspræcision (1 / varians )
$ n $ = prøvestørrelse
$ \ bar {y} $ = prøve gennemsnit
$ s ^ 2 $ = prøvevarians
Gibbs sampler
[ Casella, G. & George, EI (1992). Forklaring af Gibbs-sampleren. Den amerikanske statistiker, 46, 167–174. ]
Ved iteration $ i $ ($ i = 1, \ dots, N $ ):
- prøve $ \ mu ^ {(i)} $ fra $ f (\ mu \, | \, \ tau ^ {(i – 1)}, \ text {data} ) $ (se nedenfor)
- prøve $ \ tau ^ {(i)} $ fra $ f (\ tau \, | \, \ mu ^ {(i)}, \ text {data}) $ (se nedenfor)
Teorien sikrer, at sættet $ \ {efter et tilstrækkeligt stort antal iterationer, $ T $, \ mu ^ {(𝑖)}, \ tau ^ {(𝑖)}): i = T + 1, \ prikker, 𝑁 \} $ kan ses som en tilfældig prøve fra den fælles bageste fordeling.
Priors
$ f (\ mu, \ tau) = f (\ mu) \ gange f (\ tau) $, med
$ f (\ mu) \ propto 1 $
$ f (\ tau) \ propto \ tau ^ {- 1} $
Betinget posterior for middelværdien, givet præcisionen $$ (\ mu \, | \, \ tau, \ text {data}) \ sim \ text {N} \ Big (\ bar {y}, \ frac {1} {n \ tau} \ Big) $$
Betinget bageste for præcisionen , givet gennemsnittet $$ (\ tau \, | \, \ mu, \ text {data}) \ sim \ text {Gam} \ Big (\ frac {n} {2}, \ frac {2} {(n-1) s ^ 2 + n (\ mu – \ bar {y}) ^ 2} \ Big) $$
(hurtig) R-implementering
# summary statistics of sample n <- 30 ybar <- 15 s2 <- 3 # sample from the joint posterior (mu, tau | data) mu <- rep(NA, 11000) tau <- rep(NA, 11000) T <- 1000 # burnin tau[1] <- 1 # initialisation for(i in 2:11000) { mu[i] <- rnorm(n = 1, mean = ybar, sd = sqrt(1 / (n * tau[i - 1]))) tau[i] <- rgamma(n = 1, shape = n / 2, scale = 2 / ((n - 1) * s2 + n * (mu[i] - ybar)^2)) } mu <- mu[-(1:T)] # remove burnin tau <- tau[-(1:T)] # remove burnin
$$ $$
hist(mu) hist(tau)
Kommentarer
- +1 Dette er måden at besvare et tilsyneladende kodespecifikt spørgsmål: Giv den teoretiske forklaring (som gør det til emne her) og derefter (for at tilfredsstille OP) give også koden. Rart at se dig tilbage!
- Tak for forklaringen. Er der en måde, jeg kan lære at kode for al statistisk algoritme. Jeg er studerende, og jeg vil lære noget kodning til R, så jeg kan løse mit problem.
- Kan du hjælpe mig med at se dette spørgsmål stats.stackexchange .com / spørgsmål / 498646 / … ? Tak.