SciPy-1-12-中文文档-二十三-
SciPy 1.12 中文文档(二十三)
scipy.stats.laplace
原文链接:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.laplace.html#scipy.stats.laplace
scipy.stats.laplace = <scipy.stats._continuous_distns.laplace_gen object>
拉普拉斯连续随机变量。
作为rv_continuous
类的一个实例,laplace
对象继承了一组通用方法(下面列出了完整列表),并用特定于此特定分布的细节来完善它们。
注意
laplace
的概率密度函数为
[f(x) = \frac{1}{2} \exp(-|x|)]
对于实数 (x)。
上述概率密度在“标准化”形式中定义。要移动和/或缩放分布,请使用loc
和scale
参数。具体而言,laplace.pdf(x, loc, scale)
与laplace.pdf(y) / scale
等价,其中y = (x - loc) / scale
。请注意,移动分布的位置并不使其成为“非中心”分布;某些分布的非中心推广可在单独的类中使用。
示例
>>> import numpy as np
>>> from scipy.stats import laplace
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个时刻:
>>> mean, var, skew, kurt = laplace.stats(moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(laplace.ppf(0.01),
... laplace.ppf(0.99), 100)
>>> ax.plot(x, laplace.pdf(x),
... 'r-', lw=5, alpha=0.6, label='laplace pdf')
或者,可以调用分布对象(作为函数)来固定形状、位置和比例参数。这将返回一个“冻结”的随机变量对象,其中给定参数被固定。
冻结分布并显示冻结的pdf
:
>>> rv = laplace()
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查cdf
和ppf
的准确性:
>>> vals = laplace.ppf([0.001, 0.5, 0.999])
>>> np.allclose([0.001, 0.5, 0.999], laplace.cdf(vals))
True
生成随机数:
>>> r = laplace.rvs(size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, loc=0, scale=1) | 生存函数(也定义为1 - cdf ,但sf有时更精确)。 |
logsf(x, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, loc=0, scale=1) | 百分点函数(cdf 的逆——百分位数)。 |
isf(q, loc=0, scale=1) | 逆生存函数(sf 的逆)。 |
moment(order, loc=0, scale=1) | 指定阶数的非中心时刻。 |
stats(loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)、峰度(‘k’)。 |
entropy(loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 通用数据的参数估计。详见scipy.stats.rv_continuous.fit以获取关键字参数的详细文档。 |
**expect(func, args=(), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 关于分布的函数(一个参数)的期望值。 |
median(loc=0, scale=1) | 分布的中位数。 |
mean(loc=0, scale=1) | 分布的均值。 |
var(loc=0, scale=1) | 分布的方差。 |
std(loc=0, scale=1) | 分布的标准差。 |
interval(confidence, loc=0, scale=1) | 中位数周围面积相等的置信区间。 |
scipy.stats.laplace_asymmetric
scipy.stats.laplace_asymmetric = <scipy.stats._continuous_distns.laplace_asymmetric_gen object>
一个非对称拉普拉斯连续随机变量。
作为rv_continuous
类的一个实例,laplace_asymmetric
对象从中继承了一系列通用方法(完整列表见下文),并且以特定于此特定分布的详细信息来补充它们。
另请参见
laplace
拉普拉斯分布
注意
laplace_asymmetric
的概率密度函数为
[\begin{split}f(x, \kappa) &= \frac{1}{\kappa+\kappa^{-1}}\exp(-x\kappa),\quad x\ge0\ &= \frac{1}{\kappa+\kappa^{-1}}\exp(x/\kappa),\quad x<0\\end{split}]
对于(-\infty < x < \infty),(\kappa > 0)。
laplace_asymmetric
以 kappa
作为形状参数对(\kappa)进行参数化。对于(\kappa = 1),它与拉普拉斯分布相同。
上述概率密度在“标准化”形式中定义。要移动和/或缩放分布,请使用loc
和scale
参数。具体而言,laplace_asymmetric.pdf(x, kappa, loc, scale)
与laplace_asymmetric.pdf(y, kappa) / scale
完全等价,其中y = (x - loc) / scale
。请注意,移动分布的位置并不会使其成为“非中心”分布;某些分布的非中心推广可以在单独的类中找到。
注意一些参考文献的比例参数是 SciPy 的scale
的倒数。例如,参数化中的(\lambda = 1/2)相当于使用laplace_asymmetric
中的scale = 2
。
参考文献
[1]
“非对称拉普拉斯分布”,维基百科 en.wikipedia.org/wiki/Asymmetric_Laplace_distribution
[2]
Kozubowski TJ 和 Podgórski K. 拉普拉斯分布的多变量和非对称推广,计算统计学 15, 531–540 (2000)。DOI:10.1007/PL00022717
示例
>>> import numpy as np
>>> from scipy.stats import laplace_asymmetric
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> kappa = 2
>>> mean, var, skew, kurt = laplace_asymmetric.stats(kappa, moments='mvsk')
显示概率密度函数(pdf
)
>>> x = np.linspace(laplace_asymmetric.ppf(0.01, kappa),
... laplace_asymmetric.ppf(0.99, kappa), 100)
>>> ax.plot(x, laplace_asymmetric.pdf(x, kappa),
... 'r-', lw=5, alpha=0.6, label='laplace_asymmetric pdf')
或者,可以通过调用分布对象(作为函数)来固定形状、位置和比例参数。这将返回一个“冻结”的 RV 对象,其中给定的参数被固定。
冻结分布并显示冻结的pdf
:
>>> rv = laplace_asymmetric(kappa)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查cdf
和ppf
的准确性:
>>> vals = laplace_asymmetric.ppf([0.001, 0.5, 0.999], kappa)
>>> np.allclose([0.001, 0.5, 0.999], laplace_asymmetric.cdf(vals, kappa))
True
生成随机数:
>>> r = laplace_asymmetric.rvs(kappa, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
Methods
rvs(kappa, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, kappa, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, kappa, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, kappa, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, kappa, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, kappa, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但有时 sf 更准确)。 |
logsf(x, kappa, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, kappa, loc=0, scale=1) | 百分位点函数(cdf 的反函数 — 百分位数)。 |
isf(q, kappa, loc=0, scale=1) | 逆生存函数(sf 的反函数)。 |
moment(order, kappa, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(kappa, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(kappa, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 通用数据的参数估计。详细文档请参见 scipy.stats.rv_continuous.fit。 |
**expect(func, args=(kappa,), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 关于分布的函数(单参数)的期望值。 |
median(kappa, loc=0, scale=1) | 分布的中位数。 |
mean(kappa, loc=0, scale=1) | 分布的均值。 |
var(kappa, loc=0, scale=1) | 分布的方差。 |
std(kappa, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, kappa, loc=0, scale=1) | 中位数周围具有相等面积的置信区间。 |
scipy.stats.levy
原文:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.levy.html#scipy.stats.levy
scipy.stats.levy = <scipy.stats._continuous_distns.levy_gen object>
一个 Levy 连续随机变量。
作为 rv_continuous
类的实例,levy
对象继承了一组通用方法(请参见下文的完整列表),并使用特定于此特定分布的详细信息完成它们。
另见
levy_stable
, levy_l
注记
levy
的概率密度函数为:
[f(x) = \frac{1}{\sqrt{2\pi x³}} \exp\left(-\frac{1}{2x}\right)]
对于 (x > 0)。
这与 Levy 稳定分布相同,其中 (a=1/2) 和 (b=1)。
上述概率密度在“标准化”形式中定义。要移动和/或缩放分布,请使用 loc
和 scale
参数。具体地说,levy.pdf(x, loc, scale)
等效于 levy.pdf(y) / scale
,其中 y = (x - loc) / scale
。请注意,移动分布的位置不会使其成为“非中心”分布;某些分布的非中心推广可在单独的类中找到。
示例
>>> import numpy as np
>>> from scipy.stats import levy
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> mean, var, skew, kurt = levy.stats(moments='mvsk')
显示概率密度函数 (pdf
):
>>> # `levy` is very heavy-tailed.
>>> # To show a nice plot, let's cut off the upper 40 percent.
>>> a, b = levy.ppf(0), levy.ppf(0.6)
>>> x = np.linspace(a, b, 100)
>>> ax.plot(x, levy.pdf(x),
... 'r-', lw=5, alpha=0.6, label='levy pdf')
或者,可以调用(作为函数)分布对象来固定形状、位置和比例参数。这将返回一个“冻结”的随机变量对象,其中包含给定的固定参数。
冻结分布并显示冻结的 pdf
:
>>> rv = levy()
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查 cdf
和 ppf
的准确性:
>>> vals = levy.ppf([0.001, 0.5, 0.999])
>>> np.allclose([0.001, 0.5, 0.999], levy.cdf(vals))
True
生成随机数:
>>> r = levy.rvs(size=1000)
比较直方图:
>>> # manual binning to ignore the tail
>>> bins = np.concatenate((np.linspace(a, b, 20), [np.max(r)]))
>>> ax.hist(r, bins=bins, density=True, histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, loc=0, scale=1) | 生存函数(也被定义为 1 - cdf ,但 sf 有时更准确)。 |
logsf(x, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, loc=0, scale=1) | 百分点函数(cdf 的反函数 — 百分位数)。 |
isf(q, loc=0, scale=1) | 逆生存函数(sf 的反函数)。 |
moment(order, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 通用数据的参数估计。详见 scipy.stats.rv_continuous.fit 关键参数的详细文档。 |
**expect(func, args=(), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 关于分布的函数(单个参数的)的期望值。 |
median(loc=0, scale=1) | 分布的中位数。 |
mean(loc=0, scale=1) | 分布的均值。 |
var(loc=0, scale=1) | 分布的方差。 |
std(loc=0, scale=1) | 分布的标准偏差。 |
interval(confidence, loc=0, scale=1) | 围绕中位数等面积的置信区间。 |
scipy.stats.levy_l
原文链接:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.levy_l.html#scipy.stats.levy_l
scipy.stats.levy_l = <scipy.stats._continuous_distns.levy_l_gen object>
一个左偏 Levy 连续随机变量。
作为rv_continuous
类的一个实例,levy_l
对象继承了一组通用方法(详见下文完整列表),并为这种特定分布完成了特定的细节。
另请参见
levy
, levy_stable
注释
levy_l
的概率密度函数为:
[f(x) = \frac{1}{|x| \sqrt{2\pi |x|}} \exp{ \left(-\frac{1}{2|x|} \right)}]
for (x < 0).
这与参数 (a=1/2) 和 (b=-1) 的稳定 Levy 分布相同。
上述概率密度在“标准化”形式中定义。使用loc
和scale
参数来进行分布的平移和/或缩放。具体来说,levy_l.pdf(x, loc, scale)
与levy_l.pdf(y) / scale
完全等价,其中y = (x - loc) / scale
。请注意,移动分布的位置不会使其成为“非中心”分布;某些分布的非中心广义形式可在单独的类中获得。
示例
>>> import numpy as np
>>> from scipy.stats import levy_l
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> mean, var, skew, kurt = levy_l.stats(moments='mvsk')
显示概率密度函数(pdf
):
>>> # `levy_l` is very heavy-tailed.
>>> # To show a nice plot, let's cut off the lower 40 percent.
>>> a, b = levy_l.ppf(0.4), levy_l.ppf(1)
>>> x = np.linspace(a, b, 100)
>>> ax.plot(x, levy_l.pdf(x),
... 'r-', lw=5, alpha=0.6, label='levy_l pdf')
或者,可以调用(作为函数)分布对象来固定形状、位置和尺度参数。这将返回一个“冻结”的 RV 对象,其中给定的参数被固定。
冻结分布并显示冻结的pdf
:
>>> rv = levy_l()
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查cdf
和ppf
的准确性:
>>> vals = levy_l.ppf([0.001, 0.5, 0.999])
>>> np.allclose([0.001, 0.5, 0.999], levy_l.cdf(vals))
True
生成随机数:
>>> r = levy_l.rvs(size=1000)
并比较直方图:
>>> # manual binning to ignore the tail
>>> bins = np.concatenate(([np.min(r)], np.linspace(a, b, 20)))
>>> ax.hist(r, bins=bins, density=True, histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, loc=0, scale=1) | 生存函数(也定义为1 - cdf ,但sf有时更准确)。 |
logsf(x, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, loc=0, scale=1) | 百分位点函数(cdf 的逆 — 百分位数)。 |
isf(q, loc=0, scale=1) | 逆生存函数(sf 的逆)。 |
moment(order, loc=0, scale=1) | 指定顺序的非中心矩。 |
stats(loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 适合一般数据的参数估计。详细文档参见 scipy.stats.rv_continuous.fit。 |
**expect(func, args=(), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 对于分布的期望值(关于一个参数的函数)。 |
median(loc=0, scale=1) | 分布的中位数。 |
mean(loc=0, scale=1) | 分布的均值。 |
var(loc=0, scale=1) | 分布的方差。 |
std(loc=0, scale=1) | 分布的标准差。 |
interval(confidence, loc=0, scale=1) | 中位数周围面积相等的置信区间。 |
scipy.stats.levy_stable
scipy.stats.levy_stable = <scipy.stats._levy_stable.levy_stable_gen object>
一个 Levy 稳定连续随机变量。
作为 rv_continuous
类的一个实例,levy_stable
对象继承了一系列通用方法(完整列表请参见下文),并补充了特定于这个特定分布的细节。
另见
注意
levy_stable
的分布具有特征函数:
[\varphi(t, \alpha, \beta, c, \mu) = e^{it\mu -|ct|^{\alpha}(1-i\beta\operatorname{sign}(t)\Phi(\alpha, t))}]
支持两种不同的参数化方式。第一个 (S_1):
[\begin{split}\Phi = \begin{cases} \tan \left({\frac {\pi \alpha }{2}}\right)&\alpha \neq 1\ -{\frac {2}{\pi }}\log |t|&\alpha =1 \end{cases}\end{split}]
第二个 (S_0):
[\begin{split}\Phi = \begin{cases} -\tan \left({\frac {\pi \alpha }{2}}\right)(|ct|^{1-\alpha}-1) &\alpha \neq 1\ -{\frac {2}{\pi }}\log |ct|&\alpha =1 \end{cases}\end{split}]
levy_stable
的概率密度函数为:
[f(x) = \frac{1}{2\pi}\int_{-\infty}^\infty \varphi(t)e^{-ixt},dt]
其中 (-\infty < t < \infty)。这个积分没有已知的闭式形式。
levy_stable
泛化了几个分布。在可能的情况下,应使用它们。特别是当形状参数在下表中的值时,应使用相应的等效分布。
alpha |
beta |
等效 |
---|---|---|
1/2 | -1 | levy_l |
1/2 | 1 | levy |
1 | 0 | cauchy |
2 | any | norm (with scale=sqrt(2) ) |
对 pdf 的评估使用了 Nolan 的分段积分方法,默认使用 Zolotarev 的 (M) 参数化。还可以选择直接数值积分标准参数化的特征函数,或者通过特征函数的 FFT 进行评估。
可以通过将类变量levy_stable.pdf_default_method
设置为‘piecewise’(Nolan 方法的默认选择)、‘dni’(直接数值积分)或‘fft-simpson’(基于 FFT 的方法)来更改默认方法。出于向后兼容性考虑,方法‘best’和‘zolotarev’相当于‘piecewise’,而方法‘quadrature’相当于‘dni’。
可以通过将类变量levy_stable.parameterization
设置为‘S0’或‘S1’来更改参数化。默认为‘S1’。
要提高分段和直接数值积分的性能,可以指定levy_stable.quad_eps
(默认为 1.2e-14)。这既用作直接数值积分的绝对和相对积分容差,也用作分段方法的相对积分容差。还可以指定levy_stable.piecewise_x_tol_near_zeta
(默认为 0.005),用于确定 x 与 zeta 接近多少时被视为相同[NO]。确切的检查是abs(x0 - zeta) < piecewise_x_tol_near_zeta*alpha**(1/alpha)
。还可以指定levy_stable.piecewise_alpha_tol_near_one
(默认为 0.005),用于确定 alpha 接近 1 时被视为相等。
要提高 FFT 计算的精度,可以指定levy_stable.pdf_fft_grid_spacing
(默认为 0.001)和pdf_fft_n_points_two_power
(默认为 None,意味着会计算一个足够覆盖输入范围的值)。
可通过设置pdf_fft_interpolation_degree
(默认为 3)来进一步控制 FFT 计算,用于样条插值的阶数,以及通过设置pdf_fft_interpolation_level
来确定在近似特征函数时使用的 Newton-Cotes 公式中的点数(视为实验性)。
cdf 的评估默认使用 Nolan 的分段积分方法,并采用 Zolatarev 的参数化方法(通过 S_0 参数)。还有通过 FFT 方法计算 pdf 的插值样条积分来评估的选项。影响 FFT 计算的设置与 pdf 计算相同。可以通过将levy_stable.cdf_default_method
设置为‘piecewise’或‘fft-simpson’来更改默认的 cdf 方法。对于 cdf 计算,Zolatarev 方法在精度上更为优越,因此默认情况下禁用 FFT。
拟合估计使用[MC]中的分位数估计方法。在拟合方法中使用 MLE 估计参数时,首先使用此分位数估计值。注意,如果使用 FFT 进行 pdf 计算,MLE 不总是收敛;当 alpha <= 1 时,FFT 方法不能提供良好的近似。
对于属性levy_stable.pdf_fft_min_points_threshold
的任何非缺失值,如果未另行设置有效的默认方法,则会将levy_stable.pdf_default_method
设置为‘fft-simpson’。
警告
对于概率密度函数(pdf)的计算,FFT 计算被视为实验性质。
对于累积分布函数(cdf)的计算,FFT 计算被视为实验性质。请改用 Zolatarev 的方法(默认)。
上述的概率密度在“标准化”形式中定义。要进行分布的平移和/或缩放,请使用loc
和scale
参数。通常情况下,levy_stable.pdf(x, alpha, beta, loc, scale)
等同于levy_stable.pdf(y, alpha, beta) / scale
,其中y = (x - loc) / scale
,除了在alpha == 1
的情况下,使用S1
参数化。在这种情况下,levy_stable.pdf(x, alpha, beta, loc, scale)
等同于levy_stable.pdf(y, alpha, beta) / scale
,其中y = (x - loc - 2 * beta * scale * np.log(scale) / np.pi) / scale
。更多信息请参见[NO2] 定义 1.8。请注意,移动分布的位置不会使其成为“非中心”分布。
References
[MC]
McCulloch, J., 1986. Simple consistent estimators of stable distribution parameters. Communications in Statistics - Simulation and Computation 15, 11091136.
[WZ]
Wang, Li and Zhang, Ji-Hong, 2008. Simpson’s rule based FFT method to compute densities of stable distribution.
[NO]
Nolan, J., 1997. Numerical Calculation of Stable Densities and distributions Functions.
[NO2]
Nolan, J., 2018. Stable Distributions: Models for Heavy Tailed Data.
[HO]
Hopcraft, K. I., Jakeman, E., Tanner, R. M. J., 1999. Lévy random walks with fluctuating step number and multiscale behavior.
Examples
>>> import numpy as np
>>> from scipy.stats import levy_stable
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
Calculate the first four moments:
>>> alpha, beta = 1.8, -0.5
>>> mean, var, skew, kurt = levy_stable.stats(alpha, beta, moments='mvsk')
Display the probability density function (pdf
):
>>> x = np.linspace(levy_stable.ppf(0.01, alpha, beta),
... levy_stable.ppf(0.99, alpha, beta), 100)
>>> ax.plot(x, levy_stable.pdf(x, alpha, beta),
... 'r-', lw=5, alpha=0.6, label='levy_stable pdf')
Alternatively, the distribution object can be called (as a function) to fix the shape, location and scale parameters. This returns a “frozen” RV object holding the given parameters fixed.
Freeze the distribution and display the frozen pdf
:
>>> rv = levy_stable(alpha, beta)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
Check accuracy of cdf
and ppf
:
>>> vals = levy_stable.ppf([0.001, 0.5, 0.999], alpha, beta)
>>> np.allclose([0.001, 0.5, 0.999], levy_stable.cdf(vals, alpha, beta))
True
Generate random numbers:
>>> r = levy_stable.rvs(alpha, beta, size=1000)
And compare the histogram:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
Methods
rvs(alpha, beta, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, alpha, beta, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, alpha, beta, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, alpha, beta, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, alpha, beta, loc=0, scale=1) | 概率累积分布函数的对数。 |
sf(x, alpha, beta, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但 sf 有时更准确)。 |
logsf(x, alpha, beta, loc=0, scale=1) | 概率生存函数的对数。 |
ppf(q, alpha, beta, loc=0, scale=1) | 百分点函数(cdf 的反函数 —— 百分位数)。 |
isf(q, alpha, beta, loc=0, scale=1) | 逆生存函数(sf 的反函数)。 |
moment(order, alpha, beta, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(alpha, beta, loc=0, scale=1, moments=’mv’) | 均值(‘m’),方差(‘v’),偏度(‘s’),以及/或峰度(‘k’)。 |
entropy(alpha, beta, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 通用数据的参数估计。参见 scipy.stats.rv_continuous.fit 获取关键字参数的详细文档。 |
**expect(func, args=(alpha, beta), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 关于分布的函数(一个参数)的期望值。 |
median(alpha, beta, loc=0, scale=1) | 分布的中位数。 |
mean(alpha, beta, loc=0, scale=1) | 分布的均值。 |
var(alpha, beta, loc=0, scale=1) | 分布的方差。 |
std(alpha, beta, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, alpha, beta, loc=0, scale=1) | 置信区间,围绕中位数具有相等的面积。 |
scipy.stats.logistic
原文链接:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.logistic.html#scipy.stats.logistic
scipy.stats.logistic = <scipy.stats._continuous_distns.logistic_gen object>
一个逻辑(或 Sech 平方)连续随机变量。
作为rv_continuous
类的实例,logistic
对象继承了一组通用方法(下面列出了完整列表),并根据这种特定分布补充了详细信息。
注记
logistic
的概率密度函数如下:
[f(x) = \frac{\exp(-x)} {(1+\exp(-x))²}]
logistic
是带有c=1
的genlogistic
的特殊情况。
注意,生存函数(logistic.sf
)等于描述费米子统计的费米-狄拉克分布。
上述概率密度在“标准化”形式中定义。使用loc
和scale
参数来进行移位和/或缩放分布。具体而言,logistic.pdf(x, loc, scale)
与logistic.pdf(y) / scale
完全等价,其中y = (x - loc) / scale
。请注意,移动分布的位置并不使其成为“非中心”分布;某些分布的非中心推广可在单独的类中找到。
示例
>>> import numpy as np
>>> from scipy.stats import logistic
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> mean, var, skew, kurt = logistic.stats(moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(logistic.ppf(0.01),
... logistic.ppf(0.99), 100)
>>> ax.plot(x, logistic.pdf(x),
... 'r-', lw=5, alpha=0.6, label='logistic pdf')
或者,可以调用分布对象(作为函数)以固定形状、位置和尺度参数。这将返回一个“冻结”的随机变量对象,保持给定的参数不变。
冻结分布并显示冻结的pdf
:
>>> rv = logistic()
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查cdf
和ppf
的准确性:
>>> vals = logistic.ppf([0.001, 0.5, 0.999])
>>> np.allclose([0.001, 0.5, 0.999], logistic.cdf(vals))
True
生成随机数:
>>> r = logistic.rvs(size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, loc=0, scale=1) | 生存函数(也定义为1 - cdf ,但有时sf更精确)。 |
logsf(x, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, loc=0, scale=1) | 百分点函数(cdf 的反函数 — 百分位数)。 |
isf(q, loc=0, scale=1) | 逆生存函数(sf 的反函数)。 |
moment(order, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(loc=0, scale=1, moments=’mv’) | 平均(‘m’)、方差(‘v’)、偏度(‘s’)、峰度(‘k’)。 |
entropy(loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 用于一般数据的参数估计。详细文档请参见scipy.stats.rv_continuous.fit。 |
**expect(func, args=(), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 对分布中的函数(一元函数)求期望值。 |
median(loc=0, scale=1) | 分布的中位数。 |
mean(loc=0, scale=1) | 分布的均值。 |
var(loc=0, scale=1) | 分布的方差。 |
std(loc=0, scale=1) | 分布的标准差。 |
interval(confidence, loc=0, scale=1) | 中位数周围面积相等的置信区间。 |
scipy.stats.loggamma
原文:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.loggamma.html#scipy.stats.loggamma
scipy.stats.loggamma = <scipy.stats._continuous_distns.loggamma_gen object>
对数伽玛连续随机变量。
作为 rv_continuous
类的一个实例,loggamma
对象继承了一系列通用方法(见下面的完整列表),并且使用此特定分布的详细信息补充它们。
注意事项
loggamma
的概率密度函数为:
[f(x, c) = \frac{\exp(c x - \exp(x))} {\Gamma(c)}]
对于所有的 (x, c > 0)。这里,(\Gamma) 是伽玛函数(scipy.special.gamma
)。
loggamma
将 c
作为形状参数(c)。
上述概率密度在“标准化”形式下定义。使用 loc
和 scale
参数来进行分布的平移和/或缩放。具体来说,loggamma.pdf(x, c, loc, scale)
与 loggamma.pdf(y, c) / scale
是完全等价的,其中 y = (x - loc) / scale
。请注意,分布的位置移动并不使其成为“非中心”分布;某些分布的非中心推广在单独的类中提供。
示例
>>> import numpy as np
>>> from scipy.stats import loggamma
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> c = 0.414
>>> mean, var, skew, kurt = loggamma.stats(c, moments='mvsk')
显示概率密度函数 (pdf
):
>>> x = np.linspace(loggamma.ppf(0.01, c),
... loggamma.ppf(0.99, c), 100)
>>> ax.plot(x, loggamma.pdf(x, c),
... 'r-', lw=5, alpha=0.6, label='loggamma pdf')
或者,可以调用分布对象(作为函数)来固定形状、位置和缩放参数。这将返回一个“冻结的”RV 对象,保持给定的参数不变。
冻结分布并显示冻结的 pdf
:
>>> rv = loggamma(c)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查 cdf
和 ppf
的准确性:
>>> vals = loggamma.ppf([0.001, 0.5, 0.999], c)
>>> np.allclose([0.001, 0.5, 0.999], loggamma.cdf(vals, c))
True
生成随机数:
>>> r = loggamma.rvs(c, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(c, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, c, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, c, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, c, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, c, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, c, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但 sf 有时更精确)。 |
logsf(x, c, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, c, loc=0, scale=1) | 百分位点函数(cdf 的反函数 —— 百分位数)。 |
isf(q, c, loc=0, scale=1) | 生存函数的反函数(sf 的反函数)。 |
moment(order, c, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(c, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(c, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 通用数据的参数估计。详细文档请参见 scipy.stats.rv_continuous.fit。 |
**expect(func, args=(c,), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 对于分布的一个参数函数的期望值。 |
median(c, loc=0, scale=1) | 分布的中位数。 |
mean(c, loc=0, scale=1) | 分布的均值。 |
var(c, loc=0, scale=1) | 分布的方差。 |
std(c, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, c, loc=0, scale=1) | 置信区间,围绕中位数有相等的面积。 |
scipy.stats.loglaplace
scipy.stats.loglaplace = <scipy.stats._continuous_distns.loglaplace_gen object>
一个对数拉普拉斯连续随机变量。
作为 rv_continuous
类的一个实例,loglaplace
对象从中继承了一系列通用方法(请参阅下面的完整列表),并使用特定于此特定分布的详细信息补充它们。
注意事项
对于 loglaplace
的概率密度函数为:
[\begin{split}f(x, c) = \begin{cases}\frac{c}{2} x^{ c-1} &\text{对于 } 0 < x < 1\ \frac{c}{2} x^{-c-1} &\text{对于 } x \ge 1 \end{cases}\end{split}]
当 (c > 0)。
loglaplace
以 (c) 作为形状参数。
上述概率密度在“标准化”形式中定义。要移动和/或缩放分布,请使用 loc
和 scale
参数。具体而言,loglaplace.pdf(x, c, loc, scale)
与 loglaplace.pdf(y, c) / scale
是等价的,其中 y = (x - loc) / scale
。请注意,移动分布的位置不会使其成为“非中心”分布;某些分布的非中心推广在单独的类中可用。
参考文献
T.J. Kozubowski 和 K. Podgorski,《对数拉普拉斯增长率模型》,《数学科学家》,第 28 卷,第 49-60 页,2003 年。
示例
>>> import numpy as np
>>> from scipy.stats import loglaplace
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> c = 3.25
>>> mean, var, skew, kurt = loglaplace.stats(c, moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(loglaplace.ppf(0.01, c),
... loglaplace.ppf(0.99, c), 100)
>>> ax.plot(x, loglaplace.pdf(x, c),
... 'r-', lw=5, alpha=0.6, label='loglaplace pdf')
或者,可以调用分布对象(作为函数)以固定形状、位置和尺度参数。这将返回一个“冻结的”随机变量对象,保持给定的参数不变。
冻结分布并显示冻结的 pdf
:
>>> rv = loglaplace(c)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查 cdf
和 ppf
的准确性:
>>> vals = loglaplace.ppf([0.001, 0.5, 0.999], c)
>>> np.allclose([0.001, 0.5, 0.999], loglaplace.cdf(vals, c))
True
生成随机数:
>>> r = loglaplace.rvs(c, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(c, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, c, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, c, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, c, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, c, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, c, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但 sf 有时更精确)。 |
logsf(x, c, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, c, loc=0, scale=1) | 百分位点函数(cdf 的反函数 — 百分位数)。 |
isf(q, c, loc=0, scale=1) | 生存函数的反函数(sf 的反函数)。 |
moment(order, c, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(c, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)、峰度(‘k’)。 |
entropy(c, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 适用于一般数据的参数估计。详细文档请参见 scipy.stats.rv_continuous.fit 。 |
**expect(func, args=(c,), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 函数期望值(针对一个参数)与分布相关。 |
median(c, loc=0, scale=1) | 分布的中位数。 |
mean(c, loc=0, scale=1) | 分布的均值。 |
var(c, loc=0, scale=1) | 分布的方差。 |
std(c, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, c, loc=0, scale=1) | 置信区间,围绕中位数具有相等面积。 |
scipy.stats.lognorm
原文链接:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.lognorm.html#scipy.stats.lognorm
scipy.stats.lognorm = <scipy.stats._continuous_distns.lognorm_gen object>
一个对数正态连续随机变量。
作为rv_continuous
类的一个实例,lognorm
对象从中继承了一组通用方法(请参见下文的完整列表),并使用特定于此特定分布的详细信息完成了它们。
注意
lognorm
的概率密度函数是:
[f(x, s) = \frac{1}{s x \sqrt{2\pi}} \exp\left(-\frac{\log²(x)}{2s²}\right)]
对于(x > 0),(s > 0)。
lognorm
以(s)作为形状参数。
上述概率密度在“标准化”形式中定义。要移动和/或缩放分布,请使用loc
和scale
参数。特别地,lognorm.pdf(x, s, loc, scale)
等效于lognorm.pdf(y, s) / scale
,其中y = (x - loc) / scale
。请注意,移动分布的位置不会使其成为“非中心”分布;某些分布的非中心推广可以在单独的类中找到。
假设正态分布随机变量X
具有均值mu
和标准偏差sigma
。那么Y = exp(X)
是对数正态分布,其中s = sigma
,scale = exp(mu)
。
示例
>>> import numpy as np
>>> from scipy.stats import lognorm
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> s = 0.954
>>> mean, var, skew, kurt = lognorm.stats(s, moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(lognorm.ppf(0.01, s),
... lognorm.ppf(0.99, s), 100)
>>> ax.plot(x, lognorm.pdf(x, s),
... 'r-', lw=5, alpha=0.6, label='lognorm pdf')
或者,可以调用分布对象(作为函数)来固定形状、位置和比例参数。这将返回一个“冻结”的随机变量对象,其中给定的参数被固定。
冻结分布并显示冻结的pdf
:
>>> rv = lognorm(s)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查cdf
和ppf
的准确性:
>>> vals = lognorm.ppf([0.001, 0.5, 0.999], s)
>>> np.allclose([0.001, 0.5, 0.999], lognorm.cdf(vals, s))
True
生成随机数:
>>> r = lognorm.rvs(s, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
对数正态分布随机变量的对数是正态分布的:
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from scipy import stats
>>> fig, ax = plt.subplots(1, 1)
>>> mu, sigma = 2, 0.5
>>> X = stats.norm(loc=mu, scale=sigma)
>>> Y = stats.lognorm(s=sigma, scale=np.exp(mu))
>>> x = np.linspace(*X.interval(0.999))
>>> y = Y.rvs(size=10000)
>>> ax.plot(x, X.pdf(x), label='X (pdf)')
>>> ax.hist(np.log(y), density=True, bins=x, label='log(Y) (histogram)')
>>> ax.legend()
>>> plt.show()
方法
rvs(s, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, s, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, s, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, s, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, s, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, s, loc=0, scale=1) | 生存函数(也定义为1 - cdf ,但sf有时更精确)。 |
logsf(x, s, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, s, loc=0, scale=1) | 百分位点函数(cdf 的反函数 - 百分位数)。 |
isf(q, s, loc=0, scale=1) | 逆生存函数(sf 的逆函数)。 |
moment(order, s, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(s, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(s, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 通用数据的参数估计。详细文档请参阅 scipy.stats.rv_continuous.fit。 |
**expect(func, args=(s,), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 相对于分布的一个参数函数(的)的期望值。 |
median(s, loc=0, scale=1) | 分布的中位数。 |
mean(s, loc=0, scale=1) | 分布的均值。 |
var(s, loc=0, scale=1) | 分布的方差。 |
std(s, loc=0, scale=1) | 分布的标准偏差。 |
interval(confidence, s, loc=0, scale=1) | 中位数周围具有相等面积的置信区间。 |
scipy.stats.loguniform
scipy.stats.loguniform = <scipy.stats._continuous_distns.reciprocal_gen object>
一个对数均匀分布或倒数连续随机变量。
作为rv_continuous
类的一个实例,loguniform
对象继承了一系列通用方法(下面列出了完整列表),并针对这种特定分布增加了细节。
注意
此类的概率密度函数为:
[f(x, a, b) = \frac{1}{x \log(b/a)}]
对于(a \le x \le b),(b > a > 0)。此类使用(a)和(b)作为形状参数。
上面的概率密度在“标准化”形式中定义。要移动和/或缩放分布,请使用loc
和scale
参数。具体来说,loguniform.pdf(x, a, b, loc, scale)
与loguniform.pdf(y, a, b) / scale
完全等价,其中y = (x - loc) / scale
。注意,移动分布的位置并不使其成为“非中心”分布;某些分布的非中心推广可在单独的类中使用。
示例
>>> import numpy as np
>>> from scipy.stats import loguniform
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个时刻:
>>> a, b = 0.01, 1.25
>>> mean, var, skew, kurt = loguniform.stats(a, b, moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(loguniform.ppf(0.01, a, b),
... loguniform.ppf(0.99, a, b), 100)
>>> ax.plot(x, loguniform.pdf(x, a, b),
... 'r-', lw=5, alpha=0.6, label='loguniform pdf')
或者,可以调用分布对象(作为函数)来固定形状、位置和比例参数。这将返回一个“冻结”的 RV 对象,保持给定的参数不变。
冻结分布并显示冻结的pdf
:
>>> rv = loguniform(a, b)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查cdf
和ppf
的准确性:
>>> vals = loguniform.ppf([0.001, 0.5, 0.999], a, b)
>>> np.allclose([0.001, 0.5, 0.999], loguniform.cdf(vals, a, b))
True
生成随机数:
>>> r = loguniform.rvs(a, b, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
这并不显示0.01
、0.1
和1
的相等概率。当 x 轴对数缩放时效果最佳:
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
>>> ax.hist(np.log10(r))
>>> ax.set_ylabel("Frequency")
>>> ax.set_xlabel("Value of random variable")
>>> ax.xaxis.set_major_locator(plt.FixedLocator([-2, -1, 0]))
>>> ticks = ["$10^{{ {} }}$".format(i) for i in [-2, -1, 0]]
>>> ax.set_xticklabels(ticks)
>>> plt.show()
不论选择了哪个基数,此随机变量都将是对数均匀分布。让我们改为使用基数2
:
>>> rvs = loguniform(2**-2, 2**0).rvs(size=1000)
1/4
、1/2
和1
的值在这个随机变量中是等可能的。这是直方图:
>>> fig, ax = plt.subplots(1, 1)
>>> ax.hist(np.log2(rvs))
>>> ax.set_ylabel("Frequency")
>>> ax.set_xlabel("Value of random variable")
>>> ax.xaxis.set_major_locator(plt.FixedLocator([-2, -1, 0]))
>>> ticks = ["$2^{{ {} }}$".format(i) for i in [-2, -1, 0]]
>>> ax.set_xticklabels(ticks)
>>> plt.show()
方法
rvs(a, b, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, a, b, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, a, b, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, a, b, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, a, b, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, a, b, loc=0, scale=1) | 生存函数(也定义为1 - cdf ,但sf有时更准确)。 |
logsf(x, a, b, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, a, b, loc=0, scale=1) | 百分位点函数(cdf 的反函数 — 百分位数)。 |
isf(q, a, b, loc=0, scale=1) | 逆生存函数(sf 的反函数)。 |
moment(order, a, b, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(a, b, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)、及/或峰度(‘k’)。 |
entropy(a, b, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 适用于一般数据的参数估计。详见scipy.stats.rv_continuous.fit以获取关键字参数的详细文档。 |
**expect(func, args=(a, b), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 对于分布,函数(一个参数)的期望值。 |
median(a, b, loc=0, scale=1) | 分布的中位数。 |
mean(a, b, loc=0, scale=1) | 分布的均值。 |
var(a, b, loc=0, scale=1) | 分布的方差。 |
std(a, b, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, a, b, loc=0, scale=1) | 等概率中位数周围的置信区间。 |
scipy.stats.lomax
原文链接:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.lomax.html#scipy.stats.lomax
scipy.stats.lomax = <scipy.stats._continuous_distns.lomax_gen object>
Lomax(第二类 Pareto)连续随机变量。
作为 rv_continuous
类的实例,lomax
对象从中继承了一系列通用方法(下面有完整列表),并为该特定分布完成了具体细节。
注意
lomax
的概率密度函数为:
[f(x, c) = \frac{c}{(1+x)^{c+1}}]
对于 (x \ge 0), (c > 0)。
lomax
以参数 c
作为形状参数。
lomax
是具有 loc=-1.0
的 pareto
的特例。
上述概率密度在“标准化”形式中定义。使用 loc
和 scale
参数进行移位和/或缩放分布。具体来说,lomax.pdf(x, c, loc, scale)
与 y = (x - loc) / scale
中的 lomax.pdf(y, c) / scale
是完全等价的。请注意,移动分布的位置并不会使其成为“非中心”分布;某些分布的非中心推广可在单独的类中找到。
示例
>>> import numpy as np
>>> from scipy.stats import lomax
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> c = 1.88
>>> mean, var, skew, kurt = lomax.stats(c, moments='mvsk')
显示概率密度函数 (pdf
):
>>> x = np.linspace(lomax.ppf(0.01, c),
... lomax.ppf(0.99, c), 100)
>>> ax.plot(x, lomax.pdf(x, c),
... 'r-', lw=5, alpha=0.6, label='lomax pdf')
或者,可以调用(作为函数)分布对象来固定形状、位置和比例参数。这将返回一个“冻结”的 RV 对象,其中包含给定的固定参数。
冻结分布并显示冻结的 pdf
:
>>> rv = lomax(c)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查 cdf
和 ppf
的准确性:
>>> vals = lomax.ppf([0.001, 0.5, 0.999], c)
>>> np.allclose([0.001, 0.5, 0.999], lomax.cdf(vals, c))
True
生成随机数:
>>> r = lomax.rvs(c, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
- rvs(c, loc=0, scale=1, size=1, random_state=None) 随机变量。 |
---|
- pdf(x, c, loc=0, scale=1) 概率密度函数。 |
- logpdf(x, c, loc=0, scale=1) 概率密度函数的对数。 |
- cdf(x, c, loc=0, scale=1) 累积分布函数。 |
- logcdf(x, c, loc=0, scale=1) 累积分布函数的对数。 |
- sf(x, c, loc=0, scale=1) 生存函数(也定义为 1 - cdf ,但 sf 有时更准确)。 |
- logsf(x, c, loc=0, scale=1) 生存函数的对数。 |
- ppf(q, c, loc=0, scale=1) 百分点函数(cdf 的逆函数 — 百分位数)。 |
- isf(q, c, loc=0, scale=1) 逆生存函数(sf 的逆函数)。 |
- moment(order, c, loc=0, scale=1) 指定顺序的非中心矩。 |
- stats(c, loc=0, scale=1, moments=’mv’) 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(c, loc=0, scale=1) |
fit(data) |
**expect(func, args=(c,), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) |
median(c, loc=0, scale=1) |
mean(c, loc=0, scale=1) |
var(c, loc=0, scale=1) |
std(c, loc=0, scale=1) |
interval(confidence, c, loc=0, scale=1) |
scipy.stats.maxwell
原文链接:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.maxwell.html#scipy.stats.maxwell
scipy.stats.maxwell = <scipy.stats._continuous_distns.maxwell_gen object>
Maxwell 连续随机变量。
作为 rv_continuous
类的实例,maxwell
对象继承了一组通用方法(请参阅下文的完整列表),并提供了特定于此特定分布的详细信息。
注释
一个特例是 chi
分布,其中 df=3
,loc=0.0
,给定的 scale = a
,其中 a
是数学界描述中使用的参数 [1]。
maxwell
的概率密度函数如下:
[f(x) = \sqrt{2/\pi}x² \exp(-x²/2)]
对于 (x \geq 0)。
上述的概率密度定义为“标准化”形式。要移动和/或缩放分布,请使用 loc
和 scale
参数。具体地说,maxwell.pdf(x, loc, scale)
等同于 maxwell.pdf(y) / scale
,其中 y = (x - loc) / scale
。请注意,移动分布的位置并不会使其成为“非中心”分布;某些分布的非中心推广可以在单独的类中找到。
参考文献
[1]
mathworld.wolfram.com/MaxwellDistribution.html
例子
>>> import numpy as np
>>> from scipy.stats import maxwell
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四阶矩:
>>> mean, var, skew, kurt = maxwell.stats(moments='mvsk')
显示概率密度函数 (pdf
):
>>> x = np.linspace(maxwell.ppf(0.01),
... maxwell.ppf(0.99), 100)
>>> ax.plot(x, maxwell.pdf(x),
... 'r-', lw=5, alpha=0.6, label='maxwell pdf')
或者,可以调用分布对象(作为函数),以固定形状、位置和尺度参数。这将返回一个固定给定参数的“冻结”随机变量对象。
冻结分布并显示冻结的 pdf
:
>>> rv = maxwell()
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查 cdf
和 ppf
的准确性:
>>> vals = maxwell.ppf([0.001, 0.5, 0.999])
>>> np.allclose([0.001, 0.5, 0.999], maxwell.cdf(vals))
True
生成随机数:
>>> r = maxwell.rvs(size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但 sf 有时更准确)。 |
logsf(x, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, loc=0, scale=1) | 百分位点函数(cdf 的逆 — 百分位数)。 |
isf(q, loc=0, scale=1) | 逆生存函数(sf 的逆)。 |
moment(order, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 适用于通用数据的参数估计。详见scipy.stats.rv_continuous.fit以获取关键字参数的详细文档。 |
**expect(func, args=(), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 对于分布的一个函数(一个参数)的期望值。 |
median(loc=0, scale=1) | 分布的中位数。 |
mean(loc=0, scale=1) | 分布的均值。 |
var(loc=0, scale=1) | 分布的方差。 |
std(loc=0, scale=1) | 分布的标准差。 |
interval(confidence, loc=0, scale=1) | 置信区间,围绕中位数等面积分布的区间。 |
scipy.stats.mielke
原文:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.mielke.html#scipy.stats.mielke
scipy.stats.mielke = <scipy.stats._continuous_distns.mielke_gen object>
Mielke Beta-Kappa / Dagum 连续随机变量。
作为rv_continuous
类的一个实例,mielke
对象继承了一系列通用方法(下面有完整列表),并且用特定于此特定分布的细节补充了它们。
注意事项
mielke
的概率密度函数为:
[f(x, k, s) = \frac{k x{k-1}}{(1+xs)^{1+k/s}}]
对于(x > 0)和(k, s > 0)。该分布有时称为 Dagum 分布([2])。它在[3]中已经定义,称为 Burr Type III 分布(burr
具有参数c=s
和d=k/s
)。
mielke
以k
和s
作为形状参数。
上述概率密度在“标准化”形式下定义。要移动和/或缩放分布,请使用loc
和scale
参数。具体地,mielke.pdf(x, k, s, loc, scale)
与y = (x - loc) / scale
的mielke.pdf(y, k, s) / scale
是完全等价的。请注意,移动分布的位置并不使其成为“非中心”分布;某些分布的非中心推广在单独的类中可用。
参考文献
[1]
Mielke, P.W., 1973 “Another Family of Distributions for Describing and Analyzing Precipitation Data.” J. Appl. Meteor., 12, 275-280
[2]
Dagum, C., 1977 “A new model for personal income distribution.” Economie Appliquee, 33, 327-367.
[3]
Burr, I. W. “Cumulative frequency functions”, Annals of Mathematical Statistics, 13(2), pp 215-232 (1942).
示例
>>> import numpy as np
>>> from scipy.stats import mielke
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> k, s = 10.4, 4.6
>>> mean, var, skew, kurt = mielke.stats(k, s, moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(mielke.ppf(0.01, k, s),
... mielke.ppf(0.99, k, s), 100)
>>> ax.plot(x, mielke.pdf(x, k, s),
... 'r-', lw=5, alpha=0.6, label='mielke pdf')
或者,可以调用分布对象(作为函数)来固定形状、位置和比例参数。这会返回一个“冻结”的随机变量对象,保持给定参数不变。
冻结分布并显示冻结的pdf
:
>>> rv = mielke(k, s)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查cdf
和ppf
的准确性:
>>> vals = mielke.ppf([0.001, 0.5, 0.999], k, s)
>>> np.allclose([0.001, 0.5, 0.999], mielke.cdf(vals, k, s))
True
生成随机数:
>>> r = mielke.rvs(k, s, size=1000)
并且比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(k, s, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, k, s, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, k, s, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, k, s, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, k, s, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, k, s, loc=0, scale=1) | 生存函数(也定义为1 - cdf ,但sf有时更准确)。 |
logsf(x, k, s, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, k, s, loc=0, scale=1) | 百分位点函数(cdf 的反函数 - 百分位数)。 |
isf(q, k, s, loc=0, scale=1) | 逆生存函数(sf 的反函数)。 |
moment(order, k, s, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(k, s, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(k, s, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 通用数据的参数估计。详细文档请参阅scipy.stats.rv_continuous.fit。 |
**expect(func, args=(k, s), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 相对于分布的函数(一个参数的)的期望值。 |
median(k, s, loc=0, scale=1) | 分布的中位数。 |
mean(k, s, loc=0, scale=1) | 分布的均值。 |
var(k, s, loc=0, scale=1) | 分布的方差。 |
std(k, s, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, k, s, loc=0, scale=1) | 中位数周围面积相等的置信区间。 |
scipy.stats.moyal
原文链接:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.moyal.html#scipy.stats.moyal
scipy.stats.moyal = <scipy.stats._continuous_distns.moyal_gen object>
一个 Moyal 连续随机变量。
作为 rv_continuous
类的一个实例,moyal
对象继承了它的一组通用方法(详见下文的完整列表),并用于完成特定于此特定分布的详细信息。
注释
moyal
的概率密度函数为:
[f(x) = \exp(-(x + \exp(-x))/2) / \sqrt{2\pi}]
对于实数 (x)。
上述概率密度在“标准化”形式中定义。要移动和/或缩放分布,请使用 loc
和 scale
参数。具体来说,moyal.pdf(x, loc, scale)
与 moyal.pdf(y) / scale
完全等价,其中 y = (x - loc) / scale
。请注意,移动分布的位置并不会使其成为“非中心”分布;某些分布的非中心推广可在单独的类中找到。
该分布在高能物理和辐射检测中很有用。它描述了由于介质电离而导致的带电相对论粒子的能量损失 [1]。它还为 Landau 分布提供了一个近似。有关详细描述,请参见 [2]。有关其他描述,请参见 [3]。
参考文献
[1]
J.E. Moyal,“XXX. Theory of ionization fluctuations”,《伦敦、爱丁堡和都柏林哲学杂志与科学期刊》,第 46 卷,263-280,(1955)。DOI:10.1080/14786440308521076 (需付费获取)
[2]
G. Cordeiro 等人,“The beta Moyal: a useful skew distribution”,《国际研究与评论应用科学期刊》,第 10 卷,171-192,(2012)。www.arpapress.com/Volumes/Vol10Issue2/IJRRAS_10_2_02.pdf
[3]
C. Walck,“实验者统计分布手册;国际报告 SUF-PFY/96-01”,第二十六章,斯德哥尔摩大学:瑞典斯德哥尔摩,(2007)。www.stat.rice.edu/~dobelman/textfiles/DistributionsHandbook.pdf
1.1.0 版的新功能。
示例
>>> import numpy as np
>>> from scipy.stats import moyal
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> mean, var, skew, kurt = moyal.stats(moments='mvsk')
显示概率密度函数 (pdf
):
>>> x = np.linspace(moyal.ppf(0.01),
... moyal.ppf(0.99), 100)
>>> ax.plot(x, moyal.pdf(x),
... 'r-', lw=5, alpha=0.6, label='moyal pdf')
或者,可以调用分布对象(作为函数)来固定形状、位置和比例参数。这将返回一个“冻结”的 RV 对象,保持给定参数不变。
冻结分布并显示冻结的 pdf
:
>>> rv = moyal()
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查 cdf
和 ppf
的准确性:
>>> vals = moyal.ppf([0.001, 0.5, 0.999])
>>> np.allclose([0.001, 0.5, 0.999], moyal.cdf(vals))
True
生成随机数:
>>> r = moyal.rvs(size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
Methods
rvs(loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, loc=0, scale=1) | 生存函数(也定义为1 - cdf ,但sf有时更精确)。 |
logsf(x, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, loc=0, scale=1) | 百分位点函数(cdf 的逆 — 百分位数)。 |
isf(q, loc=0, scale=1) | 逆生存函数(sf 的逆)。 |
moment(order, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)、峰度(‘k’)。 |
entropy(loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 用于一般数据的参数估计。详细文档请参见 scipy.stats.rv_continuous.fit。 |
**expect(func, args=(), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 期望值函数(一个参数的)关于分布的期望值。 |
median(loc=0, scale=1) | 分布的中位数。 |
mean(loc=0, scale=1) | 分布的均值。 |
var(loc=0, scale=1) | 分布的方差。 |
std(loc=0, scale=1) | 分布的标准差。 |
interval(confidence, loc=0, scale=1) | 等面积置信区间围绕中位数。 |
scipy.stats.nakagami
原文链接:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.nakagami.html#scipy.stats.nakagami
scipy.stats.nakagami = <scipy.stats._continuous_distns.nakagami_gen object>
一个 Nakagami 连续随机变量。
作为 rv_continuous
类的一个实例,nakagami
对象继承了一组通用方法(请参阅下文的完整列表),并以此特定分布的详细信息进行了补充。
注释
nakagami
的概率密度函数为:
[f(x, \nu) = \frac{2 \nu^\nu}{\Gamma(\nu)} x^{2\nu-1} \exp(-\nu x²)]
对于 (x \geq 0), (\nu > 0)。该分布是在 [2] 中引入的,详细信息请参见 [1]。
nakagami
以 nu
作为形状参数对 (\nu) 进行定义。
上述概率密度在“标准化”形式中定义。要移动和/或缩放分布,请使用 loc
和 scale
参数。具体而言,nakagami.pdf(x, nu, loc, scale)
与 nakagami.pdf(y, nu) / scale
等效,其中 y = (x - loc) / scale
。请注意,移动分布的位置并不使其成为“非中心”分布;某些分布的非中心泛化可在单独的类中使用。
参考资料
[1]
“Nakagami 分布”, 维基百科 en.wikipedia.org/wiki/Nakagami_distribution
[2]
M. Nakagami, “The m-distribution - A general formula of intensity distribution of rapid fading”, Statistical methods in radio wave propagation, Pergamon Press, 1960, 3-36. DOI:10.1016/B978-0-08-009306-2.50005-4
示例
>>> import numpy as np
>>> from scipy.stats import nakagami
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> nu = 4.97
>>> mean, var, skew, kurt = nakagami.stats(nu, moments='mvsk')
显示概率密度函数 (pdf
):
>>> x = np.linspace(nakagami.ppf(0.01, nu),
... nakagami.ppf(0.99, nu), 100)
>>> ax.plot(x, nakagami.pdf(x, nu),
... 'r-', lw=5, alpha=0.6, label='nakagami pdf')
或者,可以通过调用分布对象(作为函数)来固定形状、位置和比例参数。这将返回一个“冻结”的 RV 对象,其中包含给定的固定参数。
冻结分布并显示冻结的 pdf
:
>>> rv = nakagami(nu)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查 cdf
和 ppf
的准确性:
>>> vals = nakagami.ppf([0.001, 0.5, 0.999], nu)
>>> np.allclose([0.001, 0.5, 0.999], nakagami.cdf(vals, nu))
True
生成随机数:
>>> r = nakagami.rvs(nu, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(nu, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, nu, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, nu, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, nu, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, nu, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, nu, loc=0, scale=1) | 生存函数(也定义为1 - cdf ,但sf有时更精确)。 |
logsf(x, nu, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, nu, loc=0, scale=1) | 百分位点函数(cdf 的反函数 — 百分位数)。 |
isf(q, nu, loc=0, scale=1) | 逆生存函数(sf 的反函数)。 |
moment(order, nu, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(nu, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(nu, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 通用数据的参数估计。详细文档请参见 scipy.stats.rv_continuous.fit 。 |
**expect(func, args=(nu,), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 函数(一元)关于分布的期望值。 |
median(nu, loc=0, scale=1) | 分布的中位数。 |
mean(nu, loc=0, scale=1) | 分布的均值。 |
var(nu, loc=0, scale=1) | 分布的方差。 |
std(nu, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, nu, loc=0, scale=1) | 等面积置信区间,围绕中位数。 |
scipy.stats.ncx2
原文:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.ncx2.html#scipy.stats.ncx2
scipy.stats.ncx2 = <scipy.stats._continuous_distns.ncx2_gen object>
非中心卡方连续随机变量。
作为 rv_continuous
类的实例,ncx2
对象继承了一组通用方法(下面列出了完整列表),并使用特定于此特定分布的详细信息来完成它们。
注意
ncx2
的概率密度函数为:
[f(x, k, \lambda) = \frac{1}{2} \exp(-(\lambda+x)/2) (x/\lambda)^{(k-2)/4} I_{(k-2)/2}(\sqrt{\lambda x})]
对于 (x \geq 0), (k > 0) 和 (\lambda \geq 0)。 (k) 指定自由度(在实现中称为 df
),(\lambda) 是非中心参数(在实现中称为 nc
)。 (I_\nu) 表示一阶修正贝塞尔函数的阶数为 (\nu)(scipy.special.iv
)。
ncx2
接受 df
和 nc
作为形状参数。
上述概率密度定义为“标准化”形式。要移动和/或缩放分布,请使用 loc
和 scale
参数。具体来说,ncx2.pdf(x, df, nc, loc, scale)
与 ncx2.pdf(y, df, nc) / scale
等效,其中 y = (x - loc) / scale
。请注意,移动分布的位置不会使其成为“非中心”分布;某些分布的非中心泛化是在单独的类中提供的。
示例
>>> import numpy as np
>>> from scipy.stats import ncx2
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> df, nc = 21, 1.06
>>> mean, var, skew, kurt = ncx2.stats(df, nc, moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(ncx2.ppf(0.01, df, nc),
... ncx2.ppf(0.99, df, nc), 100)
>>> ax.plot(x, ncx2.pdf(x, df, nc),
... 'r-', lw=5, alpha=0.6, label='ncx2 pdf')
或者,可以调用分布对象(作为函数)来固定形状、位置和比例参数。这将返回一个“冻结”的 RV 对象,其中给定参数被固定。
冻结分布并显示冻结的 pdf
:
>>> rv = ncx2(df, nc)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查 cdf
和 ppf
的准确性:
>>> vals = ncx2.ppf([0.001, 0.5, 0.999], df, nc)
>>> np.allclose([0.001, 0.5, 0.999], ncx2.cdf(vals, df, nc))
True
生成随机数:
>>> r = ncx2.rvs(df, nc, size=1000)
然后比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(df, nc, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, df, nc, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, df, nc, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, df, nc, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, df, nc, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, df, nc, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但 sf 有时更准确)。 |
logsf(x, df, nc, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, df, nc, loc=0, scale=1) | 百分位点函数(cdf 的反函数 — 百分位数)。 |
isf(q, df, nc, loc=0, scale=1) | 逆生存函数(sf 的逆函数)。 |
moment(order, df, nc, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(df, nc, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)、以及/或者峰度(‘k’)。 |
entropy(df, nc, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 通用数据的参数估计。详细文档请参阅scipy.stats.rv_continuous.fit。 |
**expect(func, args=(df, nc), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 相对于分布的函数(一维参数)的期望值。 |
median(df, nc, loc=0, scale=1) | 分布的中位数。 |
mean(df, nc, loc=0, scale=1) | 分布的均值。 |
var(df, nc, loc=0, scale=1) | 分布的方差。 |
std(df, nc, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, df, nc, loc=0, scale=1) | 置信区间,围绕中位数具有相等的面积。 |
scipy.stats.ncf
原文链接:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.ncf.html#scipy.stats.ncf
scipy.stats.ncf = <scipy.stats._continuous_distns.ncf_gen object>
非中心 F 分布连续随机变量。
作为rv_continuous
类的一个实例,ncf
对象继承了一系列通用方法(下面列出完整列表),并以特定于这个特定分布的细节完善了它们。
另请参阅
scipy.stats.f
Fisher 分布
注释
ncf
的概率密度函数为:
[\begin{split}f(x, n_1, n_2, \lambda) = \exp\left(\frac{\lambda}{2} + \lambda n_1 \frac{x}{2(n_1 x + n_2)} \right) n_1^{n_1/2} n_2^{n_2/2} x^{n_1/2 - 1} \ (n_2 + n_1 x)^{-(n_1 + n_2)/2} \gamma(n_1/2) \gamma(1 + n_2/2) \ \frac{L^{\frac{n_1}{2}-1}_{n_2/2} \left(-\lambda n_1 \frac{x}{2(n_1 x + n_2)}\right)} {B(n_1/2, n_2/2) \gamma\left(\frac{n_1 + n_2}{2}\right)}\end{split}]
对于(n_1, n_2 > 0), (\lambda \ge 0). 这里(n_1)是分子自由度,(n_2)是分母自由度,(\lambda)是非心参数,(\gamma)是伽玛函数的对数,(L_n^k)是广义拉盖尔多项式,(B)是贝塔函数。
ncf
接受df1
、df2
和nc
作为形状参数。如果nc=0
,分布将等同于 Fisher 分布。
上述概率密度在“标准化”形式下定义。要移动和/或缩放分布,请使用loc
和scale
参数。具体而言,ncf.pdf(x, dfn, dfd, nc, loc, scale)
与ncf.pdf(y, dfn, dfd, nc) / scale
等价,其中y = (x - loc) / scale
。请注意,移动分布的位置并不使其成为“非中心”分布;某些分布的非中心推广在单独的类中可用。
示例
>>> import numpy as np
>>> from scipy.stats import ncf
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> dfn, dfd, nc = 27, 27, 0.416
>>> mean, var, skew, kurt = ncf.stats(dfn, dfd, nc, moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(ncf.ppf(0.01, dfn, dfd, nc),
... ncf.ppf(0.99, dfn, dfd, nc), 100)
>>> ax.plot(x, ncf.pdf(x, dfn, dfd, nc),
... 'r-', lw=5, alpha=0.6, label='ncf pdf')
或者,可以调用分布对象(作为函数)以固定形状、位置和比例参数。这将返回一个“冻结”的 RV 对象,其中给定的参数被固定。
冻结分布并显示冻结的pdf
:
>>> rv = ncf(dfn, dfd, nc)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查cdf
和ppf
的准确性:
>>> vals = ncf.ppf([0.001, 0.5, 0.999], dfn, dfd, nc)
>>> np.allclose([0.001, 0.5, 0.999], ncf.cdf(vals, dfn, dfd, nc))
True
生成随机数:
>>> r = ncf.rvs(dfn, dfd, nc, size=1000)
并且比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(dfn, dfd, nc, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, dfn, dfd, nc, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, dfn, dfd, nc, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, dfn, dfd, nc, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, dfn, dfd, nc, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, dfn, dfd, nc, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但sf有时更准确)。 |
logsf(x, dfn, dfd, nc, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, dfn, dfd, nc, loc=0, scale=1) | 百分点函数(cdf 的逆 — 百分位数)。 |
isf(q, dfn, dfd, nc, loc=0, scale=1) | 逆生存函数(sf 的逆)。 |
moment(order, dfn, dfd, nc, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(dfn, dfd, nc, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)、峰度(‘k’)。 |
entropy(dfn, dfd, nc, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 通用数据的参数估计。详细文档请参见 scipy.stats.rv_continuous.fit。 |
**expect(func, args=(dfn, dfd, nc), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 对分布的函数(一个参数)的期望值。 |
median(dfn, dfd, nc, loc=0, scale=1) | 分布的中位数。 |
mean(dfn, dfd, nc, loc=0, scale=1) | 分布的均值。 |
var(dfn, dfd, nc, loc=0, scale=1) | 分布的方差。 |
std(dfn, dfd, nc, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, dfn, dfd, nc, loc=0, scale=1) | 等面积围绕中位数的置信区间。 |
scipy.stats.nct
原文链接:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.nct.html#scipy.stats.nct
scipy.stats.nct = <scipy.stats._continuous_distns.nct_gen object>
非中心学生 t 连续随机变量。
作为 rv_continuous
类的一个实例,nct
对象从中继承了一组通用方法(请参阅下面的完整列表),并使用特定于此特定分布的细节完成它们。
注意事项
如果 (Y) 是标准正态随机变量,(V) 是独立的卡方随机变量(chi2
)且具有 (k) 自由度,则
[X = \frac{Y + c}{\sqrt{V/k}}]
在实数线上具有非中心学生 t 分布。自由度参数 (k)(在实现中表示为 df
)满足 (k > 0),非中心参数 (c)(在实现中表示为 nc
)是一个实数。
上述概率密度定义为“标准化”形式。要进行分布的平移和/或缩放,请使用 loc
和 scale
参数。具体而言,nct.pdf(x, df, nc, loc, scale)
与 nct.pdf(y, df, nc) / scale
等效,其中 y = (x - loc) / scale
。请注意,通过移动分布的位置并不会使其成为“非中心”分布;某些分布的非中心推广是在单独的类中提供的。
示例
>>> import numpy as np
>>> from scipy.stats import nct
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个时刻:
>>> df, nc = 14, 0.24
>>> mean, var, skew, kurt = nct.stats(df, nc, moments='mvsk')
显示概率密度函数 (pdf
):
>>> x = np.linspace(nct.ppf(0.01, df, nc),
... nct.ppf(0.99, df, nc), 100)
>>> ax.plot(x, nct.pdf(x, df, nc),
... 'r-', lw=5, alpha=0.6, label='nct pdf')
或者,可以调用分布对象(作为函数),以固定形状、位置和比例参数。这将返回一个“冻结”的 RV 对象,其中包含给定的固定参数。
冻结分布并显示冻结的 pdf
:
>>> rv = nct(df, nc)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查 cdf
和 ppf
的准确性:
>>> vals = nct.ppf([0.001, 0.5, 0.999], df, nc)
>>> np.allclose([0.001, 0.5, 0.999], nct.cdf(vals, df, nc))
True
生成随机数:
>>> r = nct.rvs(df, nc, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(df, nc, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, df, nc, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, df, nc, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, df, nc, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, df, nc, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, df, nc, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但 sf 有时更精确)。 |
logsf(x, df, nc, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, df, nc, loc=0, scale=1) | 百分位点函数(cdf 的反函数 — 百分位数)。 |
isf(q, df, nc, loc=0, scale=1) | 逆生存函数(sf 的反函数)。 |
moment(order, df, nc, loc=0, scale=1) | 指定阶数的非中心时刻。 |
stats(df, nc, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(df, nc, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 一般数据的参数估计。详细文档参见scipy.stats.rv_continuous.fit。 |
**expect(func, args=(df, nc), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 关于分布的一个参数的函数的期望值。 |
median(df, nc, loc=0, scale=1) | 分布的中位数。 |
mean(df, nc, loc=0, scale=1) | 分布的均值。 |
var(df, nc, loc=0, scale=1) | 分布的方差。 |
std(df, nc, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, df, nc, loc=0, scale=1) | 中位数周围面积相等的置信区间。 |
scipy.stats.norm
原文:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.norm.html#scipy.stats.norm
scipy.stats.norm = <scipy.stats._continuous_distns.norm_gen object>
一个正态连续随机变量。
loc
关键字指定均值。scale
关键字指定标准差。
作为rv_continuous
类的一个实例,norm
对象继承了一组通用方法(请参阅下面的完整列表),并针对这种特定分布添加了具体的细节。
注意事项
norm
的概率密度函数为:
[f(x) = \frac{\exp(-x²/2)}{\sqrt{2\pi}}]
对于实数(x)。
上述概率密度在“标准化”形式中定义。要移动和/或缩放分布,请使用loc
和scale
参数。具体地,norm.pdf(x, loc, scale)
与norm.pdf(y) / scale
完全等价,其中y = (x - loc) / scale
。请注意,移动分布的位置不会使其成为“非中心”分布;某些分布的非中心广义化在单独的类中可用。
示例
>>> import numpy as np
>>> from scipy.stats import norm
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个时刻:
>>> mean, var, skew, kurt = norm.stats(moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(norm.ppf(0.01),
... norm.ppf(0.99), 100)
>>> ax.plot(x, norm.pdf(x),
... 'r-', lw=5, alpha=0.6, label='norm pdf')
或者,可以将分布对象作为函数调用以固定形状、位置和尺度参数。这将返回一个“冻结”的 RV 对象,固定给定的参数。
冻结分布并显示冻结的pdf
:
>>> rv = norm()
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查cdf
和ppf
的准确性:
>>> vals = norm.ppf([0.001, 0.5, 0.999])
>>> np.allclose([0.001, 0.5, 0.999], norm.cdf(vals))
True
生成随机数:
>>> r = norm.rvs(size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, loc=0, scale=1) | 生存函数(也定义为1 - cdf ,但sf有时更准确)。 |
logsf(x, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, loc=0, scale=1) | 百分点函数(cdf 的逆函数 — 百分位数)。 |
isf(q, loc=0, scale=1) | 逆生存函数(sf 的逆函数)。 |
moment(order, loc=0, scale=1) | 指定顺序的非中心矩。 |
stats(loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(loc=0, scale=1) | RV 的(微分)熵。 |
fit(data) | 通用数据的参数估计。详细文档请参见 scipy.stats.rv_continuous.fit。 |
**expect(func, args=(), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 函数(一元)在分布下的期望值。 |
median(loc=0, scale=1) | 分布的中位数。 |
mean(loc=0, scale=1) | 分布的均值。 |
var(loc=0, scale=1) | 分布的方差。 |
std(loc=0, scale=1) | 分布的标准差。 |
interval(confidence, loc=0, scale=1) | 中位数周围面积相等的置信区间。 |
scipy.stats.norminvgauss
scipy.stats.norminvgauss = <scipy.stats._continuous_distns.norminvgauss_gen object>
一种正态反高斯连续随机变量。
作为 rv_continuous
类的一个实例,norminvgauss
对象从中继承了一组通用方法(详见下文完整列表),并针对这种特定分布提供了具体的细节。
注意事项
norminvgauss
的概率密度函数为:
[f(x, a, b) = \frac{a , K_1(a \sqrt{1 + x²})}{\pi \sqrt{1 + x²}} , \exp(\sqrt{a² - b²} + b x)]
其中 (x) 是实数,参数 (a) 是尾部重的程度,(b) 是满足 (a > 0) 和 (|b| <= a) 的不对称参数。(K_1) 是第二类修正贝塞尔函数(scipy.special.k1
)。
上述概率密度函数定义为“标准化”形式。要移动和/或缩放分布,请使用 loc
和 scale
参数。具体来说,norminvgauss.pdf(x, a, b, loc, scale)
等同于 norminvgauss.pdf(y, a, b) / scale
,其中 y = (x - loc) / scale
。请注意,移动分布的位置并不使其成为“非中心”分布;某些分布的非中心推广可以在单独的类中找到。
一个具有参数 a 和 b 的正态反高斯随机变量 Y 可以表达为正态均值方差混合:Y = b * V + sqrt(V) * X,其中 X 是 norm(0,1),V 是 invgauss(mu=1/sqrt(a2 - b2))。此表示用于生成随机变量。
分布的另一个常见参数化(参见[2]中的方程 2.1)可以通过以下概率密度函数表达式给出:
[g(x, \alpha, \beta, \delta, \mu) = \frac{\alpha\delta K_1\left(\alpha\sqrt{\delta² + (x - \mu)²}\right)} {\pi \sqrt{\delta² + (x - \mu)²}} , e^{\delta \sqrt{\alpha² - \beta²} + \beta (x - \mu)}]
在 SciPy 中,这对应于 a = alpha * delta, b = beta * delta, loc = mu, scale=delta。
参考文献
[1]
O. Barndorff-Nielsen,《双曲分布和双曲线上的分布》,《斯堪的纳维亚统计学杂志》,第 5 卷(第 3 期),第 151-157 页,1978 年。
[2]
O. Barndorff-Nielsen,《正态反高斯分布和随机波动率建模》,《斯堪的纳维亚统计学杂志》,第 24 卷,第 1-13 页,1997 年。
示例
>>> import numpy as np
>>> from scipy.stats import norminvgauss
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> a, b = 1.25, 0.5
>>> mean, var, skew, kurt = norminvgauss.stats(a, b, moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(norminvgauss.ppf(0.01, a, b),
... norminvgauss.ppf(0.99, a, b), 100)
>>> ax.plot(x, norminvgauss.pdf(x, a, b),
... 'r-', lw=5, alpha=0.6, label='norminvgauss pdf')
或者,可以调用分布对象(作为函数)来固定形状、位置和比例参数。这将返回一个“冻结”的 RV 对象,保持给定的参数不变。
冻结分布并显示冻结的pdf
:
>>> rv = norminvgauss(a, b)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查cdf
和ppf
的准确性:
>>> vals = norminvgauss.ppf([0.001, 0.5, 0.999], a, b)
>>> np.allclose([0.001, 0.5, 0.999], norminvgauss.cdf(vals, a, b))
True
生成随机数:
>>> r = norminvgauss.rvs(a, b, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(a, b, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, a, b, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, a, b, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, a, b, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, a, b, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, a, b, loc=0, scale=1) | 生存函数(也定义为1 - cdf ,但sf有时更准确)。 |
logsf(x, a, b, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, a, b, loc=0, scale=1) | 百分点函数(cdf 的逆 — 百分位数)。 |
isf(q, a, b, loc=0, scale=1) | 逆生存函数(sf 的逆)。 |
moment(order, a, b, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(a, b, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(a, b, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 用于通用数据的参数估计。详细文档请参阅 scipy.stats.rv_continuous.fit。 |
**expect(func, args=(a, b), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 对分布的一个参数的函数的期望值。 |
median(a, b, loc=0, scale=1) | 分布的中位数。 |
mean(a, b, loc=0, scale=1) | 分布的均值。 |
var(a, b, loc=0, scale=1) | 分布的方差。 |
std(a, b, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, a, b, loc=0, scale=1) | 等面积置信区间的中位数。 |
scipy.stats.pareto
原文链接:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.pareto.html#scipy.stats.pareto
scipy.stats.pareto = <scipy.stats._continuous_distns.pareto_gen object>
一个帕累托连续随机变量。
作为 rv_continuous
类的一个实例,pareto
对象继承了一系列通用方法(下面有完整列表),并且针对这种特定分布补充了细节。
注意事项
pareto
的概率密度函数为:
[f(x, b) = \frac{b}{x^{b+1}}]
对于 (x \ge 1), (b > 0)。
pareto
将 b
作为形状参数 (b)。
上述概率密度在“标准化”形式下定义。要移动和/或缩放分布,请使用 loc
和 scale
参数。具体而言,pareto.pdf(x, b, loc, scale)
等同于 pareto.pdf(y, b) / scale
,其中 y = (x - loc) / scale
。请注意,移动分布的位置并不使其成为“非中心”分布;某些分布的非中心推广在单独的类中可用。
示例
>>> import numpy as np
>>> from scipy.stats import pareto
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> b = 2.62
>>> mean, var, skew, kurt = pareto.stats(b, moments='mvsk')
显示概率密度函数 (pdf
):
>>> x = np.linspace(pareto.ppf(0.01, b),
... pareto.ppf(0.99, b), 100)
>>> ax.plot(x, pareto.pdf(x, b),
... 'r-', lw=5, alpha=0.6, label='pareto pdf')
或者,可以调用分布对象(作为函数),以固定形状、位置和比例参数。这将返回一个“冻结”的 RV 对象,保持给定参数不变。
冻结分布并显示冻结的 pdf
:
>>> rv = pareto(b)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查 cdf
和 ppf
的准确性:
>>> vals = pareto.ppf([0.001, 0.5, 0.999], b)
>>> np.allclose([0.001, 0.5, 0.999], pareto.cdf(vals, b))
True
生成随机数:
>>> r = pareto.rvs(b, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(b, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, b, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, b, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, b, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, b, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, b, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但 sf 有时更精确)。 |
logsf(x, b, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, b, loc=0, scale=1) | 百分位点函数(cdf 的反函数 — 百分位数)。 |
isf(q, b, loc=0, scale=1) | 逆生存函数(sf 的逆)。 |
moment(order, b, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(b, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(b, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 适用于一般数据的参数估计。详见scipy.stats.rv_continuous.fit以获取关键字参数的详细文档。 |
**expect(func, args=(b,), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 对分布的一个函数(一个参数的函数)的期望值。 |
median(b, loc=0, scale=1) | 分布的中位数。 |
mean(b, loc=0, scale=1) | 分布的均值。 |
var(b, loc=0, scale=1) | 分布的方差。 |
std(b, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, b, loc=0, scale=1) | 置信区间,围绕中位数具有相等面积。 |
scipy.stats.pearson3
原文链接:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.pearson3.html#scipy.stats.pearson3
scipy.stats.pearson3 = <scipy.stats._continuous_distns.pearson3_gen object>
一个 Pearson Type III 连续随机变量。
作为 rv_continuous
类的一个实例,pearson3
对象继承了一些通用方法(请见下面完整列表),并为这个特定分布提供了详细信息。
注释
pearson3
的概率密度函数为:
[f(x, \kappa) = \frac{|\beta|}{\Gamma(\alpha)} (\beta (x - \zeta))^{\alpha - 1} \exp(-\beta (x - \zeta))]
其中:
[ \begin{align}\begin{aligned}\beta = \frac{2}{\kappa}\\alpha = \beta² = \frac{4}{\kappa²}\\zeta = -\frac{\alpha}{\beta} = -\beta\end{aligned}\end{align} ]
(\Gamma) 函数(scipy.special.gamma
作为形状参数 skew
传递给 pearson3
。
上述概率密度在 "标准化" 形式下定义。要移动和/或缩放分布,请使用 loc
和 scale
参数。具体而言,pearson3.pdf(x, skew, loc, scale)
等同于 pearson3.pdf(y, skew) / scale
,其中 y = (x - loc) / scale
。请注意,移动分布的位置并不会使其成为 "非中心" 分布;某些分布的非中心泛化是在单独的类中实现的。
参考文献
R.W. Vogel 和 D.E. McMartin,"Pearson Type 3 分布的概率图拟合和偏斜度估计方法",《水资源研究》, Vol.27, 3149-3158 (1991).
L.R. Salvosa,"Pearson’s Type III 函数表",《数学统计学年鉴》,Vol.1, 191-198 (1930).
"使用现代计算工具将 Pearson Type III 分布拟合到航空载荷数据中",航空研究办公室 (2003).
示例
>>> import numpy as np
>>> from scipy.stats import pearson3
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> skew = -2
>>> mean, var, skew, kurt = pearson3.stats(skew, moments='mvsk')
显示概率密度函数 (pdf
):
>>> x = np.linspace(pearson3.ppf(0.01, skew),
... pearson3.ppf(0.99, skew), 100)
>>> ax.plot(x, pearson3.pdf(x, skew),
... 'r-', lw=5, alpha=0.6, label='pearson3 pdf')
或者,可以调用分布对象(作为函数)来固定形状、位置和尺度参数。这将返回一个固定参数的 "冻结" 随机变量对象。
冻结分布并显示冻结的 pdf
:
>>> rv = pearson3(skew)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查 cdf
和 ppf
的准确性:
>>> vals = pearson3.ppf([0.001, 0.5, 0.999], skew)
>>> np.allclose([0.001, 0.5, 0.999], pearson3.cdf(vals, skew))
True
生成随机数:
>>> r = pearson3.rvs(skew, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(skew, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, skew, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, skew, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, skew, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, skew, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, skew, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但 sf 有时更精确)。 |
logsf(x, skew, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, skew, loc=0, scale=1) | 百分点函数(cdf 的逆函数 — 百分位数)。 |
isf(q, skew, loc=0, scale=1) | 逆生存函数(sf 的逆函数)。 |
moment(order, skew, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(skew, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)、及/或峰度(‘k’)。 |
entropy(skew, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 适用于一般数据的参数估计。详细的关键字参数文档请参见scipy.stats.rv_continuous.fit。 |
**expect(func, args=(skew,), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 关于分布的一个函数(一个参数的函数)的期望值。 |
median(skew, loc=0, scale=1) | 分布的中位数。 |
mean(skew, loc=0, scale=1) | 分布的均值。 |
var(skew, loc=0, scale=1) | 分布的方差。 |
std(skew, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, skew, loc=0, scale=1) | 中位数周围面积相等的置信区间。 |
scipy.stats.powerlaw
原文链接:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.powerlaw.html#scipy.stats.powerlaw
scipy.stats.powerlaw = <scipy.stats._continuous_distns.powerlaw_gen object>
一个幂函数连续随机变量。
作为 rv_continuous
类的一个实例,powerlaw
对象从中继承了一组通用方法(下面详细列出),并针对这种特定分布补充了具体细节。
另请参阅
pareto
注意
powerlaw
的概率密度函数为:
[f(x, a) = a x^{a-1}]
对于 (0 \le x \le 1), (a > 0)。
powerlaw
以 a
作为形状参数。
上述概率密度在“标准化”形式中定义。要移动和/或缩放分布,请使用 loc
和 scale
参数。具体而言,powerlaw.pdf(x, a, loc, scale)
与 powerlaw.pdf(y, a) / scale
是等价的,其中 y = (x - loc) / scale
。请注意,移动分布的位置不会使其成为“非中心”分布;某些分布的非中心推广可以在单独的类中找到。
例如,powerlaw
的支持可以通过设置 loc=c
和 scale=d
将默认区间 [0, 1]
调整为区间 [c, c+d]
。对于具有无限支持的幂律分布,请参见 pareto
。
powerlaw
是带有 b=1
的 beta
的特殊情况。
示例
>>> import numpy as np
>>> from scipy.stats import powerlaw
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个时刻:
>>> a = 0.659
>>> mean, var, skew, kurt = powerlaw.stats(a, moments='mvsk')
显示概率密度函数 (pdf
):
>>> x = np.linspace(powerlaw.ppf(0.01, a),
... powerlaw.ppf(0.99, a), 100)
>>> ax.plot(x, powerlaw.pdf(x, a),
... 'r-', lw=5, alpha=0.6, label='powerlaw pdf')
或者,可以调用分布对象(作为函数),以固定形状、位置和比例参数。这将返回一个“冻结”的随机变量对象,其中包含给定的固定参数。
冻结分布并显示冻结的 pdf
:
>>> rv = powerlaw(a)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查 cdf
和 ppf
的准确性:
>>> vals = powerlaw.ppf([0.001, 0.5, 0.999], a)
>>> np.allclose([0.001, 0.5, 0.999], powerlaw.cdf(vals, a))
True
生成随机数:
>>> r = powerlaw.rvs(a, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(a, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, a, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, a, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, a, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, a, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, a, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但 sf 有时更精确)。 |
logsf(x, a, loc=0, scale=1) | 存活函数的对数。 |
ppf(q, a, loc=0, scale=1) | 百分位点函数(cdf 的逆 — 百分位数)。 |
isf(q, a, loc=0, scale=1) | 逆存活函数(sf 的逆)。 |
moment(order, a, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(a, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)、峰度(‘k’)。 |
entropy(a, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 一般数据的参数估计。详细文档请参阅 scipy.stats.rv_continuous.fit。 |
**expect(func, args=(a,), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 期望值,针对分布的一个参数的函数。 |
median(a, loc=0, scale=1) | 分布的中位数。 |
mean(a, loc=0, scale=1) | 分布的均值。 |
var(a, loc=0, scale=1) | 分布的方差。 |
std(a, loc=0, scale=1) | 分布的标准偏差。 |
interval(confidence, a, loc=0, scale=1) | 置信区间,围绕中位数有相等的面积。 |
scipy.stats.powerlognorm
scipy.stats.powerlognorm = <scipy.stats._continuous_distns.powerlognorm_gen object>
一个幂律对数正态连续随机变量。
作为rv_continuous
类的一个实例,powerlognorm
对象继承了一组通用方法(下面有完整列表),并补充了特定于此特定分布的详细信息。
注意事项
powerlognorm
的概率密度函数为:
[f(x, c, s) = \frac{c}{x s} \phi(\log(x)/s) (\Phi(-\log(x)/s))^{c-1}]
其中(\phi)是正态概率密度函数,(\Phi)是正态累积分布函数,(x > 0),(s, c > 0)。
powerlognorm
采用(c)和(s)作为形状参数。
上述的概率密度函数定义为“标准化”形式。使用loc
和scale
参数来进行分布的移位和/或缩放。具体来说,powerlognorm.pdf(x, c, s, loc, scale)
等同于powerlognorm.pdf(y, c, s) / scale
,其中y = (x - loc) / scale
。请注意,移动分布的位置并不使其成为“非中心”分布;某些分布的非中心推广可以在单独的类中找到。
示例
>>> import numpy as np
>>> from scipy.stats import powerlognorm
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> c, s = 2.14, 0.446
>>> mean, var, skew, kurt = powerlognorm.stats(c, s, moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(powerlognorm.ppf(0.01, c, s),
... powerlognorm.ppf(0.99, c, s), 100)
>>> ax.plot(x, powerlognorm.pdf(x, c, s),
... 'r-', lw=5, alpha=0.6, label='powerlognorm pdf')
或者,可以调用分布对象(作为函数)以固定形状、位置和比例参数。这将返回一个“冻结”的 RV 对象,保持给定参数不变。
冻结分布并显示冻结的pdf
:
>>> rv = powerlognorm(c, s)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查cdf
和ppf
的准确性:
>>> vals = powerlognorm.ppf([0.001, 0.5, 0.999], c, s)
>>> np.allclose([0.001, 0.5, 0.999], powerlognorm.cdf(vals, c, s))
True
生成随机数:
>>> r = powerlognorm.rvs(c, s, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(c, s, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, c, s, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, c, s, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, c, s, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, c, s, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, c, s, loc=0, scale=1) | 生存函数(也定义为1 - cdf ,但sf有时更精确)。 |
logsf(x, c, s, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, c, s, loc=0, scale=1) | 百分位点函数(cdf 的逆函数 — 百分位数)。 |
isf(q, c, s, loc=0, scale=1) | 生存函数的逆函数(sf的逆函数)。 |
moment(order, c, s, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(c, s, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)、及/或峰度(‘k’)。 |
entropy(c, s, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 通用数据的参数估计。详细文档请参见 scipy.stats.rv_continuous.fit。 |
**expect(func, args=(c, s), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 对于分布,函数期望值(一个参数)。 |
median(c, s, loc=0, scale=1) | 分布的中位数。 |
mean(c, s, loc=0, scale=1) | 分布的均值。 |
var(c, s, loc=0, scale=1) | 分布的方差。 |
std(c, s, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, c, s, loc=0, scale=1) | 等面积置信区间,围绕中位数。 |
scipy.stats.powernorm
原文:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.powernorm.html#scipy.stats.powernorm
scipy.stats.powernorm = <scipy.stats._continuous_distns.powernorm_gen object>
一个幂正态连续随机变量。
作为rv_continuous
类的一个实例,powernorm
对象继承了一系列通用方法(请参见下面的完整列表),并通过特定于此特定分布的细节来完成它们。
注意
powernorm
的概率密度函数为:
[f(x, c) = c \phi(x) (\Phi(-x))^{c-1}]
其中(\phi)是正态概率密度函数,(\Phi)是正态累积分布函数,(x)是任意实数,(c > 0) [1]。
powernorm
以形状参数c
为(c)。
上述概率密度在“标准化”形式中定义。要移动和/或缩放分布,请使用loc
和scale
参数。具体而言,powernorm.pdf(x, c, loc, scale)
等价于powernorm.pdf(y, c) / scale
,其中y = (x - loc) / scale
。请注意,移动分布的位置并不使其成为“非中心”分布;某些分布的非中心推广可在单独的类中找到。
参考资料
[1]
NIST 工程统计手册,第 1.3.6.6.13 节,www.itl.nist.gov/div898/handbook//eda/section3/eda366d.htm
示例
>>> import numpy as np
>>> from scipy.stats import powernorm
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个时刻:
>>> c = 4.45
>>> mean, var, skew, kurt = powernorm.stats(c, moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(powernorm.ppf(0.01, c),
... powernorm.ppf(0.99, c), 100)
>>> ax.plot(x, powernorm.pdf(x, c),
... 'r-', lw=5, alpha=0.6, label='powernorm pdf')
或者,可以调用(作为函数)分布对象来固定形状、位置和缩放参数。这将返回一个“冻结”的 RV 对象,保持给定的参数不变。
冻结分布并显示冻结的pdf
:
>>> rv = powernorm(c)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查cdf
和ppf
的准确性:
>>> vals = powernorm.ppf([0.001, 0.5, 0.999], c)
>>> np.allclose([0.001, 0.5, 0.999], powernorm.cdf(vals, c))
True
生成随机数:
>>> r = powernorm.rvs(c, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(c, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, c, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, c, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, c, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, c, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, c, loc=0, scale=1) | 生存函数(也定义为1 - cdf ,但有时sf更精确)。 |
logsf(x, c, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, c, loc=0, scale=1) | 百分位点函数(cdf 的反函数 — 百分位数)。 |
isf(q, c, loc=0, scale=1) | 生存函数的逆函数(sf 的逆函数)。 |
moment(order, c, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(c, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(c, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 适用于通用数据的参数估计。详细文档参见scipy.stats.rv_continuous.fit。 |
**expect(func, args=(c,), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 对于分布的一个参数函数的期望值。 |
median(c, loc=0, scale=1) | 分布的中位数。 |
mean(c, loc=0, scale=1) | 分布的均值。 |
var(c, loc=0, scale=1) | 分布的方差。 |
std(c, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, c, loc=0, scale=1) | 置信区间,围绕中位数有相等的面积。 |
scipy.stats.rdist
原文:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.rdist.html#scipy.stats.rdist
scipy.stats.rdist = <scipy.stats._continuous_distns.rdist_gen object>
一个 R-分布(对称贝塔)的连续随机变量。
作为 rv_continuous
类的一个实例,rdist
对象继承了一组通用方法(下面完整列出),并具有此特定分布的详细信息。
注释
rdist
的概率密度函数为:
[f(x, c) = \frac{(1-x²)^{c/2-1}}{B(1/2, c/2)}]
对于 (-1 \le x \le 1), (c > 0)。rdist
也称为对称贝塔分布:如果 B 服从参数为 (c/2, c/2) 的 beta
分布,则 X = 2*B - 1 服从参数为 c 的 R-分布。
rdist
将 c
作为参数 (c) 的形状参数。
此分布包含以下特殊情况的分布核:
c = 2: uniform
c = 3: `semicircular`
c = 4: Epanechnikov (parabolic)
c = 6: quartic (biweight)
c = 8: triweight
上述概率密度在“标准化”形式中定义。要移动和/或缩放分布,请使用 loc
和 scale
参数。具体来说,rdist.pdf(x, c, loc, scale)
与 rdist.pdf(y, c) / scale
是等价的,其中 y = (x - loc) / scale
。请注意,移动分布的位置并不使其成为“非中心”分布;某些分布的非中心推广可以在单独的类中找到。
示例
>>> import numpy as np
>>> from scipy.stats import rdist
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个时刻:
>>> c = 1.6
>>> mean, var, skew, kurt = rdist.stats(c, moments='mvsk')
显示概率密度函数 (pdf
):
>>> x = np.linspace(rdist.ppf(0.01, c),
... rdist.ppf(0.99, c), 100)
>>> ax.plot(x, rdist.pdf(x, c),
... 'r-', lw=5, alpha=0.6, label='rdist pdf')
或者,可以调用分布对象(作为函数)来固定形状、位置和尺度参数。这将返回一个“冻结”的 RV 对象,其中给定的参数被固定。
冻结分布并显示冻结的 pdf
:
>>> rv = rdist(c)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查 cdf
和 ppf
的准确性:
>>> vals = rdist.ppf([0.001, 0.5, 0.999], c)
>>> np.allclose([0.001, 0.5, 0.999], rdist.cdf(vals, c))
True
生成随机数:
>>> r = rdist.rvs(c, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(c, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, c, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, c, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, c, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, c, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, c, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但 sf 有时更准确)。 |
logsf(x, c, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, c, loc=0, scale=1) | 百分点函数(cdf 的反函数 — 百分位数)。 |
isf(q, c, loc=0, scale=1) | 生存函数的反函数(sf 的反函数)。 |
moment(order, c, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(c, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)的统计量。 |
entropy(c, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 通用数据的参数估计。详细文档请参阅scipy.stats.rv_continuous.fit。 |
**expect(func, args=(c,), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 关于分布的一个函数(一个参数)的期望值。 |
median(c, loc=0, scale=1) | 分布的中位数。 |
mean(c, loc=0, scale=1) | 分布的均值。 |
var(c, loc=0, scale=1) | 分布的方差。 |
std(c, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, c, loc=0, scale=1) | 中位数周围等面积的置信区间。 |
scipy.stats.rayleigh
原文:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.rayleigh.html#scipy.stats.rayleigh
scipy.stats.rayleigh = <scipy.stats._continuous_distns.rayleigh_gen object>
一个雷利连续随机变量。
作为 rv_continuous
类的一个实例,rayleigh
对象继承了一组通用方法(请参阅下面的完整列表),并为这种特定分布添加了细节。
注意
对于 rayleigh
的概率密度函数如下:
[f(x) = x \exp(-x²/2)]
对于 (x \ge 0)。
rayleigh
是带有 df=2
的chi
的特殊情况。
上述概率密度在“标准化”形式中定义。要移动和/或缩放分布,请使用 loc
和 scale
参数。具体而言,rayleigh.pdf(x, loc, scale)
与 rayleigh.pdf(y) / scale
等价,其中 y = (x - loc) / scale
。请注意,移动分布的位置并不会使其成为“非中心”分布;一些分布的非中心推广在单独的类中可用。
示例
>>> import numpy as np
>>> from scipy.stats import rayleigh
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四阶矩:
>>> mean, var, skew, kurt = rayleigh.stats(moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(rayleigh.ppf(0.01),
... rayleigh.ppf(0.99), 100)
>>> ax.plot(x, rayleigh.pdf(x),
... 'r-', lw=5, alpha=0.6, label='rayleigh pdf')
或者,可以通过调用分布对象(作为函数)来固定形状、位置和比例参数。这将返回一个持有给定参数固定的“冻结”随机变量对象。
冻结分布并显示冻结的 pdf
:
>>> rv = rayleigh()
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查 cdf
和 ppf
的准确性:
>>> vals = rayleigh.ppf([0.001, 0.5, 0.999])
>>> np.allclose([0.001, 0.5, 0.999], rayleigh.cdf(vals))
True
生成随机数:
>>> r = rayleigh.rvs(size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, loc=0, scale=1) | 存活函数(也定义为 1 - cdf ,但 sf 有时更精确)。 |
logsf(x, loc=0, scale=1) | 存活函数的对数。 |
ppf(q, loc=0, scale=1) | 百分位点函数(cdf 的逆 — 百分位数)。 |
isf(q, loc=0, scale=1) | 逆存活函数(sf 的逆)。 |
moment(order, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 通用数据的参数估计。详细文档请参见scipy.stats.rv_continuous.fit。 |
**expect(func, args=(), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 对于分布,函数(一个参数的)的期望值。 |
median(loc=0, scale=1) | 分布的中位数。 |
mean(loc=0, scale=1) | 分布的均值。 |
var(loc=0, scale=1) | 分布的方差。 |
std(loc=0, scale=1) | 分布的标准差。 |
interval(confidence, loc=0, scale=1) | 中位数周围面积相等的置信区间。 |
scipy.stats.rel_breitwigner
scipy.stats.rel_breitwigner = <scipy.stats._continuous_distns.rel_breitwigner_gen object>
一个相对论性的布莱特-温纳随机变量。
作为 rv_continuous
类的一个实例,rel_breitwigner
对象继承了一系列通用方法(下面详细列出),并通过具体细节完善了这些方法,以适应这一特定分布。
参见
cauchy
柯西分布,也称为布莱特-温纳分布。
注释
rel_breitwigner
的概率密度函数为
[f(x, \rho) = \frac{k}{(x² - \rho²)² + \rho²}]
其中
[k = \frac{2\sqrt{2}\rho²\sqrt{\rho² + 1}} {\pi\sqrt{\rho² + \rho\sqrt{\rho² + 1}}}]
相对论布莱特-温纳分布用于模拟高能物理中的共振态 [1]。它提供了不变质量 (M) 的不确定性 [2],其中具有特征质量 (M_0) 和衰减宽度 (\Gamma) 的共振。在 SciPy 的参数化中,形状参数 (\rho) 等于 (M_0/\Gamma),并且取值在 ((0, \infty)) 之间。
同样,相对论布莱特-温纳分布被认为提供了质心能量 (E_{\text{cm}}) 的不确定性。在自然单位中,光速 (c) 等于 1,不变质量 (M) 等于静止能量 (Mc²)。在质心参考系中,静止能量等于总能量 [3]。
上述概率密度在“标准化”形式中定义。要移动和/或缩放分布,请使用 loc
和 scale
参数。具体来说,rel_breitwigner.pdf(x, rho, loc, scale)
与 rel_breitwigner.pdf(y, rho) / scale
是完全等价的,其中 y = (x - loc) / scale
。请注意,移动分布的位置并不使其成为“非中心”分布;某些分布的非中心推广可以在单独的类中找到。
(\rho = M/\Gamma),其中 (\Gamma) 是尺度参数。例如,如果要模拟 (Z⁰) 玻色子,其 (M_0 \approx 91.1876 \text{ GeV}),(\Gamma \approx 2.4952\text{ GeV}) [4],则可以设置 rho=91.1876/2.4952
和 scale=2.4952
。
在使用 fit
方法时,为了确保物理上的有意义结果,应将 floc=0
设置为将位置参数固定为 0。
参考文献
[1]
相对论性布莱特-维格纳分布,维基百科,zh.wikipedia.org/wiki/相对论性布莱特-维格纳分布
[2]
不变质量,维基百科,zh.wikipedia.org/wiki/不变质量
[3]
动量中心系,维基百科,zh.wikipedia.org/wiki/动量中心系
[4]
M. Tanabashi et al.(粒子数据组)Phys. Rev. D 98, 030001 - 发表于 2018 年 8 月 17 日
举例:
>>> import numpy as np
>>> from scipy.stats import rel_breitwigner
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> rho = 36.5
>>> mean, var, skew, kurt = rel_breitwigner.stats(rho, moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(rel_breitwigner.ppf(0.01, rho),
... rel_breitwigner.ppf(0.99, rho), 100)
>>> ax.plot(x, rel_breitwigner.pdf(x, rho),
... 'r-', lw=5, alpha=0.6, label='rel_breitwigner pdf')
或者,可以调用分布对象(作为函数),以固定形状、位置和比例参数。这将返回一个“冻结”的随机变量对象,其中固定了给定的参数。
冻结分布并显示冻结的pdf
:
>>> rv = rel_breitwigner(rho)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查cdf
和ppf
的准确性:
>>> vals = rel_breitwigner.ppf([0.001, 0.5, 0.999], rho)
>>> np.allclose([0.001, 0.5, 0.999], rel_breitwigner.cdf(vals, rho))
True
生成随机数:
>>> r = rel_breitwigner.rvs(rho, size=1000)
然后比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法:
rvs(rho, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, rho, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, rho, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, rho, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, rho, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, rho, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但sf有时更准确)。 |
logsf(x, rho, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, rho, loc=0, scale=1) | 百分点函数(cdf 的逆—百分位数)。 |
isf(q, rho, loc=0, scale=1) | 逆生存函数(sf 的逆)。 |
moment(order, rho, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(rho, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(rho, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 一般数据的参数估计。详细文档请参见scipy.stats.rv_continuous.fit。 |
**expect(func, args=(rho,), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 对分布的函数(一元函数)的期望值。 |
median(rho, loc=0, scale=1) | 分布的中位数。 |
mean(rho, loc=0, scale=1) | 分布的均值。 |
var(rho, loc=0, scale=1) | 分布的方差。 |
std(rho, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, rho, loc=0, scale=1) | 置信区间,围绕中位数有相等的面积。 |
scipy.stats.rice
原文链接:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.rice.html#scipy.stats.rice
scipy.stats.rice = <scipy.stats._continuous_distns.rice_gen object>
Rice 连续随机变量。
作为rv_continuous
类的一个实例,rice
对象继承了一组通用方法(下面详细列出),并补充了特定于该分布的细节。
注意事项
rice
的概率密度函数为:
[f(x, b) = x \exp(- \frac{x² + b²}{2}) I_0(x b)]
对于(x >= 0),(b > 0)。(I_0)是零阶修正贝塞尔函数(scipy.special.i0
)。
rice
以形状参数(b)为参数。
上述概率密度在“标准化”形式中定义。要移动和/或缩放分布,请使用loc
和scale
参数。具体而言,rice.pdf(x, b, loc, scale)
与rice.pdf(y, b) / scale
完全等价,其中y = (x - loc) / scale
。请注意,将分布的位置移动并不会使其成为“非中心”分布;某些分布的非中心广义化在单独的类中可用。
Rice 分布描述了二维向量长度(r),其分量为((U+u, V+v)),其中(U, V)为常数,(u, v)为独立的标准差为(s)的高斯随机变量。设(R = \sqrt{U² + V²})。那么(r)的概率密度函数为rice.pdf(x, R/s, scale=s)
。
例子
>>> import numpy as np
>>> from scipy.stats import rice
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> b = 0.775
>>> mean, var, skew, kurt = rice.stats(b, moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(rice.ppf(0.01, b),
... rice.ppf(0.99, b), 100)
>>> ax.plot(x, rice.pdf(x, b),
... 'r-', lw=5, alpha=0.6, label='rice pdf')
或者,可以调用分布对象(作为函数)来固定形状、位置和比例参数。这会返回一个“冻结”的 RV 对象,其中给定的参数被固定。
冻结分布并显示冻结的pdf
:
>>> rv = rice(b)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查cdf
和ppf
的准确性:
>>> vals = rice.ppf([0.001, 0.5, 0.999], b)
>>> np.allclose([0.001, 0.5, 0.999], rice.cdf(vals, b))
True
生成随机数:
>>> r = rice.rvs(b, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(b, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, b, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, b, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, b, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, b, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, b, loc=0, scale=1) | 生存函数(也定义为1 - cdf ,但sf有时更精确)。 |
logsf(x, b, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, b, loc=0, scale=1) | 百分点函数(cdf 的反函数 — 百分位数)。 |
isf(q, b, loc=0, scale=1) | 逆生存函数(sf 的逆函数)。 |
moment(order, b, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(b, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)、峰度(‘k’)。 |
entropy(b, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 一般数据的参数估计。详见scipy.stats.rv_continuous.fit以获取关键字参数的详细文档。 |
**expect(func, args=(b,), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 函数(一元函数)相对于分布的期望值。 |
median(b, loc=0, scale=1) | 分布的中位数。 |
mean(b, loc=0, scale=1) | 分布的均值。 |
var(b, loc=0, scale=1) | 分布的方差。 |
std(b, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, b, loc=0, scale=1) | 等面积置信区间,围绕中位数。 |
scipy.stats.recipinvgauss
scipy.stats.recipinvgauss = <scipy.stats._continuous_distns.recipinvgauss_gen object>
一个互逆高斯连续随机变量。
作为 rv_continuous
类的一个实例,recipinvgauss
对象继承了一组通用方法(下面列出了完整列表),并根据这个特定分布的细节完成了它们。
注释
recipinvgauss
的概率密度函数为:
[f(x, \mu) = \frac{1}{\sqrt{2\pi x}} \exp\left(\frac{-(1-\mu x)²}{2\mu²x}\right)]
对于 (x \ge 0)。
recipinvgauss
将 mu
作为 (\mu) 的形状参数。
上述概率密度在“标准化”形式中定义。要移动和/或缩放分布,请使用 loc
和 scale
参数。具体而言,recipinvgauss.pdf(x, mu, loc, scale)
与 recipinvgauss.pdf(y, mu) / scale
是完全等价的,其中 y = (x - loc) / scale
。请注意,移动分布的位置并不会使其成为“非中心”分布;某些分布的非中心推广可在单独的类中找到。
示例
>>> import numpy as np
>>> from scipy.stats import recipinvgauss
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> mu = 0.63
>>> mean, var, skew, kurt = recipinvgauss.stats(mu, moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(recipinvgauss.ppf(0.01, mu),
... recipinvgauss.ppf(0.99, mu), 100)
>>> ax.plot(x, recipinvgauss.pdf(x, mu),
... 'r-', lw=5, alpha=0.6, label='recipinvgauss pdf')
或者,可以调用分布对象(作为函数)来固定形状、位置和比例参数。这将返回一个保持给定参数固定的“冻结”RV 对象。
冻结分布并显示冻结的 pdf
:
>>> rv = recipinvgauss(mu)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查 cdf
和 ppf
的准确性:
>>> vals = recipinvgauss.ppf([0.001, 0.5, 0.999], mu)
>>> np.allclose([0.001, 0.5, 0.999], recipinvgauss.cdf(vals, mu))
True
生成随机数:
>>> r = recipinvgauss.rvs(mu, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(mu, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, mu, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, mu, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, mu, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, mu, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, mu, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但 sf 有时更准确)。 |
logsf(x, mu, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, mu, loc=0, scale=1) | 百分位点函数(cdf 的逆 — 百分位数)。 |
isf(q, mu, loc=0, scale=1) | 逆生存函数(sf 的逆)。 |
moment(order, mu, loc=0, scale=1) | 指定顺序的非中心矩。 |
stats(mu, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(mu, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 适用于通用数据的参数估计。详细文档请参见 scipy.stats.rv_continuous.fit。 |
**expect(func, args=(mu,), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 对分布的函数(一元函数)的期望值。 |
median(mu, loc=0, scale=1) | 分布的中位数。 |
mean(mu, loc=0, scale=1) | 分布的均值。 |
var(mu, loc=0, scale=1) | 分布的方差。 |
std(mu, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, mu, loc=0, scale=1) | 等概率置信区间,围绕中位数。 |
scipy.stats.semicircular
scipy.stats.semicircular = <scipy.stats._continuous_distns.semicircular_gen object>
半圆形连续随机变量。
作为 rv_continuous
类的一个实例,semicircular
对象继承了一组通用方法(完整列表见下文),并使用特定于此特定分布的细节来完成它们。
另请参见
rdist
笔记
semicircular
的概率密度函数为:
[f(x) = \frac{2}{\pi} \sqrt{1-x²}]
对于 (-1 \le x \le 1)。
该分布是具有 c = 3 的 rdist
的特例。
上述概率密度在“标准化”形式中定义。 要移动和/或缩放分布,请使用 loc
和 scale
参数。 具体来说,semicircular.pdf(x, loc, scale)
与 semicircular.pdf(y) / scale
完全等价,其中 y = (x - loc) / scale
。 请注意,移动分布的位置并不使其成为“非中心”分布;某些分布的非中心广义化可在单独的类中找到。
参考文献
[1]
“维格纳半圆分布”,en.wikipedia.org/wiki/Wigner_semicircle_distribution
示例
>>> import numpy as np
>>> from scipy.stats import semicircular
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> mean, var, skew, kurt = semicircular.stats(moments='mvsk')
显示概率密度函数 (pdf
):
>>> x = np.linspace(semicircular.ppf(0.01),
... semicircular.ppf(0.99), 100)
>>> ax.plot(x, semicircular.pdf(x),
... 'r-', lw=5, alpha=0.6, label='semicircular pdf')
或者,可以调用分布对象(作为函数),以固定形状、位置和比例参数。 这会返回一个“冻结”的 RV 对象,其中包含给定的参数。
冻结分布并显示冻结的 pdf
:
>>> rv = semicircular()
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查 cdf
和 ppf
的准确性:
>>> vals = semicircular.ppf([0.001, 0.5, 0.999])
>>> np.allclose([0.001, 0.5, 0.999], semicircular.cdf(vals))
True
生成随机数:
>>> r = semicircular.rvs(size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但 sf 有时更精确)。 |
logsf(x, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, loc=0, scale=1) | 百分位点函数(cdf 的反函数 — 百分位数)。 |
isf(q, loc=0, scale=1) | 逆生存函数(sf 的反函数)。 |
moment(order, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 用于一般数据的参数估计。详细文档请参见 scipy.stats.rv_continuous.fit。 |
**expect(func, args=(), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 相对于分布的函数(一个参数)的期望值。 |
median(loc=0, scale=1) | 分布的中位数。 |
mean(loc=0, scale=1) | 分布的均值。 |
var(loc=0, scale=1) | 分布的方差。 |
std(loc=0, scale=1) | 分布的标准差。 |
interval(confidence, loc=0, scale=1) | 中位数周围的置信区间,面积相等。 |
scipy.stats.skewcauchy
scipy.stats.skewcauchy = <scipy.stats._continuous_distns.skewcauchy_gen object>
偏斜的柯西随机变量。
作为rv_continuous
类的一个实例,skewcauchy
对象从中继承了一系列通用方法(下面列出完整列表),并用于特定于该特定分布的详细信息完成它们。
另见
cauchy
柯西分布
Notes
对于skewcauchy
的概率密度函数如下:
[f(x) = \frac{1}{\pi \left(\frac{x²}{\left(a, \text{sign}(x) + 1 \right)²} + 1 \right)}]
对于实数( x )和偏斜参数(-1 < a < 1)。
当( a=0 )时,分布简化为通常的柯西分布。
上述概率密度以“标准化”形式定义。要进行平移和/或缩放分布,请使用loc
和scale
参数。具体来说,skewcauchy.pdf(x, a, loc, scale)
与skewcauchy.pdf(y, a) / scale
完全等效,其中y = (x - loc) / scale
。请注意,改变分布的位置不会使其成为“非中心”分布;某些分布的非中心推广可以在单独的类中找到。
参考文献
[1]
“偏斜广义t分布”,维基百科 en.wikipedia.org/wiki/Skewed_generalized_t_distribution#Skewed_Cauchy_distribution
示例
>>> import numpy as np
>>> from scipy.stats import skewcauchy
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四阶矩:
>>> a = 0.5
>>> mean, var, skew, kurt = skewcauchy.stats(a, moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(skewcauchy.ppf(0.01, a),
... skewcauchy.ppf(0.99, a), 100)
>>> ax.plot(x, skewcauchy.pdf(x, a),
... 'r-', lw=5, alpha=0.6, label='skewcauchy pdf')
或者,可以调用分布对象(作为函数),以固定形状、位置和比例参数。这将返回一个“冻结”的随机变量对象,保持给定的参数不变。
冻结分布并显示冻结的pdf
:
>>> rv = skewcauchy(a)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查cdf
和ppf
的准确性:
>>> vals = skewcauchy.ppf([0.001, 0.5, 0.999], a)
>>> np.allclose([0.001, 0.5, 0.999], skewcauchy.cdf(vals, a))
True
生成随机数:
>>> r = skewcauchy.rvs(a, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(a, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, a, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, a, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, a, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, a, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, a, loc=0, scale=1) | 生存函数(也定义为1 - cdf ,但sf有时更准确)。 |
logsf(x, a, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, a, loc=0, scale=1) | 百分位点函数(cdf 的反函数 - 百分位数)。 |
isf(q, a, loc=0, scale=1) | 逆生存函数(sf 的反函数)。 |
moment(order, a, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(a, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)、峰度(‘k’)。 |
entropy(a, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 一般数据的参数估计。详细文档请参见scipy.stats.rv_continuous.fit。 |
**expect(func, args=(a,), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 关于分布的函数(一参数函数)的期望值。 |
median(a, loc=0, scale=1) | 分布的中位数。 |
mean(a, loc=0, scale=1) | 分布的均值。 |
var(a, loc=0, scale=1) | 分布的方差。 |
std(a, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, a, loc=0, scale=1) | 置信区间,以中位数为中心,面积相等。 |
scipy.stats.skewnorm
原文链接:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.skewnorm.html#scipy.stats.skewnorm
scipy.stats.skewnorm = <scipy.stats._continuous_distns.skewnorm_gen object>
一个偏斜正态随机变量。
作为rv_continuous
类的一个实例,skewnorm
对象从中继承了一组通用方法(下面有完整列表),并通过特定于这种特定分布的细节来完善它们。
注释
概率密度函数为:
skewnorm.pdf(x, a) = 2 * norm.pdf(x) * norm.cdf(a*x)
skewnorm
接受一个实数( a )作为偏斜参数。当a = 0
时,该分布与正态分布相同(norm
)。rvs 实现了[1]的方法。
上述概率密度在“标准化”形式中定义。要移动和/或缩放分布,请使用loc
和scale
参数。具体来说,skewnorm.pdf(x, a, loc, scale)
与skewnorm.pdf(y, a) / scale
等效,其中y = (x - loc) / scale
。请注意,移动分布的位置并不使其成为“非中心”分布;某些分布的非中心推广可以在单独的类中找到。
参考文献
[1]
A. Azzalini 和 A. Capitanio(1999)。多变量偏斜正态分布的统计应用。J. Roy. Statist. Soc., B 61, 579-602。arXiv:0911.2093
示例
>>> import numpy as np
>>> from scipy.stats import skewnorm
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> a = 4
>>> mean, var, skew, kurt = skewnorm.stats(a, moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(skewnorm.ppf(0.01, a),
... skewnorm.ppf(0.99, a), 100)
>>> ax.plot(x, skewnorm.pdf(x, a),
... 'r-', lw=5, alpha=0.6, label='skewnorm pdf')
或者,可以调用分布对象(作为函数)以固定形状、位置和尺度参数。这会返回一个“冻结”的随机变量对象,保持给定的参数不变。
冻结分布并显示冻结的pdf
:
>>> rv = skewnorm(a)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查cdf
和ppf
的准确性:
>>> vals = skewnorm.ppf([0.001, 0.5, 0.999], a)
>>> np.allclose([0.001, 0.5, 0.999], skewnorm.cdf(vals, a))
True
生成随机数:
>>> r = skewnorm.rvs(a, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(a, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, a, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, a, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, a, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, a, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, a, loc=0, scale=1) | 生存函数(也被定义为1 - cdf ,但sf有时更精确)。 |
logsf(x, a, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, a, loc=0, scale=1) | 百分位点函数(cdf 的反函数 — 百分位数)。 |
isf(q, a, loc=0, scale=1) | 逆生存函数(sf 的逆函数)。 |
moment(order, a, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(a, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(a, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 通用数据的参数估计。详细文档请参见scipy.stats.rv_continuous.fit。 |
**expect(func, args=(a,), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 函数期望值(对于一个参数)相对于分布的期望值。 |
median(a, loc=0, scale=1) | 分布的中位数。 |
mean(a, loc=0, scale=1) | 分布的均值。 |
var(a, loc=0, scale=1) | 分布的方差。 |
std(a, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, a, loc=0, scale=1) | 置信区间,围绕中位数具有相等面积。 |
scipy.stats.studentized_range
scipy.stats.studentized_range = <scipy.stats._continuous_distns.studentized_range_gen object>
一个学生化范围连续随机变量。
作为rv_continuous
类的一个实例,studentized_range
对象继承了一系列通用方法(请参见下面的完整列表),并根据这个特定分布的细节进行了补充。
另请参见
t
学生 t 分布
注意
studentized_range
的概率密度函数为:
[f(x; k, \nu) = \frac{k(k-1)\nu^{\nu/2}}{\Gamma(\nu/2) 2^{\nu/2-1}} \int_{0}^{\infty} \int_{-\infty}^{\infty} s^{\nu} e^{-\nu s²/2} \phi(z) \phi(sx + z) [\Phi(sx + z) - \Phi(z)]^{k-2} ,dz ,ds]
对于(x ≥ 0),(k > 1),和(\nu > 0)。
studentized_range
接受k
作为(k)的形状参数,df
作为(\nu)的形状参数。
当(\nu)超过 100,000 时,将使用渐近近似(无穷自由度)来计算累积分布函数[4]和概率分布函数。
上述概率密度在“标准化”形式中定义。要移动和/或缩放分布,请使用loc
和scale
参数。具体而言,studentized_range.pdf(x, k, df, loc, scale)
与studentized_range.pdf(y, k, df) / scale
是完全等价的,其中y = (x - loc) / scale
。请注意,移动分布的位置并不会使其成为“非中心”分布;某些分布的非中心推广可在单独的类中找到。
参考文献
[1]
“学生化范围分布”,en.wikipedia.org/wiki/Studentized_range_distribution
[2]
Batista, Ben Dêivide, 等人。“外部学生化正常中程分布。”《科学与农业技术》,第 41 卷,第 4 期,2017 年,第 378-389 页。doi:10.1590/1413-70542017414047716。
[3]
Harter, H. Leon. “Range and Studentized Range 的表格。”《数理统计学年鉴》,第 31 卷,第 4 期,1960 年,第 1122-1147 页。JSTOR,www.jstor.org/stable/2237810. 访问日期:2021 年 2 月 18 日。
[4]
Lund, R. E., 和 J. R. Lund。“算法 AS 190:学生化范围的概率和上分位数。”《皇家统计学会杂志》C 系列(应用统计学),第 32 卷,第 2 期,1983 年,第 204-210 页。JSTOR,www.jstor.org/stable/2347300. 访问日期:2021 年 2 月 18 日。
示例
>>> import numpy as np
>>> from scipy.stats import studentized_range
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> k, df = 3, 10
>>> mean, var, skew, kurt = studentized_range.stats(k, df, moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(studentized_range.ppf(0.01, k, df),
... studentized_range.ppf(0.99, k, df), 100)
>>> ax.plot(x, studentized_range.pdf(x, k, df),
... 'r-', lw=5, alpha=0.6, label='studentized_range pdf')
或者,可以将分布对象作为函数调用,以固定形状、位置和比例参数。这将返回一个“冻结”的 RV 对象,保持给定的参数不变。
冻结分布并显示冻结的 pdf
:
>>> rv = studentized_range(k, df)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查 cdf
和 ppf
的准确性:
>>> vals = studentized_range.ppf([0.001, 0.5, 0.999], k, df)
>>> np.allclose([0.001, 0.5, 0.999], studentized_range.cdf(vals, k, df))
True
而不是使用 (studentized_range.rvs
) 生成随机变量,对于此分布来说速度非常慢,我们可以使用插值器近似逆 CDF,然后利用这个近似的逆 CDF 进行反变换抽样。
此分布具有无限但很小的右尾,因此我们将注意力集中在最左侧的 99.9%。
>>> a, b = studentized_range.ppf([0, .999], k, df)
>>> a, b
0, 7.41058083802274
>>> from scipy.interpolate import interp1d
>>> rng = np.random.default_rng()
>>> xs = np.linspace(a, b, 50)
>>> cdf = studentized_range.cdf(xs, k, df)
# Create an interpolant of the inverse CDF
>>> ppf = interp1d(cdf, xs, fill_value='extrapolate')
# Perform inverse transform sampling using the interpolant
>>> r = ppf(rng.uniform(size=1000))
并比较直方图:
>>> ax.hist(r, density=True, histtype='stepfilled', alpha=0.2)
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(k, df, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, k, df, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, k, df, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, k, df, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, k, df, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, k, df, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但有时 sf 更精确)。 |
logsf(x, k, df, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, k, df, loc=0, scale=1) | 百分点函数(cdf 的逆 —— 百分位数)。 |
isf(q, k, df, loc=0, scale=1) | 逆生存函数(sf 的逆)。 |
moment(order, k, df, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(k, df, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(k, df, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 通用数据的参数估计。详细文档请参见 scipy.stats.rv_continuous.fit。 |
**expect(func, args=(k, df), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 对分布期望值的函数(一维)进行期望。 |
median(k, df, loc=0, scale=1) | 分布的中位数。 |
mean(k, df, loc=0, scale=1) | 分布的均值。 |
var(k, df, loc=0, scale=1) | 分布的方差。 |
std(k, df, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, k, df, loc=0, scale=1) | 置信区间,围绕中位数有相等面积。 |
scipy.stats.t
原文链接:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.t.html#scipy.stats.t
scipy.stats.t = <scipy.stats._continuous_distns.t_gen object>
A Student’s t 连续随机变量。
对于非中心 t 分布,请参见 nct
。
作为 rv_continuous
类的一个实例,t
对象继承了一组通用方法(下面详细列出),并以此特定分布的特定细节补充它们。
See also
nct
Notes
t
的概率密度函数为:
[f(x, \nu) = \frac{\Gamma((\nu+1)/2)} {\sqrt{\pi \nu} \Gamma(\nu/2)} (1+x²/\nu)^{-(\nu+1)/2}]
where (x) is a real number and the degrees of freedom parameter (\nu) (denoted df
in the implementation) satisfies (\nu > 0). (\Gamma) is the gamma function (scipy.special.gamma
).
上述概率密度定义为“标准化”形式。使用 loc
和 scale
参数进行移位和/或缩放分布。具体来说,t.pdf(x, df, loc, scale)
在 y = (x - loc) / scale
的等效性下等同于 t.pdf(y, df) / scale
。请注意,移动分布的位置并不使其成为“非中心”分布;某些分布的非中心推广在单独的类中可用。
Examples
>>> import numpy as np
>>> from scipy.stats import t
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
Calculate the first four moments:
>>> df = 2.74
>>> mean, var, skew, kurt = t.stats(df, moments='mvsk')
Display the probability density function (pdf
):
>>> x = np.linspace(t.ppf(0.01, df),
... t.ppf(0.99, df), 100)
>>> ax.plot(x, t.pdf(x, df),
... 'r-', lw=5, alpha=0.6, label='t pdf')
或者,可以像调用函数一样调用分布对象以固定形状、位置和比例参数。这将返回一个固定给定参数的“冻结”RV 对象。
Freeze the distribution and display the frozen pdf
:
>>> rv = t(df)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
Check accuracy of cdf
and ppf
:
>>> vals = t.ppf([0.001, 0.5, 0.999], df)
>>> np.allclose([0.001, 0.5, 0.999], t.cdf(vals, df))
True
生成随机数:
>>> r = t.rvs(df, size=1000)
And compare the histogram:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
Methods
rvs(df, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, df, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, df, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, df, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, df, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, df, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但 sf 有时更精确)。 |
logsf(x, df, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, df, loc=0, scale=1) | 百分位点函数(cdf 的反函数 — 百分位数)。 |
isf(q, df, loc=0, scale=1) | 逆生存函数(sf 的反函数)。 |
moment(order, df, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(df, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(df, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 一般数据的参数估计。详细文档请参见scipy.stats.rv_continuous.fit中的关键参数文档。 |
**expect(func, args=(df,), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 相对于分布的一个参数的函数的期望值。 |
median(df, loc=0, scale=1) | 分布的中位数。 |
mean(df, loc=0, scale=1) | 分布的均值。 |
var(df, loc=0, scale=1) | 分布的方差。 |
std(df, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, df, loc=0, scale=1) | 置信区间,围绕中位数具有相等面积的区间。 |
scipy.stats.trapezoid
原文:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.trapezoid.html#scipy.stats.trapezoid
scipy.stats.trapezoid = <scipy.stats._continuous_distns.trapezoid_gen object>
一个梯形连续随机变量。
作为 rv_continuous
类的一个实例,trapezoid
对象继承了一组通用方法(下面列出完整列表),并使用特定于该特定分布的详细信息进行了补充。
注意事项
梯形分布可以用从 loc
到 (loc + c*scale)
的上坡线表示,然后从 (loc + c*scale)
到 (loc + d*scale)
的常数,最后从 (loc + d*scale)
到 (loc+scale)
的下坡线表示。这定义了从 loc
到 (loc+scale)
的梯形基部,以及与基线上的位置比例成正比的从 c
到 d
的平顶部分,其中 0 <= c <= d <= 1
。当 c=d
时,这等同于具有相同 loc、scale 和 c 值的 triang
方法。使用 [1] 中的方法计算矩。
trapezoid
的形状参数为 (c) 和 (d)。
上述概率密度在“标准化”形式下定义。要移动和/或缩放分布,请使用 loc
和 scale
参数。具体而言,trapezoid.pdf(x, c, d, loc, scale)
等价于 trapezoid.pdf(y, c, d) / scale
,其中 y = (x - loc) / scale
。请注意,移动分布的位置并不使其成为“非中心”分布;某些分布的非中心推广可以在单独的类中找到。
标准形式位于区间 [0, 1],其中 c 是众数。位置参数将起始位置移动到 loc。比例参数将宽度从 1 改变到 scale。
参考文献
[1]
Kacker, R.N. 和 Lawrence, J.F. (2007). 用于标准不确定度类型 B 评估的梯形和三角形分布。Metrologia 44, 117-127. DOI:10.1088/0026-1394/44/2/003
示例
>>> import numpy as np
>>> from scipy.stats import trapezoid
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> c, d = 0.2, 0.8
>>> mean, var, skew, kurt = trapezoid.stats(c, d, moments='mvsk')
显示概率密度函数 (pdf
):
>>> x = np.linspace(trapezoid.ppf(0.01, c, d),
... trapezoid.ppf(0.99, c, d), 100)
>>> ax.plot(x, trapezoid.pdf(x, c, d),
... 'r-', lw=5, alpha=0.6, label='trapezoid pdf')
或者,可以调用分布对象(作为函数),以固定形状、位置和比例参数。这将返回一个“冻结”的随机变量对象,保持给定的参数不变。
冻结分布并显示冻结的 pdf
:
>>> rv = trapezoid(c, d)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查 cdf
和 ppf
的准确性:
>>> vals = trapezoid.ppf([0.001, 0.5, 0.999], c, d)
>>> np.allclose([0.001, 0.5, 0.999], trapezoid.cdf(vals, c, d))
True
生成随机数:
>>> r = trapezoid.rvs(c, d, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(c, d, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, c, d, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, c, d, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, c, d, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, c, d, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, c, d, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但sf有时更准确)。 |
logsf(x, c, d, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, c, d, loc=0, scale=1) | 百分位点函数(cdf 的反函数 — 百分位数)。 |
isf(q, c, d, loc=0, scale=1) | 逆生存函数(sf 的反函数)。 |
moment(order, c, d, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(c, d, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)、峰度(‘k’)。 |
entropy(c, d, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 通用数据的参数估计。详细文档请参阅scipy.stats.rv_continuous.fit。 |
**expect(func, args=(c, d), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 关于分布的函数(一个参数)的期望值。 |
median(c, d, loc=0, scale=1) | 分布的中位数。 |
mean(c, d, loc=0, scale=1) | 分布的均值。 |
var(c, d, loc=0, scale=1) | 分布的方差。 |
std(c, d, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, c, d, loc=0, scale=1) | 置信区间,围绕中位数等面积分布。 |
scipy.stats.triang
原文:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.triang.html#scipy.stats.triang
scipy.stats.triang = <scipy.stats._continuous_distns.triang_gen object>
一个三角形连续随机变量。
作为 rv_continuous
类的一个实例,triang
对象继承了一组通用方法(下文列出了全部),并为这个特定分布添加了具体的细节。
注释
三角形分布可以用从 loc
到 (loc + c*scale)
的上斜线表示,然后从 (loc + c*scale)
到 (loc + scale)
的下斜线。
triang
将 c
作为形状参数,范围为 (0 \le c \le 1)。
上述概率密度在“标准化”形式中定义。使用 loc
和 scale
参数来进行分布的移动和/或缩放。具体来说,triang.pdf(x, c, loc, scale)
等同于 triang.pdf(y, c) / scale
,其中 y = (x - loc) / scale
。请注意,改变分布的位置不会使其成为“非中心”分布;某些分布的非中心推广可在单独的类中找到。
标准形式为 [0, 1] 范围内,c 是众数。位置参数将起始位置移至 loc。尺度参数将宽度从 1 改变至 scale。
示例
>>> import numpy as np
>>> from scipy.stats import triang
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> c = 0.158
>>> mean, var, skew, kurt = triang.stats(c, moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(triang.ppf(0.01, c),
... triang.ppf(0.99, c), 100)
>>> ax.plot(x, triang.pdf(x, c),
... 'r-', lw=5, alpha=0.6, label='triang pdf')
或者,可以调用分布对象(作为函数)以固定形状、位置和尺度参数。这将返回一个“冻结”的 RV 对象,其中给定的参数被固定。
冻结分布并显示冻结的 pdf
:
>>> rv = triang(c)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查 cdf
和 ppf
的准确性:
>>> vals = triang.ppf([0.001, 0.5, 0.999], c)
>>> np.allclose([0.001, 0.5, 0.999], triang.cdf(vals, c))
True
生成随机数:
>>> r = triang.rvs(c, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(c, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, c, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, c, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, c, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, c, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, c, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但 sf 有时更准确)。 |
logsf(x, c, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, c, loc=0, scale=1) | 百分位点函数(cdf 的反函数 —— 百分位数)。 |
isf(q, c, loc=0, scale=1) | 逆生存函数(sf 的反函数)。 |
moment(order, c, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(c, loc=0, scale=1, moments=’mv’) | 均值(‘m’),方差(‘v’),偏度(‘s’),和/或峰度(‘k’)。 |
entropy(c, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 通用数据的参数估计。详细文档请参见scipy.stats.rv_continuous.fit。 |
**expect(func, args=(c,), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 关于分布的函数(一个参数)的期望值。 |
median(c, loc=0, scale=1) | 分布的中位数。 |
mean(c, loc=0, scale=1) | 分布的均值。 |
var(c, loc=0, scale=1) | 分布的方差。 |
std(c, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, c, loc=0, scale=1) | 中位数周围面积相等的置信区间。 |
scipy.stats.truncexpon
scipy.stats.truncexpon = <scipy.stats._continuous_distns.truncexpon_gen object>
截断指数连续随机变量。
作为 rv_continuous
类的实例,truncexpon
对象继承了一组通用方法(下面列出全部方法),并用此特定分布的细节完成它们。
注意事项
truncexpon
的概率密度函数为:
[f(x, b) = \frac{\exp(-x)}{1 - \exp(-b)}]
对于 (0 <= x <= b)。
truncexpon
以 b
作为形状参数。
上述概率密度函数以“标准化”形式定义。要移位和/或缩放分布,请使用 loc
和 scale
参数。具体而言,truncexpon.pdf(x, b, loc, scale)
与 truncexpon.pdf(y, b) / scale
是完全等效的,其中 y = (x - loc) / scale
。请注意,移动分布的位置不会使其成为“非中心”分布;某些分布的非中心推广可以在单独的类中找到。
示例
>>> import numpy as np
>>> from scipy.stats import truncexpon
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> b = 4.69
>>> mean, var, skew, kurt = truncexpon.stats(b, moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(truncexpon.ppf(0.01, b),
... truncexpon.ppf(0.99, b), 100)
>>> ax.plot(x, truncexpon.pdf(x, b),
... 'r-', lw=5, alpha=0.6, label='truncexpon pdf')
或者,可以调用分布对象(作为函数)来固定形状、位置和比例参数。这将返回一个“冻结”的随机变量对象,其中给定的参数被固定。
冻结分布并显示冻结的 pdf
:
>>> rv = truncexpon(b)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查cdf
和ppf
的准确性:
>>> vals = truncexpon.ppf([0.001, 0.5, 0.999], b)
>>> np.allclose([0.001, 0.5, 0.999], truncexpon.cdf(vals, b))
True
生成随机数:
>>> r = truncexpon.rvs(b, size=1000)
然后比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(b, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, b, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, b, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, b, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, b, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, b, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但 sf 有时更准确)。 |
logsf(x, b, loc=0, scale=1) | 生存函数的对数(也定义为 1 - cdf ,但 sf 有时更准确)。 |
ppf(q, b, loc=0, scale=1) | 百分位点函数(cdf 的反函数 — 百分位数)。 |
isf(q, b, loc=0, scale=1) | 生存函数的反函数(sf 的反函数)。 |
moment(order, b, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(b, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(b, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 一般数据的参数估计。详细文档请参见 scipy.stats.rv_continuous.fit。 |
**expect(func, args=(b,), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 对分布的一个参数函数的期望值。 |
median(b, loc=0, scale=1) | 分布的中位数。 |
mean(b, loc=0, scale=1) | 分布的均值。 |
var(b, loc=0, scale=1) | 分布的方差。 |
std(b, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, b, loc=0, scale=1) | 围绕中位数的等面积置信区间。 |
scipy.stats.truncnorm
原文链接:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.truncnorm.html#scipy.stats.truncnorm
scipy.stats.truncnorm = <scipy.stats._continuous_distns.truncnorm_gen object>
截断正态连续随机变量。
作为rv_continuous
类的一个实例,truncnorm
对象继承了一系列通用方法(请参阅下面的完整列表),并使用特定于该特定分布的细节补充它们。
Notes
该分布是以loc
(默认为 0)为中心的正态分布,标准差为scale
(默认为 1),并在距离loc
标准偏差为a
和b
处截断。对于任意的loc
和scale
,a
和b
不是移位和缩放后分布截断的横坐标。
注意
如果a_trunc
和b_trunc
是我们希望截断分布的横坐标(而不是从loc
测量的标准偏差数),那么我们可以按以下方式计算分布参数a
和b
:
a, b = (a_trunc - loc) / scale, (b_trunc - loc) / scale
这是一个常见的混淆点。为了进一步澄清,请参见下面的示例。
示例
>>> import numpy as np
>>> from scipy.stats import truncnorm
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个时刻:
>>> a, b = 0.1, 2
>>> mean, var, skew, kurt = truncnorm.stats(a, b, moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(truncnorm.ppf(0.01, a, b),
... truncnorm.ppf(0.99, a, b), 100)
>>> ax.plot(x, truncnorm.pdf(x, a, b),
... 'r-', lw=5, alpha=0.6, label='truncnorm pdf')
或者,可以调用分布对象(作为函数)来固定形状、位置和比例参数。这将返回一个“冻结”的 RV 对象,保持给定的参数不变。
冻结分布并显示冻结的pdf
:
>>> rv = truncnorm(a, b)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查cdf
和ppf
的准确性:
>>> vals = truncnorm.ppf([0.001, 0.5, 0.999], a, b)
>>> np.allclose([0.001, 0.5, 0.999], truncnorm.cdf(vals, a, b))
True
生成随机数:
>>> r = truncnorm.rvs(a, b, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
在上述示例中,loc=0
和scale=1
,因此绘图在左侧截断为a
,右侧截断为b
。但是,假设我们用loc = 1
和scale=0.5
生成相同的直方图。
>>> loc, scale = 1, 0.5
>>> rv = truncnorm(a, b, loc=loc, scale=scale)
>>> x = np.linspace(truncnorm.ppf(0.01, a, b),
... truncnorm.ppf(0.99, a, b), 100)
>>> r = rv.rvs(size=1000)
>>> fig, ax = plt.subplots(1, 1)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim(a, b)
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
注意,分布似乎不再在横坐标a
和b
处截断。这是因为标准正态分布首先在a
和b
处截断,然后将结果分布按scale
缩放并按loc
移动。如果我们希望移位和缩放后的分布在a
和b
处截断,我们需要在传递这些值作为分布参数之前对这些值进行变换。
>>> a_transformed, b_transformed = (a - loc) / scale, (b - loc) / scale
>>> rv = truncnorm(a_transformed, b_transformed, loc=loc, scale=scale)
>>> x = np.linspace(truncnorm.ppf(0.01, a, b),
... truncnorm.ppf(0.99, a, b), 100)
>>> r = rv.rvs(size=10000)
>>> fig, ax = plt.subplots(1, 1)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim(a-0.1, b+0.1)
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(a, b, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, a, b, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, a, b, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, a, b, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, a, b, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, a, b, loc=0, scale=1) | 存活函数(也定义为 1 - cdf ,但sf有时更精确)。 |
logsf(x, a, b, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, a, b, loc=0, scale=1) | 百分点函数(cdf 的逆函数 — 百分位数)。 |
isf(q, a, b, loc=0, scale=1) | 逆存活函数(sf 的逆函数)。 |
moment(order, a, b, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(a, b, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)、峰度(‘k’)。 |
entropy(a, b, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 通用数据的参数估计。详细的关键字参数文档请参见 scipy.stats.rv_continuous.fit。 |
**expect(func, args=(a, b), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 相对于分布的一个参数函数的期望值(具有一个参数)。 |
median(a, b, loc=0, scale=1) | 分布的中位数。 |
mean(a, b, loc=0, scale=1) | 分布的均值。 |
var(a, b, loc=0, scale=1) | 分布的方差。 |
std(a, b, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, a, b, loc=0, scale=1) | 置信区间,围绕中位数具有相等的面积。 |
scipy.stats.truncpareto
scipy.stats.truncpareto = <scipy.stats._continuous_distns.truncpareto_gen object>
上截的 Pareto 连续随机变量。
作为 rv_continuous
类的实例,truncpareto
对象从中继承了一组通用方法(请参阅下面的完整列表),并使用特定于此特定分布的详细信息来完善它们。
另见
pareto
Pareto 分布
注释
truncpareto
的概率密度函数为:
[f(x, b, c) = \frac{b}{1 - c^{-b}} \frac{1}{x^{b+1}}]
对于 (b > 0), (c > 1) 和 (1 \le x \le c)。
truncpareto
以 b 和 c 作为形状参数定义了 (b) 和 (c)。
注意,上截值 (c) 的定义采用标准化形式,以确保未缩放、未移位的随机值位于 [1, c]
的范围内。如果 u_r
是缩放和/或移位变量的上界,则 c = (u_r - loc) / scale
。换句话说,当提供 scale 和/或 loc 参数时,分布的支持区间变为 (scale + loc) <= x <= (c*scale + loc)
。
上述概率密度以“标准化”形式定义。要进行偏移和/或缩放分布,请使用 loc 和 scale 参数。具体来说,truncpareto.pdf(x, b, c, loc, scale)
与 truncpareto.pdf(y, b, c) / scale
是完全等价的,其中 y = (x - loc) / scale
。请注意,改变分布的位置并不会使其成为“非中心”分布;某些分布的非中心推广可在单独的类中找到。
参考文献
[1]
Burroughs, S. M., and Tebbens S. F. “Upper-truncated power laws in natural systems.” Pure and Applied Geophysics 158.4 (2001): 741-757.
示例
>>> import numpy as np
>>> from scipy.stats import truncpareto
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个时刻:
>>> b, c = 2, 5
>>> mean, var, skew, kurt = truncpareto.stats(b, c, moments='mvsk')
显示概率密度函数 (pdf
):
>>> x = np.linspace(truncpareto.ppf(0.01, b, c),
... truncpareto.ppf(0.99, b, c), 100)
>>> ax.plot(x, truncpareto.pdf(x, b, c),
... 'r-', lw=5, alpha=0.6, label='truncpareto pdf')
或者,可以调用分布对象(作为函数),以固定形状、位置和缩放参数。这将返回一个“冻结”的 RV 对象,其中给定的参数被固定。
冻结分布并显示冻结的 pdf
:
>>> rv = truncpareto(b, c)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查 cdf
和 ppf
的准确性:
>>> vals = truncpareto.ppf([0.001, 0.5, 0.999], b, c)
>>> np.allclose([0.001, 0.5, 0.999], truncpareto.cdf(vals, b, c))
True
生成随机数:
>>> r = truncpareto.rvs(b, c, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(b, c, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, b, c, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, b, c, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, b, c, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, b, c, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, b, c, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但 sf 有时更准确)。 |
logsf(x, b, c, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, b, c, loc=0, scale=1) | 百分位点函数(cdf 的反函数 — 百分位数)。 |
isf(q, b, c, loc=0, scale=1) | 逆生存函数(sf 的反函数)。 |
moment(order, b, c, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(b, c, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)、及/或峰度(‘k’)。 |
entropy(b, c, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 一般数据的参数估计。详细文档见 scipy.stats.rv_continuous.fit。 |
**expect(func, args=(b, c), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 函数期望值(对于分布的一个参数的函数)。 |
median(b, c, loc=0, scale=1) | 分布的中位数。 |
mean(b, c, loc=0, scale=1) | 分布的均值。 |
var(b, c, loc=0, scale=1) | 分布的方差。 |
std(b, c, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, b, c, loc=0, scale=1) | 中位数周围的等面积置信区间。 |
scipy.stats.truncweibull_min
scipy.stats.truncweibull_min = <scipy.stats._continuous_distns.truncweibull_min_gen object>
一个双截断的 Weibull 最小连续随机变量。
作为rv_continuous
类的一个实例,truncweibull_min
对象继承了一组通用方法(请参阅下面的完整列表),并使用此特定分布的细节完成了它们。
另请参阅
weibull_min
,truncexpon
注意事项
truncweibull_min
的概率密度函数为:
[f(x, a, b, c) = \frac{c x^{c-1} \exp(-xc)}{\exp(-ac) - \exp(-b^c)}]
对于(a < x <= b),(0 \le a < b)且(c > 0)。
truncweibull_min
以(a)、(b)和(c)作为形状参数。
注意,截断值(a)和(b)以标准化形式定义:
[a = (u_l - loc)/scale b = (u_r - loc)/scale]
其中(u_l)和(u_r)是特定的左右截断值。换句话说,当提供(loc)和/或(scale)时,分布的支持变为((ascale + loc) < x <= (bscale + loc))。
上述概率密度以“标准化”形式定义。要移动和/或缩放分布,请使用loc
和scale
参数。具体而言,truncweibull_min.pdf(x, c, a, b, loc, scale)
与truncweibull_min.pdf(y, c, a, b) / scale
等价,其中y = (x - loc) / scale
。请注意,移动分布的位置不会使其成为“非中心”分布;某些分布的非中心推广可在单独的类中找到。
参考文献
[1]
Rinne, H. “The Weibull Distribution: A Handbook”. CRC Press (2009).
示例
>>> import numpy as np
>>> from scipy.stats import truncweibull_min
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个矩:
>>> c, a, b = 2.5, 0.25, 1.75
>>> mean, var, skew, kurt = truncweibull_min.stats(c, a, b, moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(truncweibull_min.ppf(0.01, c, a, b),
... truncweibull_min.ppf(0.99, c, a, b), 100)
>>> ax.plot(x, truncweibull_min.pdf(x, c, a, b),
... 'r-', lw=5, alpha=0.6, label='truncweibull_min pdf')
或者,可以调用分布对象(作为函数),以固定形状、位置和缩放参数。这将返回一个“冻结”的 RV 对象,其中给定的参数被固定。
冻结分布并显示冻结的pdf
:
>>> rv = truncweibull_min(c, a, b)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查cdf
和ppf
的准确性:
>>> vals = truncweibull_min.ppf([0.001, 0.5, 0.999], c, a, b)
>>> np.allclose([0.001, 0.5, 0.999], truncweibull_min.cdf(vals, c, a, b))
True
生成随机数:
>>> r = truncweibull_min.rvs(c, a, b, size=1000)
并比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(c, a, b, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, c, a, b, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, c, a, b, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, c, a, b, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, c, a, b, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, c, a, b, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但 sf 有时更精确)。 |
logsf(x, c, a, b, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, c, a, b, loc=0, scale=1) | 百分位点函数(cdf 的反函数 — 百分位数)。 |
isf(q, c, a, b, loc=0, scale=1) | 逆生存函数(sf 的反函数)。 |
moment(order, c, a, b, loc=0, scale=1) | 指定阶数的非中心矩。 |
stats(c, a, b, loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(c, a, b, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 通用数据的参数估计。详细文档请参阅 scipy.stats.rv_continuous.fit 。 |
**expect(func, args=(c, a, b), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 关于分布的函数(一个参数)的期望值。 |
median(c, a, b, loc=0, scale=1) | 分布的中位数。 |
mean(c, a, b, loc=0, scale=1) | 分布的均值。 |
var(c, a, b, loc=0, scale=1) | 分布的方差。 |
std(c, a, b, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, c, a, b, loc=0, scale=1) | 等面积置信区间的中位数。 |
scipy.stats.tukeylambda
scipy.stats.tukeylambda = <scipy.stats._continuous_distns.tukeylambda_gen object>
一个 Tukey-Lambda 连续随机变量。
作为 rv_continuous
类的一个实例,tukeylambda
对象从中继承了一组通用方法(下面有完整列表),并使用此特定分布的详细信息补充它们。
注意
一种灵活的分布,能够表示和插值以下分布之间的关系:
-
柯西分布((\lambda = -1))
-
逻辑分布((\lambda = 0))
-
大约正态((\lambda = 0.14))
-
从 -1 到 1 的均匀分布((\lambda = 1))
tukeylambda
接受一个实数 (\lambda)(在实现中表示为 lam
)作为形状参数。
上述概率密度在“标准化”形式中定义。要移动和/或缩放分布,请使用 loc
和 scale
参数。具体来说,tukeylambda.pdf(x, lam, loc, scale)
与 tukeylambda.pdf(y, lam) / scale
完全等价,其中 y = (x - loc) / scale
。请注意,移动分布的位置不会使其成为“非中心”分布;某些分布的非中心泛化在单独的类中可用。
示例
>>> import numpy as np
>>> from scipy.stats import tukeylambda
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个时刻:
>>> lam = 3.13
>>> mean, var, skew, kurt = tukeylambda.stats(lam, moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(tukeylambda.ppf(0.01, lam),
... tukeylambda.ppf(0.99, lam), 100)
>>> ax.plot(x, tukeylambda.pdf(x, lam),
... 'r-', lw=5, alpha=0.6, label='tukeylambda pdf')
或者,可以调用分布对象(作为函数)来固定形状、位置和比例参数。这将返回一个固定给定参数的“冻结”随机变量对象。
冻结分布并显示冻结的pdf
:
>>> rv = tukeylambda(lam)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查 cdf
和 ppf
的准确性:
>>> vals = tukeylambda.ppf([0.001, 0.5, 0.999], lam)
>>> np.allclose([0.001, 0.5, 0.999], tukeylambda.cdf(vals, lam))
True
生成随机数:
>>> r = tukeylambda.rvs(lam, size=1000)
然后比较直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(lam, loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, lam, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, lam, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, lam, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, lam, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, lam, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但 sf 有时更精确)。 |
logsf(x, lam, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, lam, loc=0, scale=1) | 百分位点函数(cdf 的反函数 — 百分位数)。 |
isf(q, lam, loc=0, scale=1) | 反生存函数(sf 的反函数)。 |
moment(order, lam, loc=0, scale=1) | 指定阶数的非中心时刻。 |
stats(lam, loc=0, scale=1, moments=’mv’) | 平均值(‘m’)、方差(‘v’)、偏度(‘s’)、峰度(‘k’)。 |
entropy(lam, loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 适用于通用数据的参数估计。详细文档请参见 scipy.stats.rv_continuous.fit。 |
**expect(func, args=(lam,), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 函数(一个参数)关于分布的期望值。 |
median(lam, loc=0, scale=1) | 分布的中位数。 |
mean(lam, loc=0, scale=1) | 分布的均值。 |
var(lam, loc=0, scale=1) | 分布的方差。 |
std(lam, loc=0, scale=1) | 分布的标准差。 |
interval(confidence, lam, loc=0, scale=1) | 置信区间,围绕中位数的等面积区域。 |
scipy.stats.uniform
原文:
docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.uniform.html#scipy.stats.uniform
scipy.stats.uniform = <scipy.stats._continuous_distns.uniform_gen object>
一个均匀连续随机变量。
在标准形式中,分布在 [0, 1]
上是均匀的。使用参数 loc
和 scale
,可以获得在 [loc, loc + scale]
上的均匀分布。
作为 rv_continuous
类的一个实例,uniform
对象从中继承了一系列通用方法(下面有完整列表),并根据这个特定分布的细节补充了它们。
示例
>>> import numpy as np
>>> from scipy.stats import uniform
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
计算前四个时刻:
>>> mean, var, skew, kurt = uniform.stats(moments='mvsk')
显示概率密度函数(pdf
):
>>> x = np.linspace(uniform.ppf(0.01),
... uniform.ppf(0.99), 100)
>>> ax.plot(x, uniform.pdf(x),
... 'r-', lw=5, alpha=0.6, label='uniform pdf')
或者,可以调用分布对象(作为函数)以固定形状、位置和比例参数。这将返回一个固定参数的“冻结”随机变量对象。
冻结分布并显示冻结的 pdf
:
>>> rv = uniform()
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
检查 cdf
和 ppf
的准确性:
>>> vals = uniform.ppf([0.001, 0.5, 0.999])
>>> np.allclose([0.001, 0.5, 0.999], uniform.cdf(vals))
True
生成随机数:
>>> r = uniform.rvs(size=1000)
对比直方图:
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
方法
rvs(loc=0, scale=1, size=1, random_state=None) | 随机变量。 |
---|---|
pdf(x, loc=0, scale=1) | 概率密度函数。 |
logpdf(x, loc=0, scale=1) | 概率密度函数的对数。 |
cdf(x, loc=0, scale=1) | 累积分布函数。 |
logcdf(x, loc=0, scale=1) | 累积分布函数的对数。 |
sf(x, loc=0, scale=1) | 生存函数(也定义为 1 - cdf ,但 sf 有时更精确)。 |
logsf(x, loc=0, scale=1) | 生存函数的对数。 |
ppf(q, loc=0, scale=1) | 百分点函数(cdf 的逆函数 — 百分位数)。 |
isf(q, loc=0, scale=1) | 生存函数的逆函数(sf 的逆)。 |
moment(order, loc=0, scale=1) | 指定阶数的非中心时刻。 |
stats(loc=0, scale=1, moments=’mv’) | 均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。 |
entropy(loc=0, scale=1) | 随机变量的(微分)熵。 |
fit(data) | 一般数据的参数估计。详细文档请参见 scipy.stats.rv_continuous.fit 的关键参数。 |
**expect(func, args=(), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds) | 关于分布的函数(一个参数的函数)的期望值。 |
median(loc=0, scale=1) | 分布的中位数。 |
mean(loc=0, scale=1) | 分布的均值。 |
var(loc=0, scale=1) | 分布的方差。 |
std(loc=0, scale=1) | 分布的标准差。 |
interval(confidence, loc=0, scale=1) | 置信区间,围绕中位数具有相等面积。 |