Gesloten. Deze vraag is off-topic . Het accepteert momenteel geen antwoorden.

Reacties

Antwoord

Probleem

Stel: $ Y \ sim \ text {N} (\ text {mean} = \ mu, \ text {Var} = \ frac {1} {\ tau}) $.

Verkrijg op basis van een steekproef de posterieure verdelingen van $ \ mu $ en $ \ tau $ met de Gibbs-sampler.

Notatie

$ \ mu $ = populatiegemiddelde

$ \ tau $ = populatieprecisie (1 / variantie )

$ n $ = steekproefomvang

$ \ bar {y} $ = steekproefgemiddelde

$ s ^ 2 $ = steekproefvariantie

Gibbs-sampler

[ Casella, G. & George, EI (1992). Uitleg over de Gibbs Sampler. The American Statistician, 46, 167–174. ]

Bij iteratie $ i $ ($ i = 1, \ dots, N $ ):

  • voorbeeld $ \ mu ^ {(i)} $ van $ f (\ mu \, | \, \ tau ^ {(i – 1)}, \ text {data} ) $ (zie hieronder)
  • voorbeeld $ \ tau ^ {(i)} $ uit $ f (\ tau \, | \, \ mu ^ {(i)}, \ text {data}) $ (zie hieronder)

De theorie zorgt ervoor dat na een voldoende groot aantal iteraties $ T $, de set $ \ {( \ mu ^ {(𝑖)}, \ tau ^ {(𝑖)}): i = T + 1, \ dots, 𝑁 \} $ kan worden gezien als een willekeurige steekproef uit de gezamenlijke posterieure verdeling.

Priors

$ f (\ mu, \ tau) = f (\ mu) \ keer f (\ tau) $, met

$ f (\ mu) \ propto 1 $

$ f (\ tau) \ propto \ tau ^ {- 1} $

Voorwaardelijk posterieur voor het gemiddelde, gegeven de precisie $$ (\ mu \, | \, \ tau, \ text {data}) \ sim \ text {N} \ Big (\ bar {y}, \ frac {1} {n \ tau} \ Big) $$

Voorwaardelijk posterieur voor de precisie , gezien het gemiddelde $$ (\ tau \, | \, \ mu, \ text {data}) \ sim \ text {Gam} \ Big (\ frac {n} {2}, \ frac {2} {(n-1) s ^ 2 + n (\ mu – \ bar {y}) ^ 2} \ Big) $$

(snelle) R-implementatie

# 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) 

voer de beschrijving van de afbeelding hier in

Reacties

  • +1 Dit is de manier om een ogenschijnlijk code-specifieke vraag te beantwoorden: geef de theoretische uitleg (waardoor het hier on-topic is) en geef dan (om aan het OP te voldoen) ook de code. Leuk je weer te zien!
  • Bedankt voor de uitleg. Is er een manier waarop ik kan leren coderen voor alle statistische algoritmen. Ik ben een student en wil wat codering voor R leren, zodat ik mijn probleem kan oplossen.
  • Kun je me helpen deze vraag te zien stats.stackexchange .com / vragen / 498646 / … ? Dank je.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *