我是贝叶斯统计和pymc3的新手。在我的问题中,有工人和审稿人。工人提出了一系列问题。工人给出的答案由审阅者审阅。 因此,复习是可观察的变量。基于这些观察,我需要计算响应的质量,工作人员的能力和审阅者的偏见。 评论为二进制正确(布尔值1)和错误(布尔值0) 我使用pymc3创建了以下模型,并使用find_map函数计算所需的变量。
##function
def predict(ob):
with pm3.Model() as last:
quality_precision = pm3.Gamma('quality_precision', 2, 1)
ability = pm3.Normal(name="ability", mu=0, sd=10)
quality = pm3.Normal(name='quality', mu=ability, sd=1 / np.sqrt(quality_precision))
reviewer_bias= pm3.Normal(name="reviewer_bias", mu=0, sd=5)
iscorrect = pm3.Binomial('iscorrect',n=1, p=sigmoid(quality + reviewer_bias), observed=ob)
start = pm3.find_MAP()
return start
##function call
print(predict([0,1,1,1,1]))
当我对特定响应进行观察时,它正在计算该响应的质量,即工人的能力。它还为审阅者偏倚提供了一个值。但是,如果观察结果像[0,1,1,1,1],则来自多个审阅者。如何计算每个审阅者的偏见?
如果我对2个响应的观察都再次出现。我该如何进行?如何分别获得这些响应的质量?我可以给一个观察时间定一个时间。但是,能力将仅针对该响应的观察进行计算。但是需要计算针对该人回复的所有评论的能力。救救我!