Czy stan wykonuje predykcyjne plakaty tylne?

9

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.

Zaraz
źródło
2
Na końcu znajduje się sekcja wielkości generowanych, która powinna być w stanie obsłużyć symulację, ale dokumentacja (od wersji 1.3, ale wersja 2 powinna wkrótce zostać wydana) nie wyjaśnia szczegółowo, jak to osiągnąć. Możesz rozważyć zapytanie do listy mailingowej.
Jan

Odpowiedzi:

4

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.

Avraham
źródło
3

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.

RNG
źródło