我需要将数据作为具有不同长度的向量列表和具有相同行数但具有不同列数的矩阵列表进行传递。有没有办法在Rstan中传递数据?
答案 0 :(得分:2)
答案本质上是“否”,Stan语言不允许使用参差不齐的数据结构,例如长度不同的向量,列数不同的矩阵等。
根据您的应用程序,最可能使用填充或展平。通过填充,我的意思是向向量添加额外的值或向矩阵添加额外的列,以使它们都具有相同的大小。最好使用Inf
或-Inf
作为填充值,这样如果在目标日志内核中意外利用了错误,就更容易发现错误。通过拼合,我的意思是通过连接各种长度的向量来制作单个长向量,向量也是如此。然后在Stan程序的本地块中将它们重构为适当大小的向量和矩阵。在这两种情况下,您都需要将所有内容的大小作为整数数组传递。
另一种可能性是使用一些脚本来声明数据块中所需的每个向量或矩阵,即使它们的大小不同。这样做很简单,但是很难生成相应的代码以利用它们中的每一个。