本文简要介绍 python 语言中 scipy.stats.rv_continuous
的用法。
用法:
class scipy.stats.rv_continuous(momtype=1, a=None, b=None, xtol=1e-14, badvalue=None, name=None, longname=None, shapes=None, seed=None)#
用于子类化的通用连续随机变量类。
rv_continuous
是为连续随机变量构造特定分布类和实例的基类。它不能直接用作发行版。- momtype: 整数,可选
要使用的通用矩计算类型:0 表示 pdf,1(默认)表示 ppf。
- a: 浮点数,可选
分布支持的下限,默认为负无穷大。
- b: 浮点数,可选
分布支持的上限,默认为正无穷大。
- xtol: 浮点数,可选
通用 ppf 的定点计算容差。
- badvalue: 浮点数,可选
结果数组中的值指示违反了某些参数限制的值,默认为 np.nan。
- name: str,可选
实例的名称。此字符串用于构造分布的默认示例。
- longname: str,可选
当子类没有自己的文档字符串时,此字符串用作返回的文档字符串的第一行的一部分。注意:longname 的存在是为了向后兼容,不要用于新的子类。
- shapes: str,可选
分布的形状。例如
"m, n"
用于将两个整数作为其所有方法的两个形状参数的分布。如果未提供,形状参数将从实例的私有方法_pdf
和_cdf
的签名中推断出来。- seed: {无,int,
numpy.random.Generator
,numpy.random.RandomState
},可选 如果种子是无(或np.random), 这
numpy.random.RandomState
使用单例。如果种子是一个 int,一个新的RandomState
使用实例,播种种子.如果种子已经是一个Generator
或者RandomState
实例然后使用该实例。
参数 ::
注意:
分发类实例的公共方法(例如,
pdf
、cdf
)检查它们的参数并将有效参数传递给私有计算方法(_pdf
、_cdf
)。对于pdf(x)
,如果x
在发行版的支持范围内,则它是有效的。形状参数是否有效由_argcheck
方法决定(默认检查其参数是否为严格正数。)子类化
新的随机变量可以通过子类化
rv_continuous
类并至少重新定义_pdf
或_cdf
方法(标准化为位置 0 和比例 1)来定义。如果您的 RV 的正参数检查不正确,那么您还需要重新定义
_argcheck
方法。对于大多数 scipy.stats 分布,支持区间不依赖于形状参数。
x
处于支持区间相当于self.a <= x <= self.b
。如果支撑的任一端点确实依赖于形状参数,则 i) 分布必须实现_get_support
方法; ii) 必须从分发对rv_continuous
初始化程序的调用中省略这些依赖端点。其余方法存在正确但可能较慢的默认值,但为了速度和/或准确性,您可以覆盖:
_logpdf, _cdf, _logcdf, _ppf, _rvs, _isf, _sf, _logsf
默认方法
_rvs
依赖于应用到统一随机变量的 cdf 的倒数_ppf
。为了有效地生成随机变量,或者需要覆盖默认的_ppf
(例如,如果逆 cdf 可以以显式形式表示),或者需要在自定义_rvs
方法中实现采样方法。如果可能,您应该覆盖
_isf
、_sf
或_logsf
。主要原因是为了提高数值精度:例如,生存函数_sf
被计算为1 - _cdf
,如果_cdf(x)
接近一,这可能会导致精度损失。可以被子类覆盖的方法
_rvs _pdf _cdf _sf _ppf _isf _stats _munp _entropy _argcheck _get_support
还有其他(内部和私有)通用方法可用于cross-checking 和调试,但在直接调用时可能适用于所有情况。
关于
shapes
: 子类不需要明确指定它们。在这种情况下,形状将自动从重写方法的签名中推断出来(pdf
,cdf
等等)。如果出于某种原因,您希望避免依赖自省,则可以指定shapes
显式地作为实例构造函数的参数。冻结分布
通常,您必须为分布方法的每次调用提供形状参数(以及可选的位置和比例参数)。
或者,可以调用对象(作为函数)来修复形状、位置和比例参数,返回 “frozen” 连续 RV 对象:
rv_frozen 对象具有相同的方法,但保持给定的形状、位置和比例是固定的
rv = generic(<shape(s)>, loc=0, scale=1):
统计数据
默认情况下使用数值积分计算统计数据。为了速度,您可以使用
_stats
重新定义它:take shape parameters and return mu, mu2, g1, g2
If you can’t compute one of these, return it as None
Can also be defined with a keyword argument
moments
, which is a string composed of “m”, “v”, “s”, and/or “k”. Only the components appearing in string should be computed and returned in the order “m”, “v”, “s”, or “k” with missing values returned as None.
或者,您可以覆盖
_munp
,它采用n
和形状参数并返回分布的 n-th 非中心矩。深复制/酸洗
如果对分布或冻结分布进行深度复制(pickled/unpickled 等),则任何底层随机数生成器都会随之进行深度复制。这意味着,如果一个发行版在复制之前依赖于单例 RandomState,那么它将在复制后依赖于该随机状态的副本,并且
np.random.seed
将不再控制该状态。例子:
要创建新的高斯分布,我们将执行以下操作:
>>> from scipy.stats import rv_continuous >>> class gaussian_gen(rv_continuous): ... "Gaussian distribution" ... def _pdf(self, x): ... return np.exp(-x**2 / 2.) / np.sqrt(2.0 * np.pi) >>> gaussian = gaussian_gen(name='gaussian')
scipy.stats
分布是实例, 所以这里我们子类化rv_continuous
并创建一个实例。有了这个,我们现在有了一个函数齐全的分布,所有相关的方法都由框架自动生成。请注意,上面我们定义了一个标准正态分布,均值和单位方差为零。可以通过使用
loc
和scale
参数来完成分布的移动和缩放:gaussian.pdf(x, loc, scale)
本质上是计算y = (x - loc) / scale
和gaussian._pdf(y) / scale
。random_state
获取或设置生成随机变量的生成器对象。
属性 ::
相关用法
- Python SciPy stats.rv_histogram用法及代码示例
- Python SciPy stats.rv_discrete用法及代码示例
- 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_continuous。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。