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