吴喜之老师编著的《贝叶斯数据分析——基于R与Python的实现》一书的第二章中,对决策的基本概念做出如下的定义与解释:
考虑一个统计模型,其观测值$x=(x_1,x_2,\dots,x_n)$的分布依赖参数
用
对于估计$q(\vartheta)$的问题:如果采用平方损失函数,则贝叶斯估计为后验均值
虽然定义与过程结论非常直观全面,但也许对于初学者来说,各种各样参数、损失函数、风险函数已经足够让人晕头转向了。
让我们带着这些概念,通过 James O. Berger 所著的《Statistic Decision Theory and Bayesian Analysis》一书第一章中所举的众多例子,来将这些他们一一弄清楚。
决策理论,正如字面意思所展示的一样,是用来进行决策的理论;而统计决策理论是在统计知识存在的情况下进行决策的理论,它揭示了决策问题中涉及的一些不确定性。我们将这些不确定性假定为未知的数值,并将它们用
比如一家药品公司现在正在决定是否要生产一种镇痛药,影响这项决策的众多因素之二有:这款药能在多大比例的人群中证明它的有效性$(\vartheta_1)$;这款药将会占领多大的市场份额$(\vartheta_2)$。
经典统计学的方向是使用样本信息(统计调查中产生的数据)来推断
除了示例信息之外,另外两种类型的信息通常是相关的。
笔者把这两类信息总结为:“瞻前顾后”
-
决策可能产生的后果。
通常,这种后果可以通过每个可能的决定和各种可能的
$\vartheta$ 值下的损失来量化。
统计学家似乎是悲观的生物,他们从损失的角度思考问题。相反,经济学和商业中的决策理论家谈论的是收益(效用)。作为我们主要是统计方向,我们将使用术语的损失函数。请注意,获得只是负损失,所以这两种方法之间没有真正的区别。
亚伯拉罕·瓦尔德(Abraham Wald)首先对将损失函数纳入统计分析进行了广泛的研究;Wald(1950)也回顾了决策理论的早期工作。
在上述药物的例子中,是否将药物推向市场取决于许多$\vartheta_1$、$\vartheta_2$ 和许多其他因素的复杂作用。一个比较简单的情况是,在广告活动中估计使用
-
先验信息。
这是**从统计调查以外的来源获得的关于
$\vartheta_1$ 的信息。**一般来说,先验信息来自于过去涉及类似的$\vartheta_1$ 的经验。例如,在药物的例子中,从不同但相似的止痛药中可能有大量关于$\vartheta_1$ 和$\vartheta_2$ 的信息。
L. J. Savage(1961)给出了一个关于先验信息可能重要性的令人信服的例子。他考虑了以下三个统计实验:
- 一位往茶里加牛奶的女士声称,她能分辨出是将茶和牛奶中的哪一种先倒进杯子里。在进行的十项试验中,她都能正确地判断出哪一种先倒。
- 一位音乐专家声称能够区分一页海顿乐谱和一页莫扎特乐谱。在进行的十次试验中,他每次都做出正确的判断。
- 个喝醉酒的朋友说他能预测掷硬币的结果。在十次测试中,他每次都是正确的。
在三种情况下,未知量
在实验2中,我们没有理由怀疑这个结论。(根据我们之前的知识,这个结果是相当可信的) 然而,在实验3中,我们先前认为这个预测是不可能的(除非相信超感官知觉的存在),这往往会导致我们忽视实验证据,认为这是一种幸运。在实验1中,我们无法判定,因为不同的人根据他们之前对这一主张的可信性的信任程度会得出不同的结论。在这三种相同的统计情况下,先验信息显然不能被忽略。
正式寻求利用先验信息的统计学方法被称为贝叶斯分析(以贝叶斯(1763)命名)。贝叶斯分析和决策理论很自然地结合在一起,部分原因是它们都有利用非实验信息来源的共同目标,部分原因是它们之间有着深刻的理论联系;因此,我们将在书中强调贝叶斯决策理论。
然而,在这里需要注意的是,现实中也存在着广泛发展的非贝叶斯决策理论和广泛发展的非决策理论贝叶斯观点。
影响决策过程的未知数
决策在文献中更常被称为行动。特定的行动用
如引言中所述,决策理论的一个关键元素是损失函数。如果采取某一特定行动
当进行统计调查以获得关于
当然,**$X$ 的概率分布取决于未知的自然状态
密度函数积分得到概率分布函数
如果
在上述部分提及的第三类信息是关于
下面列举出使用上述术语的三个例子。
例1. 在介绍的药物例子中,假设需要估计
为了获得
例2. 一家无线电公司收到了一批晶体管。单独检查每个晶体管的性能花费的成本太贵了,所以使用抽样计划来检查整个装运。从发货的晶体管中随机选择n个样品并进行测试。根据样品中有缺陷的晶体管数量
公司确定他们的损失函数为:$l(\vartheta,a_1)=10\vartheta,l(\vartheta,a_2)=1$ 。当
这家无线电公司过去曾多次收到同一供货公司寄来的晶体管。因此,他们有大量关于过去发货的值
例3. 投资者决定是否购买风险较高的债券。如果投资者购买债券,到期时可以赎回净收益500美元。然而,债券可能会违约,在这种情况下,最初的1000美元投资将会损失。如果投资者把他的钱放在一个“安全”的投资中,他将保证在同一时期获得300美元的净收益。投资者估计违约概率为0.1。
这里$A={a_1,a_2}$ ,$a_1$表示买债券,$a_2$表示不买。同样,$\Theta={\theta_1,\theta_2}$,其中
| -500 | -300 | |
| 1000 | -300 |
当
注意,在本例中没有来自相关统计实验的样本信息。这样的问题称为无数据问题。
从上面的例子中,不是每个问题都有明确定义的损失函数和明确的先验信息。在许多问题中,这些量是非常模糊的,甚至是非唯一的。这方面最重要的例子是统计推理问题。在统计推断中,目标不是立即做出决定,而是提供统计证据的“摘要”,以便各种未来的“用户”能够很容易地将这些证据纳入他们自己的决策过程中。因此,像上文提及的光速问题中,一个测量光速的物理学家不可能知道他的结果的使用者将会有多少损失。
由于这一点,许多统计学家使用“统计推断”作为盾牌,以避免考虑损失和事先信息。这是一个错误,原因有几个。首先,**应该(理想地)构建来自统计推断的报告,以便在个人决策中很容易地加以利用。**我们将看到许多经典的推论在这方面是失败的。
在推理中考虑损失和先验信息的第二个原因是,调查人员很可能掌握这些信息;**他通常会非常清楚他的推论可能被用于何处,并且可能对情况有相当多的先验知识。**因此,在他的分析中提出这些资料几乎是必要的,尽管应当小心地将“主观”和“客观”信息清楚地分开。
在推理中涉及损失和先验信息的最后一个原因是,推理的选择(不仅仅是数据总结)**可以被看作是一个决策问题,**在这个问题中,行动空间是所有可能的潜在语句的集合,并且使用了一个反映知识传递成功的损失函数。这种“推论损失”后续讨论。同样,可以构造“推理先验”,并用于推理中令人信服的优势。
虽然上述原因证明了将损失函数和先验信息具体纳入推断的合理性,但决策理论即使在这种纳入被禁止的情况下也是有用的。这是因为对于某些形式的损失函数,许多标准推理标准可以正式地再现为决策理论标准。我们将会遇到许多例子来说明这一点,以及使用决策理论机制来解决推理问题的价值。
正如前文中提到的,我们将在存在不确定性的情况下进行决策。因此,实际发生的损失
从直观的角度来看,最自然的预期损失是涉及
定义 如果 $\pi^(\theta)$ 为决策时 $\theta$ 的可信概率分布,则行动 $a$ 的贝叶斯期望损失为:
$$
\rho(\pi^,a)=E^{\pi^}L(\theta,a)=
\int L(\theta,a)\mathrm{d}F^{\pi^}(\theta)
$$
例 镇痛药的销售(续).假设没有获得任何数据,因此
非贝叶斯决策理论学派,今后将被称为频率学派或古典学派,采用了一种完全不同的、基于随机变量 $X $ 上均值的预期损失。定义这种预期损失的第一步,是定义一个决策规则(或决策程序)。
定义 决策规则$\delta(x)$ 是一个从X到A的映射(函数)。(我们假定引入的函数是适合测量的)如果
例 镇痛药的销售(续).对于该问题的情况,$\delta(x)=\frac{x}{n}$ 是估计 的标准决策规则。(在估计问题中,一个决策规则通常被称作估计量。)这个估计量并没有用到题目中给的损失函数或者先验信息。
**例 晶体管的检查(续)**决策规则: $$ \delta(x)= \begin{cases} a_1 &if\ x/n\leq0.5\ a_2 &if\ x/n>0.5 \end{cases} $$ 是这个问题的标准规则类型。
频率主义者的决策理论家试图评估,对于每个$\theta$,如果他在问题中用不同的
在某些决策情况下,随机采取行动是必要的。当遇到一个聪明的对手时,这种情况最常见。举个例子,如下面这个叫做“匹配硬币”的游戏。
例 (匹配硬币)。你和你的对手要同时揭开一枚硬币。如果两个硬币匹配(即都是正面或反面),你从对手那里赢得1美元。如果硬币不匹配,你的对手将从你那里赢得1美元。提供给你的行动
| -1 | 1 | |
| 1 | -1 |
定义 随机决策规则 $\delta^(x,·)$ 是对每个 $x$ ,一个在A上可能的概率分布,如果x被观测到,$\delta^(x,A)$ 是一个在
一个随机决策规则 $\delta^(x,·)$ 是,对于每一个 $x$ , A 的概率分布,其解释是,如果 $x$ 被观察到,$\delta^(x,A)$ 是
非随机决策规则将被视为随机规则的一种特殊情况,因为它们与随机规则相对应,对于每个
接下来简要介绍实际做出决策或选择决策规则的主要方法。
当我们可以对每个
选择一个使 $\rho(\pi^,a)$ 达到最小的 $a\in A$ ,这样的行动将被称为贝叶斯行动,表示为 $a^{\pi^}$
例 镇痛药的销售(续).在之前我们推导过:
$$
\begin{flalign*}
\rho(\pi,a)&=\begin{cases}
0.15-a &if\ a\leq0.1\
15a^2-4a+0.3&if\ 0.1\leq a\leq 0.2\
2a-0.3 &ifa\geq0.2\
\end{cases}
\end{flalign*}
$$
微积分证明了这个函数在
例 债券购买(续).
在之前我们推导过:$\rho(\pi,a_1)=-350$,$\rho(\pi,a_2)=-300$ 显然
我们在前文中提到,使用风险函数来选择决策规则是困难的,因为通常有许多可接受的决策规则(即不能在风险方面占主导地位的决策规则)。为了选择特定的规则使用,必须引入附加的原则。在经典统计学中,有许多这样的原则用于发展统计过程:最大似然性、无偏性、最小方差和最小二乘原则等等。在决策理论中,也有一些可能的原则可以使用;最重要三条的是贝叶斯风险原理,极大极小原理和不变性原理。本节将阐述这三个原则的基本目标。
可以看出,另一种包含先验分布
贝叶斯风险原理 当出现下列情况时,相比于决策
例 债券购买(续)。因为这是一个没有数据的问题,所以决策规则就是简单的动作,而风险函数就是简单的损失函数。因此贝叶斯风险就是贝叶斯期望损失,由此我们解决了问题。
使用极大极小原理来完全分析问题通常需要考虑随机决策规则。因此让* E沪随机规则,并考虑参数: $$ sup\ R(\theta,\delta^) $$ 这个代表,在规则 $\delta^$ 被使用下,可能发生的最坏情况。如果想要让它不受可能出现的最坏的自然状态的影响,那么就需要:
极大极小原理 当出现下列情况时,相比于决策
有时,根据极大极小原则确定最佳非随机规则是很有趣的。如果存在这种最佳规则,则称其为极大极小非随机规则(在无数据问题中被称为极小极大非随机行动)。
**例 债券购买(续)**我们可以很容易得到:
$$
sup\ L(\theta,a_1)=max{-500,1000}=1000\
sup\ L(\theta,a_2)=max{-300,-300}=-300
$$
因此
不变性原理是说,如果两个问题具有相同的形式结构(即具有相同的样本空间、参数空间、密度和损失函数),那么每个问题应采用相同的判定规则。对于一个给定的问题,这一原理是通过考虑问题的变换(例如,度量单位的尺度变化),从而导致结构相同的变换问题。禁止原始问题和转换问题中的决策规则是相同的,这导致了对所谓“不变”决策规则的限制。这类规则通常足够小,因此将存在“最佳不变”决策规则。
Allen Downey B.在所著的《Think Bayes-O'Reilly Media (2013)》一书中,使用Python代码对贝叶斯决策理论进行了应用。应用基于美国的一档名为 The Price is Right problem 的综艺节目。
2007年11月1日,两位名叫
对于一个“贝叶斯思考者”来说,这个场景暗示了几个问题:
-
在看到奖品前,参赛者对橱窗里展品的价格应该有什么先验的想法?
-
看完奖品后,参赛者应该如何更新自己的想法?
-
根据后验分布,参赛者应该出价多少?
第三个问题展示了贝叶斯分析的一个常见用途:决策分析。给定一个后验分布,我们可以选择使参赛者的期望收益最大化的报价。
为了得到一个预先的价格分布,我们需要利用以前的数据。幸运的是,该剧的粉丝们有详细的记录,包括2011和2012赛季的每一个展柜的价格以及参赛选手的出价。
/*通过下列Python代码可绘制展柜1、2的价格分布图*/
prices = ReadData()
pdf = thinkbayes.EstimatedPdf(prices)
low, high = 0, 75000
n = 101
xs = numpy.linspace(low, high, n)#返回一个数组,其中包含n个在low和high之间等距的元素
pmf = pdf.MakePmf(xs)
class EstimatedPdf(Pdf):
def __init__(self, sample):
self.kde = scipy.stats.gaussian_kde(sample)
def Density(self, x):
return self.kde.evaluate(x)
class GaussianPdf(Pdf):
def __init__(self, mu, sigma):
self.mu = mu
self.sigma = sigma
def Density(self, x):
return scipy.stats.norm.pdf(x, self.mu, self.sigma)
class Pdf(object):
def Density(self, x):
raise UnimplementedMethodException()
def MakePmf(self, xs):
pmf = Pmf()
for x in xs:
pmf.Set(x, self.Density(x))
pmf.Normalize()
return pmf
可以看出,这两个展柜的普遍价格都在2.8万美元左右,但第一个展柜在5万美元处有小型集中分布,第二个展柜的价格在7万美元处有小型集中分布。
这些分布基于实际数据,但已被高斯核密度估计(KDE)平滑。
核密度估计(KDE)是一种算法——可以找到一个适当的平滑的概率密度函数(PDF)来拟合样本数据。
图1中的概率密度估计了可能的价格分布。如果你是这个节目的选手,你可以用这个分布来量化你之前对每个展柜价格的先验信息(在你看到奖品之前)。
为了更新这些先验信息,我们必须回答以下问题:
-
我们应该考虑哪些数据?我们应该如何量化这些数据?
-
我们能不能计算一个似然函数,也就是说,对于每个假设的价格,我们能计算出它们出现的条件可能性吗?
为了回答这些问题,我们把选手作为一个具有已知误差特征的价格猜测工具进行建模。换句话说,当选手看到展柜中奖品时,他会逐一猜测每个奖品的价格,然后把价格加起来,我们把这个叫做总猜测。
- “如果实际价格是price,那么参赛者的估计是guess的可能性有多大?”
定义:$error = price - guess$
- “参赛者的估计出错的可能性有多大?”
定义:$diff = price - bid$
当
我们还可以看到竞价是有偏见的;也就是说,它们更有可能太低而不是太高。考虑到游戏规则(后出价的选手给出的价格不得高于前面的人),这是有道理的。
最后,我们可以利用这个分布来估计选手猜测的可靠性。
这一步有点棘手,因为我们并不知道参赛者的猜测($guess$);我们只知道他们出价($bid$)是多少。所以我们要做出假设:误差($error$)服从是高斯分布,均值为0,方差与
我们用
这个估计并不完美,因为竞争者的报价有时是战略性的;例如,如果玩家2认为玩家1出价过高,玩家2可能会出很低的价。在这种情况下,$diff$ 不能反映
$error$ 。如果这种情况经常发生,$diff$ 的方差可能会过高估计$error$ 的方差。尽管如此,在一定误差的范围内,作者认为这是一个合理的建模决策。
另一种方法是,准备上节目的人可以通过观看往期节目,记录下他们的猜测($guess$)和实际价格($price$)进而估计他们自己的误差($error$)分布
现在我们可以写出似然函数了。
class Price(thinkbayes.Suite):
#pmf代表先验分布,player属于之前定义的Player对象
def __init__(self, pmf, player):
thinkbayes.Suite.__init__(self, pmf)
self.player = player
def Likelihood(self, data, hypo):
price = hypo
guess = data
error = price - guess
#hypo是橱窗的假设价格。data是选手对价格的最佳猜测。error是差异,like是假设下的data的可能性。
like = self.player.ErrorDensity(error)
#ErrorDensity的工作原理是在给定的error值上计算它的概率密度分布
return like
结果($like$)是一个概率密度值,不是一个概率值。但这样做不会对结果产生任何不良影响,因为它是跟概率成比例的量,当我们对后验分布进行归一化时,它被约去了。
因此,我们可以说,概率密度是一种很好的可能性。
#Player提供了一种方法,取参赛者的猜测(guess)并计算后验分布:
class Player
def MakeBeliefs(self, guess):
pmf = self.PmfPrice()
#PmfPrice生成一个离散的近似的价格的PDF,我们使用它来构建先验。
self.prior = Price(pmf, self)
self.posterior = self.prior.Copy()
self.posterior.Update(guess)
#Update为每个假设调用Likelihood,将先验乘以可能性,并重新标准化。
# class Player
n = 101
price_xs = numpy.linspace(0, 75000, n)
#PmfPrice使用MakePmf(), 它按一系列值计算pdf_price:
def PmfPrice(self):
return self.pdf_price.MakePmf(self.price_xs)
图3显示了关于人们对实际价格的先验和后验信念。
后验分布向左偏移因为人们的猜测是在先前范围的底端。
在某种程度上,这个结果是有道理的。最可能的先验价值是27750美元,最好的猜测是20000美元,而后验的均值介于两者之间:25096美元。
在另一个层面上,你可能会发现这个结果很奇怪,因为它表明,如果你认为价格是2万美元,那么你应该相信价格是2.4万美元。
要解决这个明显的矛盾,请记住,您是在结合两种信息来源,关于过去展览的历史数据和对您看到的奖品的猜测。
我们**将历史数据视为先验数据,并根据您的猜测更新它,但我们也可以同样地将您的猜测作为先验数据,并根据历史数据更新它。**如果你这样想,也许最可能的后验价格就不是你最初的猜测就不那么令人惊讶了。
对计算最优报价生成一个类:GainCalculator
class GainCalculator(object):
def __init__(self, player, opponent):
self.player = player
self.opponent = opponent
#定义EXpectedGains计算每一种报价以及每一个报价的预期收益
def ExpectedGains(self, low=0, high=75000, n=101):
bids = numpy.linspace(low, high, n)
#报价在区间(low,high)中取值,个数为n
gains = [self.ExpectedGain(bid) for bid in bids]
return bids, gains
#定义EXpectedGain计算给定报价的预期收益
def ExpectedGain(self, bid):
suite = self.player.posterior
total = 0
for price, prob in sorted(suite.Items()):
gain = self.Gain(bid, price)
total += prob * gain
return total
上图显示了两个玩家的结果,基于玩家1的最佳猜测是2万美元,玩家2的最佳猜测是4万美元。
- 玩家1的最优出价是21000美元,预期回报率接近16700美元。
在这种情况下(结果是不寻常的),最优出价实际上比竞争者的最佳猜测要高。
- 玩家2的最优出价是31500美元,预期回报率接近19400美元。
这是最优出价低于最佳猜测的典型情况。
贝叶斯估计的特征之一是其结果以后验分布的形式出现。经典估计通常生成一个单点估计或置信区间,如果估计是过程的最后一步,这就足够了,但如果您想使用一个估计作为后续分析的输入,点估计和区间通常没有多大帮助。
在这个例子中,我们使用后验分布来计算最优报价。给定出价的回报是不对称的和不连续的(如果你出价过高,你就会损失),所以很难用分析的方法解决这个问题。但是计算起来相对简单。
尝试贝叶斯的新手常常试图通过计算均值或最大似然估计来总结后验分布。这些总结可能很有用,但如果你只需要这些,那么可能一开始你就不需要贝叶斯方法。
贝叶斯方法是最有用的,你可以将后验分布带入分析的下一个步骤来执行一些决策分析,就像上述我们对《猜价格》节目所做的分析。



