Stan può fare dei predittivi?


9

Stan (in particolare, Iran) ha strutture integrate per generare distribuzioni posteriori predittive?

Non è difficile generare la distribuzione dall'innesto standard, ma preferirei non reinventare la ruota.


2
Alla fine c'è una sezione delle quantità generate che dovrebbe essere in grado di gestire la simulazione, ma la documentazione (a partire dalla versione 1.3, ma la versione 2 dovrebbe essere presto disponibile) non spiega in modo molto dettagliato come eseguire questa operazione. Potresti considerare di chiedere alla mailing list.
Giovanni,

Risposte:


4

Secondo il manuale utente Stan v2.2.0 (pagine 361–362):

A Stan, le simulazioni posteriori possono essere generate in due modi. Il primo approccio consiste nel trattare le variabili previste come parametri e quindi definire le loro distribuzioni nel blocco del modello. Il secondo approccio, che funziona anche con variabili discrete, è generare dati replicati usando generatori di numeri casuali nel blocco quantità generato.

Di solito uso quest'ultimo.


3

Quella che segue non è una risposta completa, ma si spera sia meglio di nessuna risposta. Nelle mie applicazioni applico controlli predittivi posteriori per esaminare le previsioni del modello per una singola misura dipendente che è stata generata da un modello lineare. Questo è semplice in JAGS, ma un po 'più opaco in Stan.

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);
}

Ci deve essere un modo migliore per farlo, quindi qualcuno per favore pubblica una risposta migliore. Ma il codice precedente genera N distribuzioni predittive posteriori, una per ogni osservazione. Faccio questo in modo che sia possibile trovare una distribuzione predittiva di extrema, ma se sei interessato solo alla quantità predittiva posteriore y_tildepotresti essere in grado di farne a meno. Per i set di dati di grandi dimensioni, la soluzione di cui sopra è ovviamente troppo dispendiosa in termini di spazio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.