原文链接:http:///?p=23236在频率学派中,观察样本是随机的,而参数是固定的、未知的数量(点击文末“阅读原文”获取完整代码数据)。 相关视频 什么是频率学派?概率被解释为一个随机过程的许多观测的预期频率。 有一种想法是 "真实的",例如,在预测鱼的生活环境时,盐度和温度之间的相互作用有一个回归系数? 什么是贝叶斯学派?在贝叶斯方法中,概率被解释为对信念的主观衡量。 所有的变量--因变量、参数和假设都是随机变量。我们用数据来确定一个估计的确定性(可信度)。 这种盐度X温度的相互作用反映的不是绝对的,而是我们对鱼的生活环境所了解的东西(本质上是草率的)。 目标频率学派 保证正确的误差概率,同时考虑到抽样、样本大小和模型。
贝叶斯学派 分析更多的信息能在多大程度上提高我们对一个系统的认识。
实际应用中:为什么用贝叶斯
贝叶斯法则:一些典型的贝叶斯速记法。 注意:
目标:计算参数的后验分布:π(θ|X)。 点估计是后验的平均值。 一个可信的区间是 你可以把它解释为一个参数在这个区间内的概率 。 计算皮埃尔-西蒙-拉普拉斯(1749-1827)(见:Sharon Bertsch McGrayne: The Theory That Would Not Die)
MCMCMCMC的思想是对参数值θi进行 "抽样"。 回顾一下,马尔科夫链是一个随机过程,它只取决于它的前一个状态,而且(如果是遍历的),会生成一个平稳的分布。 技巧 "是找到渐进地接近正确分布的抽样规则(MCMC算法)。 有几种这样的(相关)算法。
一个不断发展的文献和工作体系! Metropolis-Hastings 算法
Metropolis-Hastings: 硬币例子你抛出了5个正面。你对θ的最初 "猜测 "是 MCMC:
画图:
点击标题查阅往期内容 左右滑动查看更多 采样链:调整、细化、多链
MCMC 诊断法R软件包帮助分析MCMC链。一个例子是线性回归的贝叶斯拟合(α,β,σ
预烧部分:
MCMC诊断法查看后验分布(同时评估收敛性)。
参数之间的关联性,以及链内的自相关关系
统计摘要运行MCMC的工具(在R内部)逻辑Logistic回归:婴儿出生体重低
MCMC与GLM逻辑回归的比较MCMC与GLM逻辑回归的比较对于这个应用,没有很好的理由使用贝叶斯建模,除非--你是 "贝叶斯主义者"。你有关于回归系数的真正先验信息(这基本上是不太可能的)。 一个主要的缺点是 先验分布棘手的调整参数。 但是,MCMC可以拟合的一些更复杂的模型(例如,层次的logit MCMChlogit)。 Metropolis-HastingsMetropolis-Hastings很好,很简单,很普遍。但是对循环次数很敏感。而且可能太慢,因为它最终会拒绝大量的循环。 Gibbs 采样在Gibbs吉布斯抽样中,你不是用适当的概率接受/拒绝,而是用适当的条件概率在参数空间中行进。并从该分布中抽取一次。 然后你从新的条件分布中抽取下一个参数。 比Metropolis-Hastings快得多。有效样本量要高得多! BUGS(OpenBUGS,WinBUGS)是使用吉布斯采样器的贝叶斯推理。 JAGS是 "吉布斯采样器" 其他采样器汉密尔顿蒙特卡洛(HMC)--是一种梯度的Metropolis-Hastings,因此速度更快,对参数之间的关联性更好。 No-U Turn Sampler(NUTS)--由于不需要固定的长度,它的速度更快。这是STAN使用的方法(见http:///pdf/1111.4246v1.pdf)。 (Hoffman and Gelman 2011) 其他工具你可能想创建你自己的模型,使用贝叶斯MC进行拟合,而不是依赖现有的模型。为此,有几个工具可以选择。
STAN要用STAN拟合一个模型,步骤是:
STAN示例--线性回归STAN代码是R(例如,具有分布函数)和C(即你必须声明你的变量)之间的一种混合。每个模型定义都有三个块。 _1_.数据块:
这指定了你要输入的原始数据。在本例中,只有Y和X,它们都是长度为n的(数字)向量,是一个不能小于0的整数。 _2_. 参数块
这些列出了你要估计的参数:截距、斜率和方差。 _3_. 模型块
注意:
请经常参阅手册!https://github.com/stan-dev/stan/releases/download/v2.9.0/stan-reference-2.9.0.pdf 2. 在R中编译模型你把你的模型保存在一个单独的文件中, 然后用stan_model()命令编译这个模型。 这个命令是把你描述的模型,用C++编码和编译一个NUTS采样器。相信我,自己编写C++代码是一件非常非常痛苦的事情(如果没有很多经验的话),而且它保证比R中的同等代码快得多。 注意:这一步可能会很慢。 3. 在R中运行该模型这里的关键函数是sampling()。还要注意的是,为了给你的模型提供数据,它必须是列表的形式 模拟一些数据。
进行取样!
这里有大量的输出,因为它计算了
MCMC诊断法为了应用coda系列的诊断工具,你需要从STAN拟合对象中提取链,并将其重新创建为mcmc.list。
本文中分析的数据、代码分享到会员群,扫描下面二维码即可加群! |
|