代码之家  ›  专栏  ›  技术社区  ›  Samuel Lampa

用MATLAB中的PRTools计算未知误分类的后验分布

  •  2
  • Samuel Lampa  · 技术社区  · 16 年前

    我用的是 PRTools

    我有以下细节:

    • N:测试样本总数
    • 每种类型的错误分类

    计算并绘制错误分类的未知概率的贝叶斯后验分布(表示为q),即作为q本身的概率密度函数(因此,P(q)将绘制在q上,从0到1)。

    我有(数学公式,不是matlab代码!):

    Posterior = Likelihood * Prior  / Normalization constant = 
    P(q|k,N)  = P(k|q,N)   * P(q|N) / P(k|N)
    

    prior设置为1,所以我只需要计算似然和归一化常数。

    P(k|q,N) = B(N,k) * q^k * (1-q)^(N-k)
    

    ... 所以归一化常数就是上面后面的积分,从0到1:

    P(k|N) = B(N,k) * integralFromZeroToOne( q^k * (1-q)^(N-k) )
    

    我听说归一化常数的积分应该可以作为一个级数来计算。。。比如:

    k!(N-k)! / (N+1)!
    

    对吗(我有一些关于这个系列的课堂讲稿,但是我不知道它是用于规范化常数积分,还是用于错误分类(q)的总体分布

    此外,提示是受欢迎的,因为如何实际计算这一点(阶乘很容易产生截断错误,对吧。。。以及如何实际计算最终图(q上的后验分布,从0到1)。

    2 回复  |  直到 16 年前
        1
  •  1
  •   Justin Peel    16 年前

    我真的没有做太多的贝叶斯后验分布(不是一段时间),但我会尽力帮助你所给的。第一,

    k!(N-k)! / (N+1)! = 1 / (B(N,k) * (N + 1))
    

    其次,根据Mathematica的说法,

    integralFromZeroToOne( q^k * (1-q)^(N-k) ) = pi * csc((k-N)*pi) * Gamma(1+k)/(Gamma(k-N) * Gamma(2+N))
    

    哪里 csc() Gamma() 是 gamma function . 但是,Gamma(x)=(x-1)!我们马上就用。问题是底部有一个函数Gamma(k-N),k-N为负。然而 reflection formula 将帮助我们做到这一点,以便我们最终:

    = (N-k)! * k! / (N+1)!
    

    显然,你的笔记是对的。

        2
  •  0
  •   vad    16 年前

    让 q k 中的mis分类 N 运行方式:

    然后你需要假设一个合适的先验知识 在0和1之间有界。上面的共轭先验是beta分布。如果 q ~ Beta(a,b) 而后者也是β分布。请参考以下信息:

    f(q |-)~β(a+k,b+N-k)

    希望有帮助。

    推荐文章