当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy stats.rv_discrete用法及代码示例


本文简要介绍 python 语言中 scipy.stats.rv_discrete 的用法。

用法:

class  scipy.stats.rv_discrete(a=0, b=inf, name=None, badvalue=None, moment_tol=1e-08, values=None, inc=1, longname=None, shapes=None, seed=None)#

用于子类化的通用离散随机变量类。

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

参数

a 浮点数,可选

分布支持的下限,默认值:0

b 浮点数,可选

分布支持的上限,默认:加无穷大

moment_tol 浮点数,可选

力矩的通用计算的公差。

values 两个 数组 的元组,可选

(xk, pk) 其中 xk 是整数,pksum(pk) = 1 0 和 1 之间的非零概率。 xkpk 必须具有相同的形状,并且xk 必须是唯一的。

inc 整数,可选

增量支持分布。默认为 1。(其他值未测试)

badvalue 浮点数,可选

结果数组中的值指示违反了某些参数限制的值,默认为 np.nan。

name str,可选

实例的名称。此字符串用于构造分布的默认示例。

longname str,可选

当子类没有自己的文档字符串时,此字符串用作返回的文档字符串的第一行的一部分。注意:longname 的存在是为了向后兼容,不要用于新的子类。

shapes str,可选

分布的形状。例如,“m, n”表示将两个整数作为其所有方法的两个形状参数的分布 如果未提供,将从实例的私有方法_pmf_cdf .

seed {无,int, numpy.random.Generator numpy.random.RandomState },可选

如果种子是无(或np.random), 这numpy.random.RandomState使用单例。如果种子是一个 int,一个新的RandomState使用实例,播种种子.如果种子已经是一个Generator或者RandomState实例然后使用该实例。

注意

该类类似于 rv_continuous 。形状参数是否有效由 _argcheck 方法决定(默认检查其参数是否严格为正)。主要区别如下。

  • 分布的支持是一组整数。

  • 代替概率密度函数,pdf(以及相应的私有_pdf),这个类定义了概率质量函数,pmf(以及相应的私有_pmf.)

  • 没有scale 参数。

  • 方法的默认实现(例如 _cdf )不适用于具有以下无限支持的发行版(即 a=-np.inf ),因此必须重写它们。

要创建新的离散分布,我们将执行以下操作:

>>> from scipy.stats import rv_discrete
>>> class poisson_gen(rv_discrete):
...     "Poisson distribution"
...     def _pmf(self, k, mu):
...         return exp(-mu) * mu**k / factorial(k)

并创建一个实例:

>>> poisson = poisson_gen(name="poisson")

请注意,上面我们以标准形式定义了泊松分布。可以通过向实例的方法提供loc 参数来改变分布。例如,poisson.pmf(x, mu, loc) 将工作委托给 poisson._pmf(x-loc, mu)

概率列表中的离散分布

或者,您可以通过使用 rv_discrete 构造函数的 values 关键字参数来构造在有限值集 xkProb{X=xk} = pk 上定义的任意离散 rv。

深复制/酸洗

如果对分布或冻结分布进行深度复制(pickled/unpickled 等),则任何底层随机数生成器都会随之进行深度复制。这意味着,如果一个发行版在复制之前依赖于单例 RandomState,那么它将在复制后依赖于该随机状态的副本,并且 np.random.seed 将不再控制该状态。

例子

定制离散分布:

>>> import numpy as np
>>> 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))
>>>
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
>>> ax.plot(xk, custm.pmf(xk), 'ro', ms=12, mec='r')
>>> ax.vlines(xk, 0, custm.pmf(xk), colors='r', lw=4)
>>> plt.show()
scipy-stats-rv_discrete-1_00_00.png

随机数生成:

>>> R = custm.rvs(size=100)

属性

random_state

获取或设置生成随机变量的生成器对象。

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.stats.rv_discrete。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。