Czy stan (w szczególności rstan) ma wbudowane funkcje generowania predykcyjnych rozkładów bocznych?
Nie jest trudno wygenerować rozkład ze stanu dopasowania, ale wolałbym nie wymyślać koła na nowo.
Czy stan (w szczególności rstan) ma wbudowane funkcje generowania predykcyjnych rozkładów bocznych?
Nie jest trudno wygenerować rozkład ze stanu dopasowania, ale wolałbym nie wymyślać koła na nowo.
Odpowiedzi:
Zgodnie z instrukcją użytkownika Stan v2.2.0 (strony 361–362):
W Stanie tylne symulacje można wygenerować na dwa sposoby. Pierwsze podejście polega na traktowaniu przewidywanych zmiennych jako parametrów, a następnie zdefiniowaniu ich rozkładów w bloku modelu. Drugie podejście, które działa również w przypadku zmiennych dyskretnych, polega na generowaniu replikowanych danych przy użyciu generatorów liczb losowych w bloku wielkości generowanych.
Zwykle używam tego drugiego.
Poniższa odpowiedź nie jest dokładną odpowiedzią, ale mam nadzieję, że jest lepsza niż brak odpowiedzi. We własnych aplikacjach stosuję kontrole predykcyjne później, aby zbadać prognozy modelu dla pojedynczej miary zależnej, która została wygenerowana z modelu liniowego. Jest to proste w JAGS, ale nieco bardziej nieprzejrzyste w Stanie.
data{
int<lower=1> N; // no. rows
real x[N]; // predictor
real y[N]; // dependent variable
}
parameters{
real alpha; // int.
real beta; // slope
real<lower=0> sigma_e; // resid. var.
real y_tilde[N]; // post. pred.
}
model{
real mu[N];
for(i in 1:N){
mu[i] <- alpha + beta*x[i];
}
y ~ normal(mu,sigma_e); //lik
y_tilde ~ normal(mu,sigma_e);
alpha ~ normal(0,5);
beta ~ normal(0,5);
sigma_e ~ cauchy(0,5);
}
generated quantities{
real minimum;
real maximum;
minimum <- min(y_tilde);
maximum <- max(y_tilde);
}
Musi istnieć lepszy sposób, aby to zrobić, więc ktoś powinien opublikować lepszą odpowiedź. Ale powyższy kod generuje N tylnych rozkładów predykcyjnych, po jednym dla każdej obserwacji. Robię to, aby można było znaleźć predykcyjny rozkład ekstremów, ale jeśli interesuje cię tylko tylna predykcyjna wielkość y_tilde
, możesz być w stanie obejść się bez nich wszystkich. W przypadku dużych zestawów danych powyższe rozwiązanie jest oczywiście zbyt zajmujące miejsce.