【问题标题】:FInd mode of Poisson distribution with SymPy用 SymPy 找到泊松分布的模式
【发布时间】:2020-11-28 20:24:50
【问题描述】:

为什么我在 Poisson pdf 模式下找不到值?

import sympy
from sympy import Symbol, simplify
from sympy.stats import Poisson, density

nobs = Symbol('nobs', positive=True, domain=sympy.Integers)
mu = Symbol('μ', domain=sympy.Reals, positive=True)
poisson_pdf = lambda n, _lambda: density(Poisson('X', _lambda))(n)
simplify(sympy.calculus.util.maximum(poisson_pdf(nobs, mu), mu))

我明白了

Max(oo*(-1)**nobs, (nobs*exp(-1))**nobs/gamma(nobs + 1))

max 的第二个参数是我想要的解决方案。我错过了什么?如果 nobs 是正整数,为什么我会得到一个 gamma 函数?

【问题讨论】:

    标签: sympy distribution poisson


    【解决方案1】:
    1. 泊松的模式并不总是唯一的。 (请参阅Wikipedia,注意图中 λ = 1 和 λ = 4 的模式。)

    2. Gamma(n + 1) == factorial(n) 表示正整数 n。

    【讨论】:

    • 我的n 是正整数:nobs = Symbol('nobs', positive=True, domain=sympy.Integers)
    • 对,参数为整数时模式不唯一。顺便说一句,如果我简化 sympy 的结果,我什至会得到 +oo for nobs,这没有意义,不是吗?
    • 是的,您的n 一个正整数,因此困扰您的伽玛函数一个阶乘。
    • 我不是 Python/SymPy 用户,所以我的回答是基于它报告最多两个术语的事实。我的错,我后来查了一下,发现 oo 在 SymPy 中是无穷大的,你是对的,这对偶数没有意义。看起来像一个错误。好消息是,如果您想要具有速率 lambda 的 Poisson 模式,它是 ceiling(lambda)floor(lambda + 1) - 无需使用 SymPy。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多