本文简要介绍 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
是整数,pk
是sum(pk) = 1
0 和 1 之间的非零概率。xk
和pk
必须具有相同的形状,并且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
关键字参数来构造在有限值集xk
和Prob{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()
随机数生成:
>>> R = custm.rvs(size=100)
random_state
获取或设置生成随机变量的生成器对象。
属性 ::
相关用法
- Python SciPy stats.rv_histogram用法及代码示例
- Python SciPy stats.rv_continuous用法及代码示例
- Python SciPy stats.rvs_ratio_uniforms用法及代码示例
- Python SciPy stats.rayleigh用法及代码示例
- Python SciPy stats.rankdata用法及代码示例
- Python SciPy stats.random_table用法及代码示例
- Python SciPy stats.recipinvgauss用法及代码示例
- Python SciPy stats.rel_breitwigner用法及代码示例
- Python SciPy stats.rice用法及代码示例
- Python SciPy stats.random_correlation用法及代码示例
- Python SciPy stats.ranksums用法及代码示例
- Python SciPy stats.relfreq用法及代码示例
- Python SciPy stats.randint用法及代码示例
- Python SciPy stats.rdist用法及代码示例
- Python SciPy stats.anderson用法及代码示例
- Python SciPy stats.iqr用法及代码示例
- Python SciPy stats.genpareto用法及代码示例
- Python SciPy stats.skewnorm用法及代码示例
- Python SciPy stats.cosine用法及代码示例
- Python SciPy stats.norminvgauss用法及代码示例
- Python SciPy stats.directional_stats用法及代码示例
- Python SciPy stats.invwishart用法及代码示例
- Python SciPy stats.bartlett用法及代码示例
- Python SciPy stats.levy_stable用法及代码示例
- Python SciPy stats.page_trend_test用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.stats.rv_discrete。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。