我打算写几篇文章,总结一下贝叶斯方法在职场数据分析中的几个重点应用。
我主要参考的书籍和资料包括:
John K.Kruschke的Doing Bayesian Data Analysis
A Solomon Kurz的Doing Bayesian Data Analysis in brms and the tidyverse
Will Kurt的趣学贝叶斯统计——橡皮鸭、乐高和星球大战中的统计
其中前两分资料可以在网络上找到。
我暂时计划整理的主题包括:
A/B测试,包括二项式检验和t-检验
实验和推断所需要的样本量的估计:功效分析
后续可能讨论分层模型
下面简单说一下贝叶斯分析的基本思路
贝叶斯分析基于贝叶斯公式:
参数的后验分布,等于似然乘以先验再除以证据
贝叶斯分析的基本步骤就是计算出参数的后验分布,然后把这个分布描述出来。
例如在A/B测试中,我们关心方案A和方案B的转化率,方案A的样本服从伯努利分布,转化率就是这个分布的参数。我们不确定参数具体是多少,根据统计学,可以根据实验样本估计参数的一个范围,或者说这个参数的分布。实验数据提供了似然,用贝叶斯方法得到后验分布,即参数的估计。
对参数的估计,频率学派的方法主要是点估计和置信区间。其中置信区间比较诡异,你不能说置信区间的意义是参数落在这个区间的概率是多少多少,哈哈。对于贝叶斯方法,为了更精炼地描述参数的范围,最主要采用的概念是最大密度区间Highest density interval (HDI)
95%HDI对应的灰色部分面积是0.95。在所有对应面积为0.95的区间中,HDI是最短的。HDI在推断中有重要作用。
根据一个分布函数来计算HDI的R代码,出自Doing Bayesian Data Analysis,25.2.4节
HDIofICDF = function( ICDFname , credMass=0.95 , tol=1e-8 , ... ) {
# Arguments:
# ICDFname is R’s name for the inverse cumulative density function
# of the distribution.
# credMass is the desired mass of the HDI region.
# tol is passed to R’s optimize function.
# Return value:
# Highest density interval (HDI) limits in a vector.
# Example of use: For determining HDI of a beta(30,12) distribution, type
# > HDIofICDF( qbeta , shape1 = 30 , shape2 = 12 )
# Notice that the parameters of the ICDFname must be explicitly named;
# e.g., HDIofICDF( qbeta , 30 , 12 ) does not work.
# Adapted and corrected from Greg Snow’s TeachingDemos package.
incredMass = 1.0 - credMass
intervalWidth = function( lowTailPr , ICDFname , credMass , ... ) {
ICDFname( credMass + lowTailPr , ... ) - ICDFname( lowTailPr , ... )
}
optInfo = optimize( intervalWidth , c( 0 , incredMass ) , ICDFname=ICDFname ,
credMass=credMass , tol=tol , ... )
HDIlowTailPr = optInfo$minimum
return( c( ICDFname( HDIlowTailPr , ... ) ,
ICDFname( credMass + HDIlowTailPr , ...)))
}
这里要计算某个分布函数的HDI,用到了这个分布函数的逆累积分布函数



