首页 文章

Python scipy - 指定自定义离散分布

提问于
浏览
5

我使用scipy.stats的各种连续分布(例如norm) . 所以如果我想找到P(Z <0.5),我会这样做:

from scipy.stats import norm
norm(0, 1).cdf(0.5)  # Z~N(0,1)

是否有工具(scipy.stats或statsmodels或其他)可用于描述离散分布,然后计算CDF / CMF等?我可以自己编写代码,但我想知道是否存在某些内容,例如:

pdf(x)= 1/3,x = 1,2,3;否则0

然后我可以构造2个向量x = [1,2,3],p = [1 / 3,1 / 3,1 / 3]并将它们输入到一个库类中,然后提供.cdf()等?

1 回答

  • 4

    我猜你在这里找 scipy.stats.rv_discrete . 来自docs

    rv_discrete是为离散随机变量构造特定分布类和实例的基类 . 它还可以用于构造由支持点列表和相应概率定义的任意分布 .

    来自docs的示例:

    from scipy import stats
    xk = np.arange(7)
    pk = (0.1, 0.2, 0.3, 0.1, 0.1, 0.0, 0.2)
    custm = stats.rv_discrete(name='custm', values=(xk, pk))
    

    你的例子:

    In [1]: import numpy as np
    
    In [2]: from scipy import stats
    
    In [3]: custm = stats.rv_discrete(name='custm', values=((1, 2, 3), (1./3, 1./3, 1./3)))
    
    In [4]: custm.cdf(2.5)
    Out[4]: 0.66666666666666663
    

相关问题