本文所有代码均来自于《统计反思-用R和stan例解贝叶斯方法》
假期中,为学习贝叶斯模型花费了一些时间,虽然没有领悟到贝叶斯模型的真谛,但学习中确实感到有一定的进步。我的理解是有知识的输出才能帮助我更好地学习模型,因此今天选择把学习中的一些常常忘记的东西总结下,也希望这个系列的文章可以帮助后来人。
今天的这部分内容主要针对常用的代码:
1. 多维高斯分布中抽取取值向量
post<-extract.samples(m4.1,n=1e4)
可以提取后验分布中所有的样本及其对应的参数值
2. 查看最大后验概率
precis(m4.2)
3.利用后验数据预测
mu<-link(m4.3,data=pre.data)
可进行利用该模型进行再次预测
link 可生成相应中间变量(例如平均身高)的后验样本分布,link 默认使用拟合模型时的数据,但可以自定义向量值赋予函数,得到相应的自变量取值下的后验分布。
apply(mu,2,mean)
apply(mu,2,PI,prob=0.89)
后续可通过apply函数得到相应的均值,区间上下限。再通过lines及shade添加到图上,方便理解。
4.真实值的预测区间
sim.height<-sim(m4.3,data=pre.data)
这一步获取的是最终预测变量的区间,link得到的是中间变量(平均身高),而sim得到的是最终变量(真实身高)。
5. 模型比较阶段的主要函数
可以用
WAIC(m6.11)
得到模型的WAIC和DIC,但遇到多个模型进行比较时:
compare(m6.11,m6.12,m6.13)
比较结果中,WAIC值越小越好,pWAIC是有效参数的个数估计,提供模型拟合样本的灵活度,dWAIC,进行偏差比较,weight是每个模型的权重,
coeftab(m6.11,m6.12,m6.13)
可用于比较不同模型的参数。
6. 若想得到多个模型的平均后验,可通过
ensemble (m6.11,m6.12,m6.13,data=pre.data)
获取,ensemble的用法与link 和sim类似。