我正在上一门机器学习课程,我们得到了第一个统计数据——“编程”练习。
所以练习是这样的:
回想一下“亚马逊的两个卖家价格相同”讲座中的故事。一个有 90 条正面评价和 10 条负面评价。另一个2阳性0阴性。你应该向谁购买?” 写下关于可靠性的后验概率(如讲座中所述)。使用数值积分计算 p(x > y|D1, D2)。您可以使用函数scipy.stats.beta.rvs(a,b,size)生成 Beta 分布的样本。
我们从讲座中了解到以下内容:
应用了两个 Beta 二项式模型:p(x|D1) = Beta(x|91, 11) 和 p(y|D2) = Beta(y|3, 1)
计算卖方 1 比卖方 2 更可靠的概率:
p(x > y | D1, D2 ) = ∫∫ [x > y] Beta (x| 91, 11) Beta (y| 3, 1) dx dy
所以我在 Python 中的尝试是这样的:
In [1]: import numpy as np
from scipy import integrate, stats
In [2]: f = lambda x, y: stats.beta.rvs(91, 11, x) * stats.beta.rvs(3, 1, y)
In [3]: stats.probplot(result, x > y)
我收到一条错误消息:
... The maximum number of subdivisions (50) has been achieved....
但最终有一个计算的答案是大约。1.7 . (我们被告知答案是大约 0.7 )
我的问题是:如何计算 [x > y] 部分,意思是:卖家 1 (x) 比卖家 2 (y) 更可靠的概率?