【发布时间】:2016-10-25 14:42:27
【问题描述】:
我通过 API 调用生成数据,一次一个数据点。我想将每个点提供给 Stan 模型,保存更新的模型,然后丢弃数据点。
Stan 能做到吗?
如果是这样,您如何处理组级参数?例如,如果我的模型有 J 个组级参数,但我一次只输入一个数据点,这不会产生错误吗?
【问题讨论】:
我通过 API 调用生成数据,一次一个数据点。我想将每个点提供给 Stan 模型,保存更新的模型,然后丢弃数据点。
Stan 能做到吗?
如果是这样,您如何处理组级参数?例如,如果我的模型有 J 个组级参数,但我一次只输入一个数据点,这不会产生错误吗?
【问题讨论】:
我认为您的问题可以概念化为贝叶斯更新。换句话说,您对参数的信念当前由某个联合分布表示,然后您又获得了一个数据点,并且您希望根据该数据点更新您的信念。然后重复这个过程。
如果是这样,那么您可以创建一个只有一个数据点的 Stan 模型,但您需要某种方式来表示您当前的信念,并使用概率分布作为先验。这通常可以通过无约束空间中参数的一些多元正态分布来完成。您可以使用 rstan 包中的 unconstrain_pars 函数来获得一个无约束后验矩阵,然后查看它接近的多元法线。如果您有很多参数,您可能希望对多元正态使用一些缩小的协方差估计器。然后,在您的 Stan 程序中,对参数使用多元正态先验,并执行您需要做的任何转换,以在受限空间中获取转换后的参数(Stan 用户手册中记录了许多此类转换)。
确实,当您估计只有一个数据点的层次模型时,该数据点基本上没有关于特定数据点不在的组的信息。但是,在这种情况下,后验分布的边际因为省略组的参数将与先验分布基本相同。没关系。
【讨论】: