Parametri senza priori definiti in Stan


14

Ho appena iniziato a imparare a usare Stan e rstan. A meno che non sia sempre stato confuso su come funzionava JAGS / BUGS, ho pensato che dovevi sempre definire una distribuzione precedente di qualche tipo per ogni parametro nel modello da cui attingere. Sembra che non sia necessario farlo a Stan in base alla sua documentazione. Ecco un modello di esempio che danno qui .

data {
  int<lower=0> J; // number of schools 
  real y[J]; // estimated treatment effects
  real<lower=0> sigma[J]; // s.e. of effect estimates 
} 
parameters {
  real theta[J]; 
  real mu; 
  real<lower=0> tau; 
} 
model {
  theta ~ normal(mu, tau); 
  y ~ normal(theta, sigma);
} 

mutauavere priori definiti. Nel convertire alcuni dei miei modelli JAGS in Stan, ho scoperto che funzionano se lascio molti, o molti, parametri con priori indefiniti.

Il problema è che non capisco cosa stia facendo Stan quando ho parametri senza priori definiti. È inadempiente a qualcosa come una distribuzione uniforme? È una delle proprietà speciali di HMC, che non richiede un precedente definito per ogni parametro?

Risposte:


18

Da (una versione precedente di) il manuale di riferimento di Stan:

Non specificare un precedente equivale a specificare un precedente uniforme.

Un precedente uniforme è corretto solo se il parametro è limitato [...]

Priori impropri sono consentiti anche nei programmi Stan; derivano da parametri non vincolati senza istruzioni di campionamento. In alcuni casi, un precedente improprio può portare a un posteriore adeguato, ma spetta all'utente garantire che i vincoli sui parametri o sui dati assicurino la proprietà del posteriore.

(Vedi anche la sezione C.3 nella versione 1.0.1 ).

Il motivo alla base di ciò va bene a Stan ma non a BUGS potrebbe avere a che fare con il fatto che in BUGS il "modello" del tuo modello specifica un modello grafico formale, mentre a Stan stai scrivendo una piccola funzione per calcolare la probabilità congiunta funzione di densità. Non specificare un precedente adeguato per tutte le variabili potrebbe rovinare le belle proprietà formali dei modelli grafici.

Tuttavia, per MC Hamiltoniano è sufficiente calcolare (numericamente) la funzione di densità articolare. Un precedente piatto (anche improprio) contribuisce solo alla costante termine, e quindi fintanto che il posteriore è proprio (massa di probabilità totale finita) —che sarà con una funzione di probabilità ragionevole — può essere completamente ignorato nell'HMC schema.


8

Dal riferimento Stan v1.0.2 (pag. 6, nota 1)

Se non è stato specificato alcun precedente nel blocco modello, i vincoli su theta assicurano che rientri tra 0 e 1, fornendo a theta un precedente uniforme implicito. Per i parametri senza supporto precedentemente specificato e senza limiti, il risultato è un precedente improprio. Stan accetta priori impropri, ma i posteriori devono essere corretti affinché il campionamento abbia successo.

Entrambi mue sigmahanno priori uniformi impropri.

Sotto il cappuccio mue sigmasono trattati in modo diverso. sigmaè definito con un limite inferiore; Stan campioni da log(sigma)(con un adattamento giacobino per la trasformazione). Per ulteriori dettagli sulle trasformazioni, consultare il capitolo 27 (pag. 153).


Proprio per questo sono chiaro, se STAN campiona a livello di log (sigma), il precedente piatto è ancora su sigma e non su log (sigma)?
Rasmus Bååth,

1
Sì, l'uniforme precedente è ancora finita sigma, no log(sigma). Stan realizza questo trasformando il parametro e applicando il corretto cambio di regolazione delle variabili usando il Jacobiano.
syclik,
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.