brms支持的分布多,而且比较灵活。我个人是能用rstanarm就用它,不能的话看看brms,再不行就自己写rstan。rstanarm也应该是有默认先验的,我用的时候从来没有指定过先验分布的,在数据集比较大的情况下,只要不是缺心眼把先验分布选的特别窄它都不重要。
我没用过cmdstan,实际使用rstan的时候是需要编译的,写的稍微复杂的时候编译也要几分钟,在我眼里这就属于比较长的编译时间了。。。
在写多水平模型的时候,stan常常需要中心化标准化,构造中间参数,Non-centered parameterization,因为有这么些操作,最后还得用generate quantities把正确的参数返回回来,这些都巨蛋疼。明明是一个10行内可以写完的多水平模型,最后可能变成超过50行。不这么做要么是会无法抽样,要么会有很多divergent transitions,都不正确。
MLE的估计应该相对于贝叶斯估计后验分布的mode,所以说以下陈述是不准确的:
Cloud2016 贝叶斯估计和惩罚极大似然估计是等价的
贝叶斯估计我们能得到后验分布,可以计算mean,mode,median,等等等。虽然在一般情况下根据CLT,mode = mean = median,但是在很多情况下不是这样,比如高维稀疏数据的时候,而且高维数据稀疏很多时候有拟合问题,折这些都可以通过贝叶斯估计来解决。最简单的例子线性回归的\(\epsilon\)
,如果它的点估计是0.2,它的s.e.是0.3,我们没法说95%置信区间是[-0.4, 0.8],因为我有100%的信心它的下限是0而不是-0.4。但是贝叶斯估计可以给出\(\epsilon\)
的所有统计量。
INLA和variational bayes我都只是知道概念,完全不懂。MCMC方面最近出了一些subsampling MCMC的方法,可以放在这里供大家学习:
第一篇文章的方法的效果比最开始的Firefly MCMC强不少,第二篇文章接着陈天奇的Stochastic Gradient Hamiltonian Monte Carlo用的第一篇文章的思路,但是整个框架是Hamiltonian Monte Carlo。