В JAGS, как работает узел stochasti c? - PullRequest
0 голосов
/ 14 февраля 2020

... и что означает знак ~ по сравнению с R в y [I] ~ dnorm (m [i], tau) против y [I] <- dnorm (n, m [i], tau)? </p>

Рассмотрим две строки кода:

`for(I in 1:length(y)) {
y[i] ~ dnorm(m[i],tau)  #---> Jags code (stochastic node)
m[i] = alpha + beta*(x[i] - x_bar)
.
.
}
y[i] <- dnorm(n,m[i],tau)?) ---> R`

Какими будут значения N в Jags, поскольку они не указаны внутри функции dnorm? (dnorm (m [i], tau))

Для каждого i вычисляет ли функция dnorm значения плотности для каждого значения y относительно среднего значения m [I], которое имеет линейную зависимость, определяемую terministi c узел и тау (точность)?

Короче говоря, я хочу знать, какие n значений будут использоваться dnorm или любой другой функцией плотности для распределений (dgamma или dbeta).

1 Ответ

0 голосов
/ 14 февраля 2020

В этом параметре c экземпляр y - это ваша переменная ответа, m - ваш линейный предиктор, а tau - точность (обратная дисперсия). Использование ~ делает отношение стохастий c. Глядя на руководство пользователя JAGS ...

"Отношения могут быть двух типов. Отношение стохастии c (~) определяет узел стохастии c, представляющий случайную переменную в модели. Детерминированное отношение c (<-) определяет детерминированный узел, значение которого точно определяется значениями его родителей. Знак равенства (=) может использоваться для имеющегося отношения детерминированности c. левой стрелки (<-). "

Итак, другими словами, вы предполагаете, что значения в y взяты из нормального распределения, связанного с m и tau .

В то время как dnorm в R вычисляет плотность, JAGS рассчитывает плотность записи (согласно руководству пользователя). Фактически, это отношение стохастий c позволяет вам использовать y и x для оценки alpha, beta и tau, и в этом случае вы используете dnorm, делая предположение о распределении процесс генерации данных.

Конечно, поскольку это байесовский анализ, вам понадобятся априоры для ваших параметров. Вы также можете детерминистически рассчитать стандартное отклонение вместо точности. Полная модель будет выглядеть примерно так ...

model{
# likelihood
for(I in 1:length(y)) {
y[i] ~ dnorm(m[i],tau) 
m[i] <- alpha + beta*(x[i] - x_bar)
}
# priors
tau ~ dgamma(0.001, 0.001)
sd <- 1/ sqrt(tau)
alpha ~ dnorm(0, 0.001)
beta ~ dnorm(0, 0.001)
}

...