Обработка частично отсутствующих (цензурированных) данных, полученных из многочленного распределения в JAGS - PullRequest
0 голосов
/ 24 января 2020

Я - пользователь Stan, пытаюсь использовать JAGS для проекта, потому что мне нужно отобрать цензурированные данные из дистрибутива с поддержкой целых чисел. У меня возникли проблемы из-за частичного отсутствия (цензура) данных.

Мои данные - это данные о продажах для ряда продуктов и штатов. Я моделирую продажи для каждого штата, исходя из многочлена, sales[s] ~ dmulti(theta, n).

Проблема возникает из-за того, что мои данные для разных продуктов доступны на разных уровнях детализации. Для некоторых продуктов у меня есть данные о продажах для каждого штата отдельно. Однако для других продуктов у меня есть только сводные данные, в которых состояния сгруппированы в четыре широких региона. Данные на уровне штата подвергаются цензуре.

Итак, нет проблем, когда вы даете JAGS векторы с отсутствующими выборками данных из некоторого распределения, JAGS заполняет NA. Но нет, JAGS не может сделать это (по любой причине) при выборке из многочлена.

Тем не менее, нет проблем. Я могу извлечь недостающие данные из некоторого распределения и объединить с наблюдаемыми данными (скажем, столбец с отсутствующими данными # 7):

sales_hat[s] ~ dmulti(theta, n);
sales_hat[s] <- c(sales[s, 1:6], missingcolumn[s], sales[s, 8:...]);
missingcolumn[s] ~ dbin(theta[7], n);

JAGS чувствует, что я переопределил sales_hat.

Хорошо, хорошо. Нет проблем. Давайте пропустим промежуточную переменную:

c(sales[s, 1:6], missingcolumn[s], sales[s, 8:...]) ~ dmulti(theta, n);
missingcolumn[s] ~ dbin(theta[7], n);

В этот момент я получаю syntax error near ",", что, как я полагаю, означает, что JAGS не хочет, чтобы я таким образом создавал анонимный узел.

Какой правильный синтаксис для обработки этого в JAGS, где я хочу заменить данные, подвергнутые цензуре, выборочными данными и отобрать весь вектор из многочлена?

(Да, я знаю, что есть проблема с n - Я упрощаю ради примера.)

...