我使用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()等?
答案 0 :(得分: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