【发布时间】:2014-05-23 22:46:33
【问题描述】:
在我继续更彻底地为 Julia 踢轮胎的旅程中,我将返回并重新实施我对一些贝叶斯课程练习的解决方案。上次,我在 Julia 中发现了共轭分布设施,并决定这次使用它们。这部分工作得相当好(顺便说一句,我还没有弄清楚NormalInverseGamma 函数是否有充分的理由不会采用足够的统计数据而不是数据向量,或者它是否还没有实现)。
在这里,我想对来自几个后验分布的样本进行一些比较。我有三个后验样本,我想比较它们的所有排列。我能够置换我的compare 函数的参数:
using Distributions
# Data, the expirgated versions
d1 = [2.11, 9.75, 13.88, 11.3, 8.93, 15.66, 16.38, 4.54, 8.86, 11.94, 12.47]
d2 = [0.29, 1.13, 6.52, 11.72, 6.54, 5.63, 14.59, 11.74, 9.12, 9.43]
d3 = [4.33, 7.77, 4.15, 5.64, 7.69, 5.04, 10.01, 13.43, 13.63, 9.9]
# mu=5, sigsq=4, nu=2, k=1
# think I got those in there right... docs were a bit terse
pri = NormalInverseGamma(5, 4, 2, 1)
post1 = posterior(pri, Normal, d1)
post1_samp = [rand(post1)[1] for i in 1:5000]
post2 = posterior(pri, Normal, d2)
post2_samp = [rand(post2)[1] for i in 1:5000]
post3 = posterior(pri, Normal, d3)
post3_samp = [rand(post2)[1] for i in 1:5000];
# Where I want my permutations passed in as arguments
compare(a, b, c) = mean((a .> b) & (b .> c))
#perm = permutations([post1_samp, post2_samp, post3_samp]) # variables?
#perm = permutations([:post1_samp, :post2_samp, :post3_samp]) # symbols?
perm = permutations(["post1_samp", "post2_samp", "post3_samp"]) # strings?
[x for x in perm] # looks like what I want; now how to feed to compare()?
【问题讨论】:
标签: julia