我是贝叶斯统计和 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 个响应。我该如何进行?如何分别获得这些响应的质量?我可以给一个观察组一个时间。但能力只会针对该反应的观察来计算。但是,需要计算给予该人回复的所有评论的能力。帮我!