Как передать список векторов с различной длиной и список матриц с различными измерениями в модели Стэна? - PullRequest
0 голосов
/ 26 марта 2019

Мне нужно передать данные в виде списка векторов различной длины и списка матриц с одинаковым количеством строк, но с разным количеством столбцов.Есть ли способ передать данные в Rstan?

1 Ответ

3 голосов
/ 27 марта 2019

Ответ, по сути, нет, язык Stan не допускает разбитых структур данных, таких как векторы с разной длиной, матрицы с разным количеством столбцов и т. Д.

В зависимости от вашего применения может быть проще всего использовать заполнение или выравнивание. Под отступом я подразумеваю добавление дополнительных значений к вашим векторам или дополнительных столбцов к вашим матрицам, чтобы они все были одинакового размера. Лучше использовать Inf или -Inf в качестве дополненных значений, чтобы было легче обнаружить ошибки, если они случайно были использованы в целевом ядре журнала. Под сглаживанием я подразумеваю создание одного длинного вектора путем объединения ваших векторов различной длины, и то же самое относится и к векторам. Затем измените их как векторы и матрицы соответствующих размеров в локальных блоках вашей программы Stan. В обоих случаях вам также необходимо передать размеры всего как целочисленные массивы.

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

...