主要内容

贝叶斯分析逻辑回归模型

这个例子展示了如何使贝叶斯推论的逻辑回归模型使用slicesample

统计推论通常是基于最大似然估计(标定)。企业选择的参数数据的可能性最大化,直观上很有吸引力的。在大中型企业中,参数未知但被认为是固定的,和有信心的估计。在贝叶斯统计中,未知参数的不确定性量化使用概率未知参数视为随机变量。

贝叶斯推理

贝叶斯推理是一个过程,分析统计模型结合了先验知识模型或模型参数。根这样的推断是贝叶斯定理:

$ $ P (\ mathrm{参数|数据})= \压裂# xA;{P (\ mathrm{数据|参数})\乘以P (\ mathrm{参数})}& # xA;{P (\ mathrm{数据})}& # xA;可能性\ propto \ mathrm {} \ * \ mathrm{之前}$ $

例如,假设我们有正常的观察

$ $ X | \θ\ sim N(\θ,\σ^ 2)$ $

σ是已知的和θ的先验分布

$ $ \θ\ sim N(\μ,\τ^ 2)$ $

在这个公式μ和τ,有时被称为hyperparameters,也被认为是。如果我们观察n的样本X,我们可以得到θ的后验分布

$ $ \θ| X \ sim N \离开(\压裂{\τ^ 2}{\σ^ 2 / N + \ t ^ 2} \酒吧X + & # xA;\压裂{\σ^ 2 / n}{{\σ^ 2 / n + \ t ^ 2}} \μ,& # xA;\压裂{(\σ^ 2 / n) \ \τ^ 2}{\σ^ 2 / n + & # xA;\τ^ 2}\ $ $

下面的图显示了前、可能性和θ后。

rng (0,“旋风”);n = 20;σ= 50;x = normrnd(10,σ,n, 1);μ= 30;τ= 20;θ= linspace (-40、100、500);日元= normpdf(意味着(x),θ,σ/√(n));y2 = normpdf(θ,μ,τ);postMean =τ^ 2 *意味着(x) /(τ)^ 2 +σ^ 2 / n) +σ^ 2 *亩/ n /(τ)^ 2 +σ^ 2 / n); postSD = sqrt(tau^2*sigma^2/n/(tau^2+sigma^2/n)); y3 = normpdf(theta, postMean,postSD); plot(theta,y1,“- - -”θ,y2,“——”,θ,y3,“-”。)传说(“可能性”,“之前”,“后”)包含(‘\θ)

汽车试验数据

在一些简单的问题,如之前的正常意味着推理的例子,很容易算出后验分布在一个封闭的形式。但总的来说问题涉及non-conjugate先知先觉,后验分布是困难的或不可能的计算分析。我们将考虑逻辑回归为例。这个例子涉及到一个实验来帮助模型汽车各种权重的比例,里程测试失败。数据包括观察体重、汽车测试,和失败的数量。我们将使用一个转换版本的重量减少的相关性回归参数的估计。

%的一组汽车重量重量= (2100 2300 2500 2700 2900 3100 3300 3500 3700 3900 4100 4300)';重量=(重量- 2800)/ 1000;%重定位和重新调节%的汽车数量在每个重量测试总=[48 42 31 34 31日21日23日23日21日16 17 21)';%的汽车数量差mpg表现在每一个重量可怜=[1 2 0 3 8 8 14 17日19日15日17日21日)';

逻辑回归模型

逻辑回归,广义线性模型的一个特例,适合这些数据由于响应变量是二项。逻辑回归模型可以写成:

$ $ P (\ mathrm{失败})= \压裂{e ^ {Xb}} {1 + e ^ {Xb}} $ $

其中X是设计矩阵和b是包含模型参数向量。在MATLAB®,我们这个方程可以写为:

logitp = @ (b, x) exp (b (1) + (2)。* x) / (1 + exp (b (1) + (2)。* x));

如果你有一些先验知识或欠先验可用,您可以指定模型参数的先验概率分布。例如,在这个例子中,我们使用正常的先知先觉的拦截b1和斜率b2,即

prior1 = @ (b1) normpdf (b1, 0, 20);%为拦截之前prior2 = @ (b2) normpdf (b2 0 20);%之前的斜率

由贝叶斯定理,联合模型参数的后验分布的乘积成正比的可能性和先知先觉。

帖子= @ (b)刺激(binopdf(穷,总,logitp (b、体重)))%的可能性* prior1 (b (1)) * prior2 (b (2));%先验

注意正常化常数后在这个模型是分析棘手。然而,即使不知道正常化不变,你可以想象后验分布,如果你知道模型参数的大致范围。

b1 = linspace (-2.5、1、50);b2 = linspace (3, 5.5, 50);simpost = 0 (50,50);i = 1:长度(b1)j = 1:长度(b2) simpost后(i, j) = ((b1(我),b2 (j)]);结束;结束;网格(b2, b1, simpost)包含(“坡”)ylabel (“拦截”)zlabel (“后验密度”)视图(-110,30)

这个后沿对角线长在参数空间,表明,我们观察的数据后,我们相信参数是相关的。这是有趣的,因为在我们收集的任何数据,我们认为他们是独立的。来自的相关性结合我们与似然函数的先验分布。

片抽样

蒙特卡罗方法中经常使用贝叶斯数据分析总结后分布。我们的想法是,即使你不能计算后验分布分析,您可以生成一个随机样本的分布和使用这些随机值来估计后验分布或派生数据如后的意思是,中位数,标准差,等。片抽样是一种算法设计与任意样本分布密度函数,只知道一个比例常数,正是需要取样的一个复杂的后验分布归一化常数是未知的。算法不生成独立的样本,而是一个马尔可夫链的序列的平稳分布是目标分布。因此,片取样器是一个马尔可夫链蒙特卡罗(密度)算法。然而,它不同于其他知名密度算法,因为只有指定的缩放后需要——不需要建议和边际分布。

这个例子展示了如何使用切片采样器的里程测试逻辑回归模型的贝叶斯分析,包括生成一个随机样本的模型参数的后验分布,分析取样器的输出,使推断模型参数。第一步是生成一个随机样本。

初始= [1];nsamples = 1000;跟踪= slicesample (nsamples初始,“pdf”的帖子,“宽度”20 [2]);

分析取样器输出

从切片采样器在获得一个随机样本,调查是很重要的收敛性和混合等问题,合理确定样品是否可以被视为一组随机实现目标后验分布。看着边缘跟踪检查输出情节是最简单的方法。

次要情节(2,1,1)情节(跟踪(:1))ylabel (“拦截”);次要情节(2,1,2)情节(跟踪(:,2))ylabel (“坡”);包含(的样本数量);

从这些情节显然是参数初始值的影响需要一段时间消失了(也许五十左右的样本)在流程开始之前固定。

也有帮助检查收敛到使用一个移动窗口计算统计样本均值、中位数,或样本的标准偏差。这产生一个流畅的情节比原始样本痕迹,并且可以更容易识别和理解任何non-stationarity。

movavg =过滤器((1/50)*(50,1),1,跟踪);次要情节(2,1,1)情节(movavg(: 1)包含(样品的数量)ylabel (”的意思是拦截的);次要情节(2,1,2)情节(movavg(:, 2))包含(样品的数量)ylabel (斜率的手段);

因为这些是移动平均线在一个窗口50迭代,前50的值不与其他的阴谋。然而,其余的每个情节似乎确认参数后意味着聚合后的平稳性100左右的迭代。也是明显的,这两个参数相互关联,与前面的情节后密度。

自从他时期代表样本不能合理被视为随机实现目标分布,可能是明智的不使用第一个50左右值初片取样器的输出。你可以删除这些行输出的,然而,它也可以指定一个“老化”。这是方便合适的老化长度已知时,也许从之前运行。

跟踪= slicesample (nsamples初始,“pdf”的帖子,“宽度”20 [2],“燃烧”,50);次要情节(2,1,1)情节(跟踪(:1))ylabel (“拦截”);次要情节(2,1,2)情节(跟踪(:,2))ylabel (“坡”);

这些跟踪情节似乎不显示任何non-stationarity,表明老化期所做的工作。

然而,有跟踪情节的第二个方面,也应探索。而对截获的跟踪看起来像高频噪声,对边坡的跟踪似乎较低的频率分量,表明在相邻之间存在自相关值迭代。我们仍然可以从这个autocorrelated样本计算均值,但它往往是方便减少了存储需求通过删除冗余样本。如果这消除自相关,它也会让我们把它看作一个独立的样本值。例如,您可以减少样品每10日才通过保持价值。

跟踪= slicesample (nsamples初始,“pdf”的帖子,“宽度”20 [2],“燃烧”,50岁,“薄”10);

检查这稀释的效果,是有用的估计的样本自相关函数的痕迹,使用它们来检查样品快速混合。

F = fft(去趋势跟踪,“不变”));F = F。*连词(F);ACF =传输线(F);:ACF = ACF (21);%保留落后20。ACF =实际([ACF(一21,1)。/ ACF (1, 1)ACF(一21,2)。/ ACF (1、2)]);%正常化。边界= sqrt (1 / nsamples) * (2;2);% 95% CI iid正常实验室= {示例ACF拦截的,“示例ACF坡”};i = 1:2次要情节(2,1,i) lineHandles =茎(0:20,ACF(:,我)“填充”,“r-o”);lineHandles。MarkerSize = 4;网格(“上”)包含(“滞后”{我})ylabel(实验室)情节([0.5 - 0.5;20 20]、[界限([1])范围(2 [2])],“- b”);情节(20 [0],[0 0),“- k”);持有一个=轴;轴([1](1:3));结束

自相关值在第一个滞后对拦截参数非常重要,甚至对于斜率参数。我们可以重复抽样使用较大的变薄参数以减少进一步的关系。然而,对于本例的目的,我们将继续使用当前样本。

推理模型参数

正如预期的那样,一个直方图的样本模拟的情节后密度。

次要情节(1,1,1)hist3(跟踪,(25、25));包含(“拦截”)ylabel (“坡”)zlabel (“后验密度”)视图(-110,30)

您可以使用柱状图或内核平滑密度估计总结后样品的边缘分布特性。

次要情节(2,1,1)嘘(跟踪(:1))包含(“拦截”);次要情节(2,1,2)ksdensity(跟踪(:,2))包含(“坡”);

你也可以计算描述性统计如后意味着或百分位数的随机样本。来确定样本容量足够大来实现所需的精度,它有助于监控所需的统计跟踪的函数的样本的数量。

csum = cumsum(跟踪);次要情节(2,1,1)情节(csum (: 1)“。/ (1: nsamples))包含(样品的数量)ylabel (”的意思是拦截的);次要情节(2,1,2)情节(csum (:, 2)’。/ (1: nsamples))包含(样品的数量)ylabel (斜率的手段);

在这种情况下,似乎1000年的样本容量是足够给好后的意思估计精度。

bHat =意味着(跟踪)
bHat = -1.6931 - 4.2569

总结

统计和机器学习工具箱™提供了多种功能,允许您指定可能和先知先觉。他们可以组合获得后验分布。的slicesample在MATLAB函数允许您进行贝叶斯分析使用马尔可夫链蒙特卡罗模拟。它甚至可以使用与后验分布问题很难样本使用标准随机数生成器。