Próbuję dopasować model hierarchiczny za pomocą jags i pakietu rjags. Moja zmienna wyniku to y, która jest sekwencją prób bernoulli. Mam 38 ludzi, którzy występują w dwóch kategoriach: P i M. Na podstawie mojej analizy każdy mówca ma prawdopodobieństwo sukcesu w kategorii P i prawdopodobieństwo sukcesu w kategorii M . Jestem również przy założeniu, że istnieje jakiś hyperparameter poziomie wspólnotowym P i M: i .θ p × θ m μ p μ m
Tak więc dla każdego głośnika: i gdzie i kontrolne jak sięgnęło zenitu dystrybucji wynosi około i .θ m ∼ b e t a ( μ m × κ m , ( 1 - μ m ) × κ m ) κ p κ m μ p μ m
Również , .μ m ∼ b e t a ( A m , B m )
Oto mój model jags:
model{
## y = N bernoulli trials
## Each speaker has a theta value for each category
for(i in 1:length(y)){
y[i] ~ dbern( theta[ speaker[i],category[i]])
}
## Category P has theta Ptheta
## Category M has theta Ptheta * Mtheta
## No observed data for pure Mtheta
##
## Kp and Km represent how similar speakers are to each other
## for Ptheta and Mtheta
for(j in 1:max(speaker)){
theta[j,1] ~ dbeta(Pmu*Kp, (1-Pmu)*Kp)
catM[j] ~ dbeta(Mmu*Km, (1-Mmu)*Km)
theta[j,2] <- theta[j,1] * catM[j]
}
## Priors for Pmu and Mmu
Pmu ~ dbeta(Ap,Bp)
Mmu ~ dbeta(Am,Bm)
## Priors for Kp and Km
Kp ~ dgamma(1,1/50)
Km ~ dgamma(1,1/50)
## Hyperpriors for Pmu and Mmu
Ap ~ dgamma(1,1/50)
Bp ~ dgamma(1,1/50)
Am ~ dgamma(1,1/50)
Bm ~ dgamma(1,1/50)
}
Problem polega na tym, że kiedy uruchamiam ten model z 5000 iteracjami do adaptacji, to pobieram 1000 próbek Mmu
i Km
zbiegam się do pojedynczych wartości. Uruchomiłem go z 4 łańcuchami i każdy łańcuch nie ma tej samej wartości, ale w każdym łańcuchu jest tylko jedna wartość.
Jestem całkiem nowy w dopasowywaniu modeli hierarchicznych przy użyciu metod MCMC, więc zastanawiam się, jak źle to jest. Czy powinienem potraktować to jako znak, że ten model jest beznadziejny, aby pasować, że coś jest nie tak z moimi przełożonymi, czy też jest to na równi z kursem?
Edycja: W przypadku, gdy ma to znaczenie, wartość dla , do jest konwergentny (uśredniona dla łańcuchów) wynosiła 0,91, a 1,78κ m
źródło
Odpowiedzi:
To raczej komentarz, ale ponieważ nie mam wystarczającej reputacji, równie dobrze mogę odpowiedzieć.
Z mojego ograniczonego doświadczenia z samplerami MCMC zaobserwowałem, że parametry mają tendencję do pozostawania na stałym poziomie, gdy hiperparametry są zbyt wąskie. Kontrolując rozkład parametrów, uniemożliwiają wydajne próbkowanie przestrzeni rozwiązania.
Spróbuj wziąć większe wartości dla hiperparametrów i zobacz, co się stanie.
Ten artykuł techniczny bardzo pomógł mi zrozumieć samplery MCMC. Składa się z dwóch samplerów, Gibbs (ten, którego używasz) i Hybrid Monte Carlo, i szybko wyjaśnia, jak wybrać priory, hiperpriory oraz wartości parametrów i hiperparametrów.
źródło
Może to być problem ze strukturą łańcucha. To, gdzie skończysz, zależy od tego, gdzie zaczynasz. Aby korzystać z MCMC, chcesz, aby łańcuch był cykliczny, co oznacza, że bez względu na to, gdzie zaczynasz, możesz dostać się do każdego innego stanu w przestrzeni stanów. Jeśli łańcuch nie jest powtarzalny, możesz zostać uwięziony w podzbiorze przestrzeni stanów. Ideą MCMC jest posiadanie istniejącego rozkładu stacjonarnego, w którym ostatecznie łańcuch się skończy. Ten rozkład stacjonarny zwykle ma dodatnie prawdopodobieństwo, że znajdzie się w którymkolwiek ze stanów łańcucha i nie zostanie uwięziony w jednym punkcie, jak opisano . Nie mogę sprawdzić twojego algorytmu, ale może masz w nim błąd. Możliwe jest również, że zdefiniowałeś problem polegający na tym, że Twój łańcuch Markowa nie powraca.
Jeśli chcesz zdobyć wiedzę na temat MCMC, polecam zajrzeć do Podręcznika Markov Chain Monte Carlo, który zawiera artykuły opisujące każdy aspekt MCMC. Został opublikowany przez CRC Press w 2011 roku.
źródło