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, extradoc=None, seed=None)[源代码]

用于子类化的通用连续随机变量类。

rv_continuous 是构造连续随机变量的特定分布类和实例的基类。它不能直接用作分发。

参数
momtype整型,可选

要使用的常规力矩计算类型:pdf为0,ppf为1(默认值)。

a浮动,可选

分布的支持下限,默认为负无穷大。

b浮动,可选

分布支持的上界,默认为正无穷大。

xtol浮动,可选

常规PPF的定点计算公差。

badvalue浮动,可选

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

name字符串,可选

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

longname字符串,可选

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

shapes字符串,可选

分布的形状。例如 "m, n" 用于将两个整数作为其所有方法的两个形状参数的分布。如果未提供,将从私有方法的签名中推断形状参数, _pdf_cdf 实例的。

extradoc字符串,可选,已弃用

当子类没有自己的docstring时,此字符串用作返回的docstring的最后部分。注: extradoc 存在是为了向后兼容,不要用于新的子类。

seed :{无,整型, numpy.random.Generator{无,整型,

如果 seed 为无(或 np.random )、 numpy.random.RandomState 使用的是Singleton。如果 seed 是一个整型、一个新的 RandomState 实例,其种子设定为 seed 。如果 seed 已经是一个 GeneratorRandomState 实例,则使用该实例。

注意事项

分发类的实例的公共方法(例如, pdfcdf )检查它们的参数,并将有效参数传递给私有的计算方法 (_pdf_cdf )。为 pdf(x)x 如果它在发行版的支持范围内,则有效。形状参数是否有效由 _argcheck 方法(默认情况下检查其参数是否严格为正)。

Subclassing

新的随机变量可以通过将 rv_continuous class and re-defining at least the _ 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

还有其他(内部和私有)泛型方法可用于交叉检查和调试,但在直接调用时可能在所有情况下都有效。

关于……的注解 shapes :子类不需要显式指定它们。在这种情况下, shapes 将从重写方法的签名中自动推导出 (pdfcdf 等)。如果出于某种原因,您希望避免依赖内省,则可以指定 shapes 显式作为实例构造函数的参数。

冻结的分布

通常,您必须为每次调用分布方法提供形状参数(以及可选的位置和比例参数)。

或者,可以调用该对象(作为函数)来固定返回“冻结的”连续RV对象的形状、位置和缩放参数:

RV=一般(<Shape(S)>,loc=0,scale=1)

rv_frozen 对象使用相同的方法,但保持给定的形状、位置和比例固定

Statistics

默认情况下,使用数值积分计算统计信息。对于速度,您可以使用以下命令重新定义 _stats

  • 获取形状参数并返回µ、MU2、G1、G2

  • 如果您不能计算其中的一个,则将其作为None返回

  • 也可以使用关键字参数定义 moments ,它是由“m”、“v”、“s”和/或“k”组成的字符串。应该只计算出现在字符串中的组件,并以“m”、“v”、“s”或“k”的顺序返回,缺少的值返回为None。

或者,您可以重写 _munp ,这需要 n 和形状参数,并返回分布的第n次非中心矩。

示例

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

>>> 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 并创建一个实例。这样,我们现在就有了一个功能齐全的发行版,所有相关的方法都是由框架自动生成的。

请注意,上面我们定义了一个标准正态分布,均值和单位方差均为零。分布的平移和缩放可以通过使用 locscale 参数: gaussian.pdf(x, loc, scale) 本质上是计算 y = (x - loc) / scalegaussian._pdf(y) / scale

属性
random_state

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

方法:

rvs \(*args, * *kwds)

给定类型的随机变量。

pdf \(X,*args, * *kwds)

给定房车x处的概率密度函数。

logpdf \(X,*args, * *kwds)

给定RV的x处的概率密度函数的对数。

cdf \(X,*args, * *kwds)

给定房车的累积分布函数。

logcdf \(X,*args, * *kwds)

给定房车x处的累积分布函数的对数。

sf \(X,*args, * *kwds)

生存函数(1- cdf )在给定RV的x处。

logsf \(X,*args, * *kwds)

给定房车的生存函数的日志。

ppf \(q,*args, * *kwds)

百分点数函数(与 cdf )在给定房车的Q。

isf \(q,*args, * *kwds)

逆生存函数(逆 sf )在给定房车的Q。

moment \(n,*args, * *kwds)

n阶非中心分布矩。

stats \(*args, * *kwds)

给定房车的一些统计数据。

entropy \(*args, * *kwds)

房车的微分熵。

expect \([func, args, loc, scale, lb, ub, ...] )

通过数值积分计算函数相对于分布的期望值。

median \(*args, * *kwds)

分布的中位数。

mean \(*args, * *kwds)

分布的平均值。

std \(*args, * *kwds)

分布的标准差。

var \(*args, * *kwds)

分布的方差。

interval \(字母,*args, * *kwds)

中位数附近面积相等的置信区间。

__call__ \(*args, * *kwds)

冻结给定参数的分布。

fit \(数据,*args, * *kwds)

从数据中返回形状(如果适用)、位置和比例参数的估计值。

fit_loc_scale \(数据,*参数)

使用一阶矩和二阶矩从数据中估计锁定和缩放参数。

nnlf \(θ,x)

负对数似然函数。

support \(*args, * *kwargs)

对发行版的支持。