[译]贝叶斯生存分析之“权利的游戏”.doc
文本预览下载声明
[译]贝叶斯生存分析之“权利的游戏”
作者: Allen Downey
翻译:Cheng Kun
校对:孙沁(kiki)
去年秋天我在欧林学院讲授贝叶斯统计的入门课。我的学生们正在做一些优秀的项目,我便邀请他们来写出项目结果,作为我博客的特邀文章。其中一支团队将贝叶斯生存分析运用到“冰与火之歌”的人物角色上,,这个系列由乔治?马丁所写。利用前五本书里的数据,他们为每个角色在即将出版的书中的命运,即是生是死,一一作了预测。权力的游戏第五季将在4月12号播出,我们认为现在是个好时机来公开他们的预测报告。贝叶斯生存分析之“权利的游戏
冰与火之歌这一系列被普遍认为“很残酷很极端”。在马丁的笔下,无论好坏老幼,主角配角,谁都有性命之虞。这个和“柯南”齐名的名声可不是空穴来风; 马丁的世界里916个有名字的角色,三分之一已经死亡,更不用说还有很多无名亡魂。在这个报告中,我们来仔细看看小说中的死亡模式,并创建一个贝叶斯模型来预测角色在接下来的两本书里的生存概率。通过使用冰与火之歌的维基数据,我们创建了一个数据集,包括了已出版的小说中所有的916个角色。对每一个角色,我们会统计他们第一次出现的章节和书目,是男性还是女性,是贵族还是平民,他们忠于哪一个家族,以及如果适用的话,在哪一章和哪一本书中死亡。我们使用这些数据来预测哪些角色将在未来的几本书中生存。方法论我们利用第七本书的内容,运用韦伯分布来推断人物的生存概率(韦伯分布:可以利用概率值很容易地推断出它的分布参数,被广泛应用与各种寿命试验的数据处理)。韦伯分布提供了一种风险函数模型,用于衡量在特定的年龄死亡的概率。韦伯分布取决于两个参数,k和lambda(^),这两个参数决定了其曲线的形状。为了估计这些参数,我们从先验分布开始。对于活着的角色,我们记录其k或lambda值,通过比较计算韦伯分布与角色的风险函数,用来预测该角色还活着的事实。对于死去的角色,我们用同样的对比方法来检查参数是如何预测他们的死亡时间。用于更新这一分布的主要代码是:
classGOT(thinkbayes2.Suite, thinkbayes2.Joint):
def Likelihood(self,data, hypo):
Determineshow well a given k and lam
predict thelife/death of a character
age, alive = data
k, lam = hypo
if alive:
prob =1-exponweib.cdf(age, k, lam)
else:
prob =exponweib.pdf(age, k, lam)
return prob
def Update(k, lam,age, alive):
Performsthe Baysian Update and returns the PMFs
of k andlam
joint =thinkbayes2.MakeJoint(k, lam)
suite = GOT(joint)
suite.Update((age,alive))
k = suite.Marginal(0,label=k.label),
lam =suite.Marginal(1, label=lam.label)
return k, lam
defMakeDistr(introductions, lifetimes,k,lam):
Iteratesthrough all the characters for a given k
and lambda. It then updates the k and lambda
distributions
k.label = K
lam.label = Lam
print(Updatingdeaths)
for age in lifetimes:
k, lam = Update(k,lam, age, False)
print(Updatingalives)
for age inintroductions:
k, lam = Update(k,lam, age, True)
return k,lam
对守夜人军团的观察,形成了如图3所示的后验分布。
图3:lambda的分布相当集中,约0.27,但k的分布更加分散。为得出存活曲线,我们参照k和lambda的值,以及每个参数的90%可信区间。再使用原始数据绘图,得出可信区间,根据后验方法绘出存活曲线。琼恩?雪诺使用此分析方法,我们可以开始预测单个角色的存活概率,比如琼恩?雪诺。在《魔龙的狂舞》这本书的结尾,守夜人的生存可信区间(图4)是36%到56%。生存几率并不乐观,但琼恩?雪诺仍然活着。即使琼恩能活到第五
显示全部