Параметры без определенных априоров в Stan

14

Я только начал учиться использовать Стэн и rstan. Если я не всегда был озадачен тем, как работают JAGS / BUGS, я думал, что вы всегда должны были определять какое-то предварительное распределение для каждого параметра в модели, из которой нужно извлечь. Похоже, что вам не нужно делать это в Stan на основании его документации. Вот пример модели, которую они дают здесь .

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

Ни , muни tauне имеют априорные определены. Преобразовывая некоторые из моих моделей JAGS в Stan, я обнаружил, что они работают, если я оставлю многие или большинство параметров с неопределенными априорными значениями.

Проблема в том, что я не понимаю, что делает Стэн, когда у меня есть параметры без определенных априоров. По умолчанию это что-то вроде равномерного распределения? Является ли это одним из специальных свойств HMC, что для каждого параметра не требуется определенный приоритет?

JoFrhwld
источник

Ответы:

18

Из (более ранней версии) справочного руководства Stan:

Не указание априора эквивалентно указанию униформы априора.

Равномерный априор имеет смысл только в том случае, если параметр ограничен [...]

Неправильные приоры также допускаются в программах Stan; они возникают из неограниченных параметров без операторов выборки. В некоторых случаях неправильный предварительный анализ может привести к правильной апостериорности, но пользователь должен гарантировать, что ограничения на параметр (ы) или данные обеспечивают правильность апостериорной части.

(См. Также раздел C.3 в версии 1.0.1 ).

Основная причина, по которой это хорошо в Stan, но не в BUGS, может быть связана с тем, что в BUGS ваша «программа» модели задает формальную графическую модель, в то время как в Stan вы пишете небольшую функцию для вычисления общей вероятности функция плотности. Если не указать правильный априор для всех переменных, это может испортить хорошие формальные свойства графических моделей.

Однако для гамильтониана MC вам просто необходимо (численно) рассчитать функцию плотности соединения. Плоское (даже неправильное) предварительное значение вносит только постоянный член в плотность, и поэтому до тех пор, пока апостериор является правильным (конечная общая масса вероятности) - что будет с любой разумной функцией правдоподобия - он может полностью игнорироваться в HMC схема.

Дэйв Кляйншмидт
источник
8

Из ссылки Stan v1.0.2 (стр. 6, сноска 1)

Если в блоке модели не было указано никакого предшествующего значения, ограничения на тета гарантируют, что он находится между 0 и 1, обеспечивая тета неявный равномерный априор. Для параметров без предварительно указанной и неограниченной поддержки результат является неправильным предварительным. Стэн принимает неправильные приоры, но постеры должны быть правильными, чтобы выборка была успешной.

У обоих muи sigmaесть неправильные одинаковые приоры.

Под капотом muи sigmaобращаются по-разному. sigmaопределяется с нижней границей; Образцы Стэна из log(sigma)(с поправкой Якобиана на преобразование). Подробнее о преобразованиях см. Главу 27 (стр. 153).

syclik
источник
Просто так, я ясно об этом, если сэмплы STAN на уровне журнала (сигма), плоский приоритет по-прежнему больше сигмы, а не журнала (сигма)?
Расмус Батх
1
Да, униформа до сих пор не закончена sigma, не log(sigma). Стэн выполняет это путем преобразования параметра и применения корректной корректировки переменных с использованием якобиана.
syclik