SciPy-1-12-中文文档-五十一-

10 阅读35分钟

SciPy 1.12 中文文档(五十一)

原文:docs.scipy.org/doc/scipy-1.12.0/index.html

scipy.special.sinc

原文链接:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.special.sinc.html#scipy.special.sinc

scipy.special.sinc(x)

返回归一化的 sinc 函数。

对于任何参数(x\ne 0),sinc 函数等于(\sin(\pi x)/(\pi x))。 sinc(0)取极限值 1,使得sinc不仅在任何地方连续,而且在无限可微。

注意事项

注意在定义中使用的π的归一化因子。 这是信号处理中最常用的定义。 使用sinc(x / np.pi)可以获得在数学中更常见的未归一化 sinc 函数(\sin(x)/x)。

参数:

x数组

数组(可能是多维的)的值,用于计算sinc(x)

返回:

输出数组

sinc(x),与输入的形状相同。

注意事项

名称 sinc 简称为“sine cardinal”或“sinus cardinalis”。

sinc 函数在各种信号处理应用中使用,包括抗混叠、Lanczos 重采样滤波器的构建和插值。

对于离散时间信号的带限插值,理想的插值核心与 sinc 函数成比例。

参考文献

[1]

Weisstein, Eric W. “Sinc 函数。” From MathWorld–A Wolfram Web Resource. mathworld.wolfram.com/SincFunction.html

[2]

维基百科,“Sinc 函数”,[zh.wikipedia.org/wiki/Sinc 函数](zh.wikipedia.org/wiki/Sinc 函数)

示例

>>> import matplotlib.pyplot as plt
>>> x = np.linspace(-4, 4, 41)
>>> np.sinc(x)
 array([-3.89804309e-17,  -4.92362781e-02,  -8.40918587e-02, # may vary
 -8.90384387e-02,  -5.84680802e-02,   3.89804309e-17,
 6.68206631e-02,   1.16434881e-01,   1.26137788e-01,
 8.50444803e-02,  -3.89804309e-17,  -1.03943254e-01,
 -1.89206682e-01,  -2.16236208e-01,  -1.55914881e-01,
 3.89804309e-17,   2.33872321e-01,   5.04551152e-01,
 7.56826729e-01,   9.35489284e-01,   1.00000000e+00,
 9.35489284e-01,   7.56826729e-01,   5.04551152e-01,
 2.33872321e-01,   3.89804309e-17,  -1.55914881e-01,
 -2.16236208e-01,  -1.89206682e-01,  -1.03943254e-01,
 -3.89804309e-17,   8.50444803e-02,   1.26137788e-01,
 1.16434881e-01,   6.68206631e-02,   3.89804309e-17,
 -5.84680802e-02,  -8.90384387e-02,  -8.40918587e-02,
 -4.92362781e-02,  -3.89804309e-17]) 
>>> plt.plot(x, np.sinc(x))
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.title("Sinc Function")
Text(0.5, 1.0, 'Sinc Function')
>>> plt.ylabel("Amplitude")
Text(0, 0.5, 'Amplitude')
>>> plt.xlabel("X")
Text(0.5, 0, 'X')
>>> plt.show() 

../../_images/scipy-special-sinc-1.png

统计函数(scipy.stats

原文链接:docs.scipy.org/doc/scipy-1.12.0/reference/stats.html

该模块包含大量的概率分布、汇总和频率统计、相关函数和统计检验、掩码统计、核密度估计、拟蒙特卡洛功能等。

统计学是一个非常广泛的领域,SciPy 范围之外的主题由其他包涵盖。其中一些最重要的是:

  • statsmodels: 回归、线性模型、时间序列分析,扩展到 scipy.stats 也覆盖的主题。

  • Pandas: 表格数据、时间序列功能,与其他统计语言的接口。

  • PyMC: 贝叶斯统计建模,概率机器学习。

  • scikit-learn: 分类、回归、模型选择。

  • Seaborn: 统计数据可视化。

  • rpy2: Python 到 R 的桥梁。

概率分布

每个单变量分布都是 rv_continuous 的子类实例(对于离散分布为 rv_discrete):

rv_continuous([momtype, a, b, xtol, ...])用于子类化的通用连续随机变量类。
rv_discrete([a, b, name, badvalue, ...])一个用于子类化的通用离散随机变量类。
rv_histogram(histogram, *args[, density])根据直方图生成分布。

连续分布

alphaAlpha 连续随机变量。
anglitAnglit 连续随机变量。
arcsineArcsine 连续随机变量。
argusArgus 分布。
betaBeta 连续随机变量。
betaprimeBeta prime 连续随机变量。
bradford一种 Bradford 连续随机变量。
burr一种 Burr(类型 III)连续随机变量。
burr12一个 Burr(类型 XII)连续随机变量。
cauchy一个柯西连续随机变量。
chi一个卡连续随机变量。
chi2一个卡方连续随机变量。
cosine余弦连续随机变量。
crystalballCrystalball 分布
dgamma一个双伽玛连续随机变量。
dweibull一个双韦伯连续随机变量。
erlang一个 Erlang 连续随机变量。
expon一个指数连续随机变量。
exponnorm一个指数修改正态连续随机变量。
exponweib一个指数化韦伯连续随机变量。
exponpow一种指数幂连续随机变量。
f一个 F 连续随机变量。
fatiguelife一个疲劳寿命(Birnbaum-Saunders)连续随机变量。
fisk一个 Fisk 连续随机变量。
foldcauchy一个折叠柯西连续随机变量。
foldnorm一个折叠正态连续随机变量。
genlogistic一个广义逻辑连续随机变量。
gennorm一个广义正态连续随机变量。
genpareto一个广义 Pareto 连续随机变量。
genexpon一个广义指数连续随机变量。
genextreme一个广义极值连续随机变量。
gausshyper一个 Gauss 超几何连续随机变量。
gamma一个 Gamma 连续随机变量。
gengamma一个广义 Gamma 连续随机变量。
genhalflogistic一个广义半 Logistic 连续随机变量。
genhyperbolic一个广义双曲连续随机变量。
geninvgauss一个广义逆高斯连续随机变量。
gibrat一个 Gibrat 连续随机变量。
gompertz一个 Gompertz(或截尾 Gumbel)连续随机变量。
gumbel_r一个右偏 Gumbel 连续随机变量。
gumbel_l一个左偏 Gumbel 连续随机变量。
halfcauchy一个半 Cauchy 连续随机变量。
halflogistic一个半 Logistic 连续随机变量。
halfnorm一个半正态连续随机变量。
halfgennorm一个广义正态连续随机变量的上半部分。
hypsecant一个双曲正切连续随机变量。
invgamma反 Gamma 连续随机变量。
invgauss逆高斯连续随机变量。
invweibull反 Weibull 连续随机变量。
jf_skew_tJones 和 Faddy 偏态 t 分布。
johnsonsbJohnson SB 连续随机变量。
johnsonsuJohnson SU 连续随机变量。
kappa4Kappa 4 参数分布。
kappa3Kappa 3 参数分布。
ksoneKolmogorov-Smirnov 单侧检验统计量分布。
kstwoKolmogorov-Smirnov 双侧检验统计量分布。
kstwobign缩放 Kolmogorov-Smirnov 双侧检验统计量的极限分布。
laplaceLaplace 连续随机变量。
laplace_asymmetric非对称 Laplace 连续随机变量。
levyLevy 连续随机变量。
levy_l左偏 Levy 连续随机变量。
levy_stableLevy 稳定连续随机变量。
logistic逻辑斯蒂(或 Sech 平方)连续随机变量。
loggamma对数 Gamma 连续随机变量。
loglaplace对数拉普拉斯连续随机变量。
lognorm对数正态连续随机变量。
loguniform一个对数均匀或倒数连续随机变量。
lomax一个 Lomax(第二类帕累托)连续随机变量。
maxwell一个麦克斯韦连续随机变量。
mielke一个 Mielke Beta-Kappa / Dagum 连续随机变量。
moyal一个莫耶连续随机变量。
nakagami一个中村连续随机变量。
ncx2一个非中心卡方连续随机变量。
ncf一个非中心 F 分布连续随机变量。
nct一个非中心学生 t 连续随机变量。
norm一个正态连续随机变量。
norminvgauss一个正态逆高斯连续随机变量。
pareto一个帕累托连续随机变量。
pearson3一个皮尔逊类型 III 连续随机变量。
powerlaw一个幂函数连续随机变量。
powerlognorm一个功率对数正态连续随机变量。
powernorm一个幂正态连续随机变量。
rdist一个服从 R 分布(对称贝塔分布)的连续随机变量。
rayleigh一个瑞利连续随机变量。
rel_breitwigner一个相对论布莱特-温格随机变量。
rice一个瑞丝连续随机变量。
recipinvgauss倒数反高斯连续随机变量。
semicircular半圆形连续随机变量。
skewcauchy偏斜 Cauchy 随机变量。
skewnorm偏斜正态随机变量。
studentized_range学生化范围连续随机变量。
t学生 t 连续随机变量。
trapezoid梯形连续随机变量。
triang三角形连续随机变量。
truncexpon截断指数连续随机变量。
truncnorm截断正态连续随机变量。
truncpareto上截断 Pareto 连续随机变量。
truncweibull_min双截断 Weibull 最小连续随机变量。
tukeylambdaTukey-Lamdba 连续随机变量。
uniform均匀分布连续随机变量。
vonmisesVon Mises 连续随机变量。
vonmises_lineVon Mises 连续随机变量。
waldWald 连续随机变量。
weibull_minWeibull 最小连续随机变量。
weibull_maxWeibull 最大连续随机变量。
wrapcauchy包裹 Cauchy 连续随机变量。

一元连续分布的 fit 方法使用最大似然估计来拟合数据集到分布。fit 方法可以接受常规数据或被审查数据。被审查的数据使用 CensoredData 类的实例表示。

CensoredData([未审查, 左, 右, 间隔])该类的实例表示被审查的数据。

多元分布

multivariate_normal多元正态分布随机变量。
matrix_normal矩阵正态分布随机变量。
dirichlet狄利克雷分布随机变量。
dirichlet_multinomial狄利克雷-多项式分布随机变量。
wishartWishart 分布随机变量。
invwishart逆 Wishart 分布随机变量。
multinomial多项式分布随机变量。
special_ortho_group特殊正交矩阵 (SO(N)) 随机变量。
ortho_group正交矩阵 (O(N)) 随机变量。
unitary_groupU(N) 矩阵值随机变量。
random_correlation随机相关矩阵。
multivariate_t多元 t 分布随机变量。
multivariate_hypergeom多元超几何分布随机变量。
random_table独立样本的固定边际和的列联表。
uniform_direction一个向量值均匀分布的方向。
vonmises_fisher一个 von Mises-Fisher 变量。

scipy.stats.multivariate_normal 方法接受以下类的实例来表示协方差。

Covariance()协方差矩阵的表示

离散分布

bernoulli一个伯努利离散随机变量。
betabinom一个贝塔二项式离散随机变量。
betanbinom一个贝塔负二项式离散随机变量。
binom一个二项式离散随机变量。
boltzmann一个 Boltzmann(截断离散指数)随机变量。
dlaplace一个拉普拉斯离散随机变量。
geom一个几何离散随机变量。
hypergeom一个超几何离散随机变量。
logser一个对数(Log-Series, Series)离散随机变量。
nbinom一个负二项式离散随机变量。
nchypergeom_fisher一个 Fisher 的非中心超几何离散随机变量。
nchypergeom_wallenius一个 Wallenius 的非中心超几何离散随机变量。
nhypergeom一个负超几何离散随机变量。
planck一个 Planck 离散指数随机变量。
poisson一个泊松离散随机变量。
randint一个均匀离散随机变量。
skellam一个 Skellam 离散随机变量。
yulesimon一个 Yule-Simon 离散随机变量。
zipf一个 Zipf(Zeta)离散随机变量。
zipfian一个 Zipfian 离散随机变量。

下面给出了统计函数的概述。其中许多函数在scipy.stats.mstats中有类似版本,适用于掩码数组。

摘要统计

describe(a[, axis, ddof, bias, nan_policy])计算传递数组的几个描述性统计量。
gmean(a[, axis, dtype, weights, nan_policy, ...])计算沿指定轴的加权几何平均值。
hmean(a[, axis, dtype, weights, nan_policy, ...])计算沿指定轴的加权调和平均值。
pmean(a, p, *[, axis, dtype, weights, ...])计算沿指定轴的加权幂均值。
kurtosis(a[, axis, fisher, bias, ...])计算数据集的峰度(Fisher 或 Pearson)。
mode(a[, axis, nan_policy, keepdims])返回传递数组中最常见的值的数组。
moment(a[, moment, axis, nan_policy, ...])计算样本关于均值的第 n 阶矩。
expectile(a[, alpha, weights])计算指定水平的期望分位数。
skew(a[, axis, bias, nan_policy, keepdims])计算数据集的样本偏度。
kstat(data[, n, axis, nan_policy, keepdims])返回第 n 个 k-统计量(目前 1<=n<=4)。
kstatvar(data[, n, axis, nan_policy, keepdims])返回 k-统计量方差的无偏估计。
tmean(a[, limits, inclusive, axis, ...])计算修剪均值。
tvar(a[, limits, inclusive, axis, ddof, ...])计算修剪方差。
tmin(a[, lowerlimit, axis, inclusive, ...])计算修剪后的最小值。
tmax(a[, upperlimit, axis, inclusive, ...])计算修剪后的最大值。
tstd(a[, limits, inclusive, axis, ddof, ...])计算修剪样本标准差。
tsem(a[, limits, inclusive, axis, ddof, ...])计算修剪均值标准误差。
variation(a[, axis, nan_policy, ddof, keepdims])计算变异系数。
find_repeats(arr)查找重复项及重复计数。
rankdata(a[, method, axis, nan_policy])分配数据排名,适当处理并列情况。
tiecorrect(rankvals)Mann-Whitney U 检验和 Kruskal-Wallis H 检验的结带校正因子。
trim_mean(a, proportiontocut[, axis])返回修剪分布两端后的数组均值。
gstd(a[, axis, ddof])计算数组的几何标准差。
iqr(x[, axis, rng, scale, nan_policy, ...])计算沿指定轴的四分位距。
sem(a[, axis, ddof, nan_policy, keepdims])计算均值的标准误差。
bayes_mvs(data[, alpha])均值、方差和标准差的贝叶斯置信区间。
mvsdist(data)数据的均值、方差和标准差的‘冻结’分布。
entropy(pk[, qk, base, axis, nan_policy, ...])计算给定分布的香农熵/相对熵。
differential_entropy(values, *[, ...])给定分布样本,估计差分熵。
median_abs_deviation(x[, axis, center, ...])计算给定轴向数据的中位数绝对偏差。

频率统计

cumfreq(a[, numbins, defaultreallimits, weights])使用直方图函数返回累积频率直方图。
percentileofscore(a, score[, kind, nan_policy])计算得分相对于得分列表的百分位等级。
scoreatpercentile(a, per[, limit, ...])计算输入序列在给定百分位数处的分数。
relfreq(a[, numbins, defaultreallimits, weights])使用直方图函数返回相对频率直方图。
binned_statistic(x, values[, statistic, ...])计算一个或多个数据集的分箱统计量。
binned_statistic_2d(x, y, values[, ...])计算一个或多个数据集的二维分箱统计量。
binned_statistic_dd(sample, values[, ...])计算数据集的多维分箱统计量。

假设检验及相关函数

SciPy 包含许多用于执行假设检验的函数,这些函数返回一个检验统计量和 p 值,其中一些还返回置信区间或其他相关信息。

下面的标题基于其中函数的常见用法,但由于统计程序种类繁多,任何试图粗略分类的尝试都将是不完美的。另外,请注意,同一标题内的测试通常不能互换(例如,许多测试具有不同的分布假设)。

一样本检验 / 成对样本检验

一样本检验通常用于评估单一样本是否来自指定分布或具有指定属性的分布(例如零均值)。

ttest_1samp(a, popmean[, axis, nan_policy, ...])计算一个组分数的均值的 T 检验。
binomtest(k, n[, p, alternative])执行一个测试,检验成功的概率是否为 p。
quantile_test(x, *[, q, p, alternative])执行一个分位数检验,并计算分位数的置信区间。
skewtest(a[, axis, nan_policy, alternative])测试偏斜是否与正态分布不同。
kurtosistest(a[, axis, nan_policy, alternative])测试数据集是否具有正常峰度。
normaltest(a[, axis, nan_policy])测试样本是否与正态分布不同。
jarque_bera(x, *[, axis, nan_policy, keepdims])对样本数据执行 Jarque-Bera 拟合优度检验。
shapiro(x)执行 Shapiro-Wilk 正态性检验。
anderson(x[, dist])Anderson-Darling 检验用于来自特定分布的数据。
cramervonmises(rvs, cdf[, args, axis, ...])执行单样本 Cramér-von Mises 拟合优度检验。
ks_1samp(x, cdf[, args, alternative, ...])执行单样本 Kolmogorov-Smirnov 拟合优度检验。
goodness_of_fit(dist, data, *[, ...])执行拟合优度检验,将数据与分布族比较。
chisquare(f_obs[, f_exp, ddof, axis])计算单向卡方检验。
power_divergence(f_obs[, f_exp, ddof, axis, ...])Cressie-Read 力度分散统计量和拟合优度检验。

配对样本检验通常用于评估两个样本是否来自同一分布;它们与下面的独立样本检验不同之处在于,一个样本中的每个观测值被视为与另一个样本中一个密切相关的观测值配对(例如,在一对观测值之间控制环境因素,但在不同对之间不控制)。它们也可以被解释或用作单样本检验(例如,对配对观测值之间的差异的均值或中位数进行检验)。

ttest_rel(a, b[, axis, nan_policy, ...])计算两个相关样本 a 和 b 的 t 检验。
wilcoxon(x[, y, zero_method, correction, ...])计算 Wilcoxon 符号秩检验。

关联/相关性检验

这些检验通常用于评估多个样本中配对观测值之间或多变量观测值坐标之间是否存在关系(例如线性关系)。

linregress(x[, y, alternative])计算两组测量值的线性最小二乘回归。
pearsonr(x, y, *[, alternative, method])Pearson 相关系数和用于测试非相关性的 p 值。
spearmanr(a[, b, axis, nan_policy, alternative])计算具有相关 p 值的 Spearman 相关系数。
pointbiserialr(x, y)计算一点双列相关系数及其 p 值。
kendalltau(x, y, *[, initial_lexsort, ...])计算 Kendall's tau,一种用于有序数据的相关度量。
weightedtau(x, y[, rank, weigher, additive])计算 Kendall's (\tau)的加权版本。
somersd(x[, y, alternative])计算 Somers' D,一种有序关联的非对称度量。
siegelslopes(y[, x, method])计算一组点(x,y)的 Siegel 估计量。
theilslopes(y[, x, alpha, method])计算一组点(x,y)的 Theil-Sen 估计量。
page_trend_test(data[, ranked, ...])执行 Page 趋势检验,用于衡量不同处理之间的观测趋势。
multiscale_graphcorr(x, y[, ...])计算多尺度图相关性(MGC)检验统计量。

这些关联性检验用于处理列联表样本。支持函数可在scipy.stats.contingency中找到。

chi2_contingency(observed[, correction, lambda_])在列联表中检验变量的独立性的卡方检验。
fisher_exact(table[, alternative])在 2x2 列联表上执行 Fisher 精确检验。
barnard_exact(table[, alternative, pooled, n])在 2x2 列联表上执行 Barnard 精确检验。
boschloo_exact(table[, alternative, n])在 2x2 列联表上执行 Boschloo 精确检验。

独立样本检验

独立样本检验通常用于评估多个样本是否独立地从相同分布或具有共同属性(例如均值相等的不同分布)中抽取。

有些测试特别用于比较两个样本。

ttest_ind_from_stats(mean1, std1, nobs1, ...)根据描述统计量对两个独立样本的均值进行 T 检验。
poisson_means_test(k1, n1, k2, n2, *[, ...])执行泊松均值检验,也称为"E-test"。
ttest_ind(a, b[, axis, equal_var, ...])计算两个独立样本的 T 检验得分。
mannwhitneyu(x, y[, use_continuity, ...])对两个独立样本执行 Mann-Whitney U 秩和检验。
bws_test(x, y, *[, alternative, method])对两个独立样本执行 Baumgartner-Weiss-Schindler 测试。
ranksums(x, y[, alternative, axis, ...])计算威尔科克森秩和检验统计量,适用于两个样本。
brunnermunzel(x, y[, alternative, ...])计算布伦纳-门泽尔(Brunner-Munzel)检验,适用于样本 x 和 y。
mood(x, y[, axis, alternative])执行穆德(Mood)检验以检验尺度参数的等性。
ansari(x, y[, alternative, axis, ...])执行安萨里-布拉德利检验(Ansari-Bradley test)以检验尺度参数的等性。
cramervonmises_2samp(x, y[, method, axis, ...])执行双样本克拉默-冯·米泽斯检验(Cramér-von Mises test)。
epps_singleton_2samp(x, y[, t, axis, ...])计算艾普斯-辛格尔顿(Epps-Singleton,ES)检验统计量。
ks_2samp(data1, data2[, alternative, ...])执行双样本科尔莫哥洛夫-斯米尔诺夫(Kolmogorov-Smirnov)检验。
kstest(rvs, cdf[, args, N, alternative, ...])执行(单样本或双样本)科尔莫哥洛夫-斯米尔诺夫(Kolmogorov-Smirnov)检验。

其他测试方法适用于多个样本。

f_oneway(*samples[, axis])执行单因素方差分析(one-way ANOVA)。
tukey_hsd(*args)执行图基(Tukey)的 HSD 检验,用于比较多个处理的均值是否相等。
dunnett(*samples, control[, alternative, ...])执行邓纳特(Dunnett)检验,对多个样本均值与控制组进行多重比较。
kruskal(*samples[, nan_policy, axis, keepdims])计算克鲁斯卡尔-沃利斯(Kruskal-Wallis H-test)独立样本的检验。
alexandergovern(*samples[, nan_policy])执行亚历山大·戈弗恩检验(Alexander Govern test)。
fligner(*samples[, center, proportiontocut, ...])执行弗里格纳-基林检验(Fligner-Killeen test)以检验方差的等性。
levene(*samples[, center, proportiontocut, ...])执行莱文检验(Levene test)以检验方差的等性。
bartlett(*samples[, axis, nan_policy, keepdims])执行巴特利特等方差检验。
median_test(*samples[, ties, correction, ...])执行穆德中位数检验。
friedmanchisquare(*samples)计算重复样本的弗里德曼检验。
anderson_ksamp(samples[, midrank, method])k-样本的安德森-达宁检验。

重抽样和蒙特卡洛方法

下面的函数可以重现大多数上述函数的 p 值和置信区间结果,并且通常能在更广泛的条件下产生准确的结果。它们还可以用于执行假设检验并为自定义统计量生成置信区间。这种灵活性的代价是更高的计算需求和随机结果。

monte_carlo_test(data, rvs, statistic, *[, ...])执行蒙特卡洛假设检验。
permutation_test(data, statistic, *[, ...])在提供的数据上执行置换检验。
bootstrap(data, statistic, *[, n_resamples, ...])计算统计量的双侧自举置信区间。

可以将以下对象的实例传递给一些假设检验函数,以执行假设检验的重抽样或蒙特卡洛版本。

MonteCarloMethod([n_resamples, batch, rvs])蒙特卡洛假设检验的配置信息。
PermutationMethod([n_resamples, batch, ...])排列假设检验的配置信息。
BootstrapMethod([n_resamples, batch, ...])用于计算自举置信区间的配置信息。

多重假设检验和元分析

这些函数用于全面评估单个测试的结果。执行特定的多重假设检验(例如事后检验)的函数在上面列出。

combine_pvalues(pvalues[, method, weights])从影响相同假设的独立测试中合并 p 值。
false_discovery_control(ps, *[, axis, method])调整 p 值以控制假发现率。

下列函数与上述测试相关,但不属于上述分类。

准蒙特卡洛

  • 准蒙特卡洛子模块 (scipy.stats.qmc)

    • 准蒙特卡洛

      • 引擎

        • scipy.stats.qmc.QMCEngine

        • scipy.stats.qmc.Sobol

        • scipy.stats.qmc.Halton

        • scipy.stats.qmc.LatinHypercube

        • scipy.stats.qmc.PoissonDisk

        • scipy.stats.qmc.MultinomialQMC

        • scipy.stats.qmc.MultivariateNormalQMC

      • 辅助工具

        • scipy.stats.qmc.discrepancy

        • scipy.stats.qmc.geometric_discrepancy

        • scipy.stats.qmc.update_discrepancy

        • scipy.stats.qmc.scale

    • 介绍准蒙特卡洛

      • 参考文献

列联表

  • 列联表函数 (scipy.stats.contingency)

    • scipy.stats.contingency.chi2_contingency

      • chi2_contingency
    • scipy.stats.contingency.relative_risk

      • relative_risk
    • scipy.stats.contingency.odds_ratio

      • odds_ratio
    • scipy.stats.contingency.crosstab

      • crosstab
    • scipy.stats.contingency.association

      • association
    • scipy.stats.contingency.expected_freq

      • expected_freq
    • scipy.stats.contingency.margins

      • margins

遮罩统计函数

  • 掩模数组的统计函数 (scipy.stats.mstats)

    • 摘要统计

      • scipy.stats.mstats.describe

        • describe
      • scipy.stats.mstats.gmean

        • gmean
      • scipy.stats.mstats.hmean

        • hmean
      • scipy.stats.mstats.kurtosis

        • kurtosis
      • scipy.stats.mstats.mode

        • mode
      • scipy.stats.mstats.mquantiles

        • mquantiles
      • scipy.stats.mstats.hdmedian

        • hdmedian
      • scipy.stats.mstats.hdquantiles

        • hdquantiles
      • scipy.stats.mstats.hdquantiles_sd

        • hdquantiles_sd
      • scipy.stats.mstats.idealfourths

        • idealfourths
      • scipy.stats.mstats.plotting_positions

        • plotting_positions
      • scipy.stats.mstats.meppf

        • meppf
      • scipy.stats.mstats.moment

        • moment
      • scipy.stats.mstats.skew

        • skew
      • scipy.stats.mstats.tmean

        • tmean
      • scipy.stats.mstats.tvar

        • tvar
      • scipy.stats.mstats.tmin

        • tmin
      • scipy.stats.mstats.tmax

        • tmax
      • scipy.stats.mstats.tsem

        • tsem
      • scipy.stats.mstats.variation

        • variation
      • scipy.stats.mstats.find_repeats

        • find_repeats
      • scipy.stats.mstats.sem

        • sem
      • scipy.stats.mstats.trimmed_mean

        • trimmed_mean
      • scipy.stats.mstats.trimmed_mean_ci

        • trimmed_mean_ci
      • scipy.stats.mstats.trimmed_std

        • trimmed_std
      • scipy.stats.mstats.trimmed_var

        • trimmed_var
    • 频率统计

      • scipy.stats.mstats.scoreatpercentile

        • scoreatpercentile
    • 相关函数

      • scipy.stats.mstats.f_oneway

        • f_oneway
      • scipy.stats.mstats.pearsonr

        • pearsonr
      • scipy.stats.mstats.spearmanr

        • spearmanr
      • scipy.stats.mstats.pointbiserialr

        • pointbiserialr
      • scipy.stats.mstats.kendalltau

        • kendalltau
      • scipy.stats.mstats.kendalltau_seasonal

        • kendalltau_seasonal
      • scipy.stats.mstats.linregress

        • linregress
      • scipy.stats.mstats.siegelslopes

        • siegelslopes
      • scipy.stats.mstats.theilslopes

        • theilslopes
      • scipy.stats.mstats.sen_seasonal_slopes

        • sen_seasonal_slopes
    • Statistical tests

      • scipy.stats.mstats.ttest_1samp

        • ttest_1samp
      • scipy.stats.mstats.ttest_onesamp

        • ttest_onesamp
      • scipy.stats.mstats.ttest_ind

        • ttest_ind
      • scipy.stats.mstats.ttest_rel

        • ttest_rel
      • scipy.stats.mstats.chisquare

        • chisquare
      • scipy.stats.mstats.kstest

        • kstest
      • scipy.stats.mstats.ks_2samp

        • ks_2samp
      • scipy.stats.mstats.ks_1samp

        • ks_1samp
      • scipy.stats.mstats.ks_twosamp

        • ks_twosamp
      • scipy.stats.mstats.mannwhitneyu

        • mannwhitneyu
      • scipy.stats.mstats.rankdata

        • rankdata
      • scipy.stats.mstats.kruskal

        • kruskal
      • scipy.stats.mstats.kruskalwallis

        • kruskalwallis
      • scipy.stats.mstats.friedmanchisquare

        • friedmanchisquare
      • scipy.stats.mstats.brunnermunzel

        • brunnermunzel
      • scipy.stats.mstats.skewtest

        • skewtest
      • scipy.stats.mstats.kurtosistest

        • kurtosistest
      • scipy.stats.mstats.normaltest

        • normaltest
    • Transformations

      • scipy.stats.mstats.obrientransform

        • obrientransform
      • scipy.stats.mstats.trim

        • trim
      • scipy.stats.mstats.trima

        • trima
      • scipy.stats.mstats.trimmed_stde

        • trimmed_stde
      • scipy.stats.mstats.trimr

        • trimr
      • scipy.stats.mstats.trimtail

        • trimtail
      • scipy.stats.mstats.trimboth

        • trimboth
      • scipy.stats.mstats.winsorize

        • winsorize
      • scipy.stats.mstats.zmap

        • zmap
      • scipy.stats.mstats.zscore

        • zscore
    • Other

      • scipy.stats.mstats.argstoarray

        • argstoarray
      • scipy.stats.mstats.count_tied_groups

        • count_tied_groups
      • scipy.stats.mstats.msign

        • msign
      • scipy.stats.mstats.compare_medians_ms

        • compare_medians_ms
      • scipy.stats.mstats.median_cihs

        • median_cihs
      • scipy.stats.mstats.mjci

        • mjci
      • scipy.stats.mstats.mquantiles_cimj

        • mquantiles_cimj
      • scipy.stats.mstats.rsh

        • rsh

其他统计功能

变换

boxcox(x[, lmbda, alpha, optimizer])返回经 Box-Cox 幂变换后的数据集。
boxcox_normmax(x[, brack, method, optimizer])计算输入数据的最佳 Box-Cox 变换参数。
boxcox_llf(lmb, data)Box-Cox 对数似然函数。
yeojohnson(x[, lmbda])返回经 Yeo-Johnson 幂变换后的数据集。
yeojohnson_normmax(x[, brack])计算最佳 Yeo-Johnson 变换参数。
yeojohnson_llf(lmb, data)Yeo-Johnson 对数似然函数。
obrientransform(*samples)对输入数据执行 O'Brien 变换(任意数量的数组)。
sigmaclip(a[, low, high])执行数组元素的迭代 sigma-clipping。
trimboth(a, proportiontocut[, axis])从数组的两端切掉一定比例的项目。
trim1(a, proportiontocut[, tail, axis])从数组分布的一个端切掉一定比例。
zmap(scores, compare[, axis, ddof, nan_policy])计算相对 z 分数。
zscore(a[, axis, ddof, nan_policy])计算 z 分数。
gzscore(a, *[, axis, ddof, nan_policy])计算几何标准分数。

统计距离

wasserstein_distance(u_values, v_values[, ...])计算两个 1D 分布之间的 Wasserstein 距离。
energy_distance(u_values, v_values[, ...])计算两个 1D 分布之间的能量距离。

抽样

  • Random Number Generators (scipy.stats.sampling)

    • 包装的生成器

      • 连续分布

        • scipy.stats.sampling.NumericalInverseHermite

        • scipy.stats.sampling.NumericalInversePolynomial

        • scipy.stats.sampling.TransformedDensityRejection

        • scipy.stats.sampling.SimpleRatioUniforms

        • scipy.stats.sampling.RatioUniforms

      • 离散分布

        • scipy.stats.sampling.DiscreteAliasUrn

        • scipy.stats.sampling.DiscreteGuideTable

      • scipy.stats.sampling 中使用的警告/错误

        • scipy.stats.sampling.UNURANError
    • 预定义分布的生成器

      • scipy.stats.sampling.FastGeneratorInversion

        • FastGeneratorInversion

        • scipy.stats.sampling.FastGeneratorInversion.evaluate_error

        • scipy.stats.sampling.FastGeneratorInversion.ppf

        • scipy.stats.sampling.FastGeneratorInversion.qrvs

        • scipy.stats.sampling.FastGeneratorInversion.rvs

        • scipy.stats.sampling.FastGeneratorInversion.support

随机变量生成/累积分布函数反转

rvs_ratio_uniforms(pdf, umax, vmin, vmax[, ...])使用比例-均匀分布方法从概率密度函数生成随机样本。

拟合/生存分析

fit(dist, data[, bounds, guess, method, ...])将离散或连续分布拟合到数据。
ecdf(sample)样本的经验累积分布函数。
logrank(x, y[, alternative])通过对数秩检验比较两个样本的生存分布。

方向统计函数

directional_stats(samples, *[, axis, normalize])计算方向数据的样本统计量。
circmean(samples[, high, low, axis, ...])计算假定在范围内的样本的圆形平均值。
circvar(samples[, high, low, axis, ...])计算假定在范围内的样本的圆形方差。
circstd(samples[, high, low, axis, ...])计算假定在范围 [low to high] 内的样本的圆形标准差。

敏感性分析

sobol_indices(*, func, n[, dists, method, ...])Sobol' 的全局敏感性指数。

绘图检验

ppcc_max(x[, brack, dist])计算最大化 PPCC 的形状参数。
ppcc_plot(x, a, b[, dist, plot, N])计算并可选择绘制概率图相关系数。
probplot(x[, sparams, dist, fit, plot, rvalue])计算概率图的分位数,并可选择显示图。
boxcox_normplot(x, la, lb[, plot, N])计算 Box-Cox 正态性图的参数,可选择显示。
yeojohnson_normplot(x, la, lb[, plot, N])计算 Yeo-Johnson 正态性图的参数,可选择显示。

单变量和多变量核密度估计

gaussian_kde(dataset[, bw_method, weights])使用高斯核估计的核密度估计的表示。

scipy.stats 中使用的警告/错误

DegenerateDataWarning([msg])当数据退化且结果可能不可靠时发出警告。
ConstantInputWarning([msg])当数据中的所有值完全相等时发出警告。
NearConstantInputWarning([msg])当数据中的所有值几乎相等时发出警告。
FitError([msg])表示将分布拟合到数据时的错误条件。

scipy.stats 中使用的结果类

警告

这些类是私有的,但在这里包含它们是因为其他统计函数返回它们的实例。不支持用户导入和实例化。

  • 结果类

    • scipy.stats._result_classes.RelativeRiskResult

    • scipy.stats._result_classes.BinomTestResult

    • scipy.stats._result_classes.TukeyHSDResult

    • scipy.stats._result_classes.DunnettResult

    • scipy.stats._result_classes.PearsonRResult

    • scipy.stats._result_classes.FitResult

    • scipy.stats._result_classes.OddsRatioResult

    • scipy.stats._result_classes.TtestResult

    • scipy.stats._result_classes.ECDFResult

    • scipy.stats._result_classes.EmpiricalDistributionFunction

scipy.stats.rv_continuous

原文:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.rv_continuous.html#scipy.stats.rv_continuous

class scipy.stats.rv_continuous(momtype=1, a=None, b=None, xtol=1e-14, badvalue=None, name=None, longname=None, shapes=None, seed=None)

用于派生的通用连续随机变量类。

rv_continuous 是一个基类,用于构建连续随机变量的具体分布类和实例。不能直接作为分布使用。

参数:

momtypeint, optional

用于使用的通用矩计算类型:0 表示概率密度函数(pdf),1(默认)表示累积分布函数(ppf)。

afloat, optional

分布的下支撑界限,默认为负无穷。

bfloat, optional

分布的上支撑界限,默认为正无穷。

xtolfloat, optional

用于通用累积分布函数计算的固定点计算容差。

badvaluefloat, optional

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

namestr, optional

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

longnamestr, optional

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

shapesstr, optional

分布的形状。例如,对于一个需要两个整数作为其两个形状参数的分布,形状可以是 "m, n"。如果未提供,形状参数将从私有方法 _pdf_cdf 的签名中推断。

seed{None, int, numpy.random.Generator, numpy.random.RandomState}, optional

如果 seed 为 None(或 np.random),则使用 numpy.random.RandomState 单例。如果 seed 是整数,则使用一个新的 RandomState 实例,并使用 seed 进行种子化。如果 seed 已经是 GeneratorRandomState 实例,则使用该实例。

注意事项

分布类实例的公共方法(例如 pdfcdf)检查其参数,并将有效的参数传递给私有的计算方法(例如 _pdf_cdf)。对于 pdf(x),如果 x 在分布的支撑范围内,则认为是有效的。形状参数是否有效由 _argcheck 方法决定(默认为检查其参数是否严格为正数)。

子类化

可通过子类化rv_continuous类并至少重新定义_pdf_cdf方法(归一化为位置 0 和比例 1)来定义新的随机变量。

如果对你的随机变量进行正参数检查不正确,则还需要重新定义_argcheck方法。

对于大多数 scipy.stats 分布,支持区间不依赖于形状参数。x位于支持区间内等同于self.a <= x <= self.b。如果支持端点中的任一端点取决于形状参数,则 i)分布必须实现_get_support方法;和 ii)这些依赖端点必须从分布调用rv_continuous初始化器中省略。

正确,但可能缓慢的默认值适用于其余方法,但为了速度和/或准确性,可以重写:

_logpdf, _cdf, _logcdf, _ppf, _rvs, _isf, _sf, _logsf 

默认方法_rvs依赖于 cdf 的逆_ppf,应用于均匀随机变量。为了有效生成随机变量,可以重新定义默认的_ppf(例如,如果逆 cdf 可以用显式形式表示),或者在自定义的_rvs方法中实现抽样方法。

如果可能的话,应该重写_isf_sf_logsf。主要原因是为了提高数值精度:例如,生存函数_sf计算为1 - _cdf,如果_cdf(x)接近于 1,则可能会丢失精度。

可由子类重写的方法

_rvs
_pdf
_cdf
_sf
_ppf
_isf
_stats
_munp
_entropy
_argcheck
_get_support 

存在额外的(内部和私有的)通用方法,用于交叉检查和调试,但在直接调用时可能在所有情况下都有效。

关于shapes的说明:子类无需显式指定它们。在这种情况下,shapes将从覆盖方法的签名中自动推断出来(pdfcdf等)。如果因某种原因你希望避免依赖内省,你可以在实例构造函数中将shapes明确指定为参数。

冻结分布

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

或者,可以通过调用对象(作为函数)来固定形状、位置和比例参数,返回一个“冻结”的连续随机变量对象:

rv = generic(<shape(s)>, loc=0, scale=1)

rv_frozen对象具有相同的方法,但固定给定的形状、位置和比例

统计

统计数据默认使用数值积分计算。为了提速,可以重新定义使用_stats

  • 获取形状参数并返回 mu、mu2、g1、g2
  • 如果无法计算其中之一,请将其返回为 None
  • 也可以使用关键字参数 moments 进行定义,它是由 “m”、“v”、“s” 和/或 “k” 组成的字符串。只有出现在字符串中的组件才会被计算并按照 “m”、“v”、“s” 或 “k”的顺序返回,缺失值将返回为 None。

或者,您可以重写 _munp,它接受 n 和形状参数,并返回分布的第 n 个非中心矩。

深复制 / Pickling

如果分布或冻结分布进行了深复制(如进行了 pickle/unpickle 操作等),则任何底层随机数生成器也将被一同深复制。一个推论是,如果在复制前分布依赖于单例的随机状态,那么在复制后它将依赖于该随机状态的一个副本,并且np.random.seed将不再控制该状态。

示例

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

>>> from scipy.stats import rv_continuous
>>> class gaussian_gen(rv_continuous):
...     "Gaussian distribution"
...     def _pdf(self, x):
...         return np.exp(-x**2 / 2.) / np.sqrt(2.0 * np.pi)
>>> gaussian = gaussian_gen(name='gaussian') 

scipy.stats 分布是 实例,因此我们在这里子类化 rv_continuous 并创建一个实例。通过这样做,我们现在拥有一个由框架自动生成的具有所有相关方法的完全功能分布。

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

属性:

random_state

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

方法

rvs(*args, **kwds)给定类型的随机变量。
pdf(x, *args, **kwds)给定随机变量的概率密度函数在 x 处的值。
logpdf(x, *args, **kwds)给定随机变量的概率密度函数在 x 处的对数。
cdf(x, *args, **kwds)给定随机变量的累积分布函数。
logcdf(x, *args, **kwds)给定随机变量的累积分布函数在 x 处的对数。
sf(x, *args, **kwds)给定随机变量的生存函数(1 - cdf)。
logsf(x, *args, **kwds)给定 RV 的生存函数的对数。
ppf(q, *args, **kwds)给定 RV 的累积分布函数(cdf 的反函数)的百分点函数在 q 处。
isf(q, *args, **kwds)给定 RV 的逆生存函数(sf 的逆函数)在 q 处。
moment(order, *args, **kwds)指定阶数的分布的非中心矩。
stats(*args, **kwds)给定 RV 的一些统计量。
entropy(*args, **kwds)RV 的微分熵。
expect([func, args, loc, scale, lb, ub, ...])通过数值积分计算函数相对于分布的期望值。
median(*args, **kwds)分布的中位数。
mean(*args, **kwds)分布的均值。
std(*args, **kwds)分布的标准差。
var(*args, **kwds)分布的方差。
interval(confidence, *args, **kwds)置信区间,围绕中位数有相等的区域。
__call__(*args, **kwds)冻结给定参数的分布。
fit(data, *args, **kwds)返回数据的形状(如果适用)、位置和尺度参数的估计值。
fit_loc_scale(data, *args)使用数据的第一和第二时刻估计 loc 和 scale 参数。
nnlf(theta, x)负对数似然函数。
support(*args, **kwargs)分布的支持区间。

scipy.stats.rv_discrete

原文链接:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.rv_discrete.html#scipy.stats.rv_discrete

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

一个通用的离散随机变量类,用于派生子类。

rv_discrete 是一个基类,用于构造特定的分布类和离散随机变量实例。它也可以用于根据支持点列表和对应概率构造任意分布。

参数:

a浮点数, 可选

分布的支持下限,默认为 0

b浮点数, 可选

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

moment_tol浮点数, 可选

用于通用矩计算的容差。

values两个 array_like 元组, 可选

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

inc整数, 可选

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

badvalue浮点数, 可选

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

name字符串, 可选

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

longname字符串, 可选

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

shapes字符串, 可选

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

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

如果 seed 为 None(或 np.random),则使用 numpy.random.RandomState 单例。如果 seed 是整数,则使用一个新的 RandomState 实例,并使用 seed 进行种子初始化。如果 seed 已经是 GeneratorRandomState 实例,则直接使用该实例。

注:

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

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

  • 与概率密度函数 pdf(及其对应的私有 _pdf)不同,这个类定义了概率质量函数 pmf(及其对应的私有 _pmf)。

  • 没有 scale 参数。

  • 方法(例如 _cdf)的默认实现不适用于支持无下限的分布(即 a=-np.inf),因此必须进行覆盖。

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

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

并创建一个实例:

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

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

从概率列表创建离散分布

或者,您可以使用 values 关键字参数来构造定义在有限值集合 xk 上的任意离散随机变量 Prob{X=xk} = pk,方法是使用 rv_discrete 构造函数。

Deepcopying / Pickling

如果分布或冻结分布进行了深拷贝(序列化/反序列化等),则任何底层随机数生成器也将随之深拷贝。其含义是,如果分布在复制之前依赖于单例的 RandomState,则在复制后它将依赖于该随机状态的副本,并且 np.random.seed 将不再控制状态。

示例

自定义离散分布:

>>> import numpy as np
>>> from scipy import stats
>>> xk = np.arange(7)
>>> pk = (0.1, 0.2, 0.3, 0.1, 0.1, 0.0, 0.2)
>>> custm = stats.rv_discrete(name='custm', values=(xk, pk))
>>>
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
>>> ax.plot(xk, custm.pmf(xk), 'ro', ms=12, mec='r')
>>> ax.vlines(xk, 0, custm.pmf(xk), colors='r', lw=4)
>>> plt.show() 

../../_images/scipy-stats-rv_discrete-1_00_00.png

随机数生成:

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

属性:

random_state

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

方法

rvs(*args, **kwargs)给定类型的随机变量。
pmf(k, *args, **kwds)给定随机变量在 k 处的概率质量函数。
logpmf(k, *args, **kwds)给定随机变量在 k 处的概率质量函数的对数。
cdf(k, *args, **kwds)给定随机变量的累积分布函数。
logcdf(k, *args, **kwds)给定随机变量在 k 处的累积分布函数的对数。
sf(k, *args, **kwds)给定随机变量在 k 处的生存函数(1 - cdf)。
logsf(k, *args, **kwds)给定随机变量的生存函数的对数。
ppf(q, *args, **kwds)给定随机变量在 q 处的百分点函数(cdf的逆函数)。
isf(q, *args, **kwds)给定随机变量在 q 处的逆生存函数(sf的逆函数)。
moment(order, *args, **kwds)指定阶数的分布的非中心矩。
stats给定随机变量的一些统计量。
entropy随机变量的微分熵。
expect([func, args, loc, lb, ub, ...])对于离散分布,通过数值求和计算函数关于分布的期望值。
median分布的中位数。
mean分布的均值。
std分布的标准差。
var分布的方差。
interval(confidence, *args, **kwds)等面积置信区间,围绕中位数。
__call__(*args, **kwds)对给定参数冻结分布。
support(*args, **kwargs)分布的支持范围。

scipy.stats.rv_histogram

原文:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.rv_histogram.html#scipy.stats.rv_histogram

class scipy.stats.rv_histogram(histogram, *args, density=None, **kwargs)

生成由直方图给定的分布。这对于从分箱数据样本生成模板分布非常有用。

作为rv_continuous类的子类,rv_histogram从中继承了一系列通用方法(请参阅rv_continuous以获取完整列表),并根据提供的分箱数据样本的特性实现了这些方法。

参数:

histogramarray_like 的元组

包含两个 array_like 对象的元组。第一个包含 n 个箱的内容,第二个包含(n+1)个箱边界。特别地,接受numpy.histogram的返回值。

densitybool,可选

如果为 False,则假定直方图与每个箱中的计数成比例;否则,假定其与密度成比例。对于常数箱宽度,这两者是等效的,但在箱宽度变化时区分是重要的(见注释)。如果为 None(默认),则为向后兼容性设置density=True,但如果箱宽度可变,则发出警告。显式设置density以消除警告。

1.10.0 版本中的新功能。

笔记

当直方图具有不等的箱宽度时,统计学上有区分,即与每个箱中的计数成比例的直方图和与每个箱上的概率密度成比例的直方图。如果用其默认的density=False调用numpy.histogram,则生成的直方图是每个箱中的计数,因此应将density=False传递给rv_histogram。如果用density=True调用numpy.histogram,则生成的直方图是以概率密度为单位的,因此应将density=True传递给rv_histogram。为了避免警告,在输入直方图具有不等箱宽度时,始终显式传递density

除了 loc 和 scale 之外,没有额外的形状参数。 pdf 被定义为从提供的直方图的分段函数。 cdf 是 pdf 的线性插值。

0.19.0 版本中的新功能。

示例

从 numpy 直方图创建一个 scipy.stats 分布

>>> import scipy.stats
>>> import numpy as np
>>> data = scipy.stats.norm.rvs(size=100000, loc=0, scale=1.5,
...                             random_state=123)
>>> hist = np.histogram(data, bins=100)
>>> hist_dist = scipy.stats.rv_histogram(hist, density=False) 

表现得像一个普通的 scipy rv_continuous 分布

>>> hist_dist.pdf(1.0)
0.20538577847618705
>>> hist_dist.cdf(2.0)
0.90818568543056499 

PDF 在直方图的最高(最低)箱子之上(之下)为零,由原始数据集的最大(最小)定义

>>> hist_dist.pdf(np.max(data))
0.0
>>> hist_dist.cdf(np.max(data))
1.0
>>> hist_dist.pdf(np.min(data))
7.7591907244498314e-05
>>> hist_dist.cdf(np.min(data))
0.0 

PDF 和 CDF 遵循直方图

>>> import matplotlib.pyplot as plt
>>> X = np.linspace(-5.0, 5.0, 100)
>>> fig, ax = plt.subplots()
>>> ax.set_title("PDF from Template")
>>> ax.hist(data, density=True, bins=100)
>>> ax.plot(X, hist_dist.pdf(X), label='PDF')
>>> ax.plot(X, hist_dist.cdf(X), label='CDF')
>>> ax.legend()
>>> fig.show() 

../../_images/scipy-stats-rv_histogram-1.png

属性:

random_state

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

方法:

__call__固定给定参数的分布。
cdf给定随机变量的累积分布函数。
entropy随机变量的微分熵。
expect使用数值积分计算分布函数对某个函数的期望值。
fit从数据中返回形状(如果适用)、位置和尺度参数的估计。
fit_loc_scale利用数据的第一和第二阶矩估计 loc 和 scale 参数。
freeze固定给定参数的分布。
interval中位数周围等面积的置信区间。
isf给定随机变量的逆生存函数(给定 sf 的逆函数)在 q 处的值。
logcdf给定随机变量 x 的累积分布函数的对数。
logpdf给定随机变量 x 的概率密度函数的对数。
logsf给定随机变量的生存函数的对数。
mean(*args, **kwds)分布的均值。
median(*args, **kwds)分布的中位数。
moment(order, *args, **kwds)分布的非中心矩。
nnlf(theta, x)负对数似然函数。
pdf(x, *args, **kwds)给定随机变量在 x 处的概率密度函数。
ppf(q, *args, **kwds)给定随机变量的百分点函数(cdf 的反函数),在 q 处的值。
rvs(*args, **kwds)给定类型的随机变量。
sf(x, *args, **kwds)给定随机变量的生存函数(1 - cdf)在 x 处的值。
stats(*args, **kwds)给定随机变量的一些统计量。
std(*args, **kwds)分布的标准差。
support(*args, **kwargs)分布的支持区间。
var(*args, **kwds)分布的方差。

scipy.stats.alpha

原文链接:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.alpha.html#scipy.stats.alpha

scipy.stats.alpha = <scipy.stats._continuous_distns.alpha_gen object>

一个阿尔法连续随机变量。

作为rv_continuous类的一个实例,alpha对象继承了一组通用方法(请参阅下面的完整列表),并使用特定于此特定分布的细节来完善它们。

注意事项

alpha的概率密度函数([1][2])为:

[f(x, a) = \frac{1}{x² \Phi(a) \sqrt{2\pi}} * \exp(-\frac{1}{2} (a-1/x)²)]

其中 (\Phi) 是正态分布函数,(x > 0),(a > 0)。

alphaa 视为形状参数。

上述概率密度在“标准化”形式中定义。要移动和/或缩放分布,请使用 locscale 参数。具体而言,alpha.pdf(x, a, loc, scale)y = (x - loc) / scale 的情况下等同于 alpha.pdf(y, a) / scale。请注意,移动分布的位置并不会使其成为“非中心”分布;某些分布的非中心广义化可以在单独的类中找到。

参考文献

[1]

Johnson, Kotz, 和 Balakrishnan,“Continuous Univariate Distributions, Volume 1”,第二版,John Wiley and Sons,第 173 页(1994 年)。

[2]

Anthony A. Salvia,“Alpha 分布的可靠性应用”,IEEE 可靠性期刊,Vol. R-34,No. 3,pp. 251-252(1985 年)。

示例

>>> import numpy as np
>>> from scipy.stats import alpha
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1) 

计算前四个矩:

>>> a = 3.57
>>> mean, var, skew, kurt = alpha.stats(a, moments='mvsk') 

显示概率密度函数(pdf):

>>> x = np.linspace(alpha.ppf(0.01, a),
...                 alpha.ppf(0.99, a), 100)
>>> ax.plot(x, alpha.pdf(x, a),
...        'r-', lw=5, alpha=0.6, label='alpha pdf') 

或者,可以调用分布对象(作为函数)来固定形状、位置和比例参数。这会返回一个“冻结”的随机变量对象,其中给定的参数被固定。

冻结分布并显示冻结的 pdf

>>> rv = alpha(a)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf') 

检查 cdfppf 的准确性:

>>> vals = alpha.ppf([0.001, 0.5, 0.999], a)
>>> np.allclose([0.001, 0.5, 0.999], alpha.cdf(vals, a))
True 

生成随机数:

>>> r = alpha.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() 

../../_images/scipy-stats-alpha-1.png

方法

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.anglit

原文:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.anglit.html#scipy.stats.anglit

scipy.stats.anglit = <scipy.stats._continuous_distns.anglit_gen object>

一个 anglit 连续随机变量。

作为rv_continuous类的一个实例,anglit对象继承了一组通用方法(请参阅下面的完整列表),并根据此特定分布的详细信息完成它们。

注释

anglit的概率密度函数为:

[f(x) = \sin(2x + \pi/2) = \cos(2x)]

对于 (-\pi/4 \le x \le \pi/4)。

上述概率密度在“标准化”形式中定义。要移动和/或缩放分布,请使用locscale参数。具体来说,anglit.pdf(x, loc, scale)等同于 anglit.pdf(y) / scale,其中 y = (x - loc) / scale。请注意,移动分布的位置并不使其成为“非中心”分布;某些分布的非中心广义化是在单独的类中提供的。

示例

>>> import numpy as np
>>> from scipy.stats import anglit
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1) 

计算前四个时刻:

>>> mean, var, skew, kurt = anglit.stats(moments='mvsk') 

显示概率密度函数(pdf):

>>> x = np.linspace(anglit.ppf(0.01),
...                 anglit.ppf(0.99), 100)
>>> ax.plot(x, anglit.pdf(x),
...        'r-', lw=5, alpha=0.6, label='anglit pdf') 

或者,分布对象可以被调用(作为函数)以固定形状、位置和比例参数。这将返回一个“冻结”的随机变量对象,其中包含给定的固定参数。

冻结分布并显示冻结的pdf

>>> rv = anglit()
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf') 

检查cdfppf的准确性:

>>> vals = anglit.ppf([0.001, 0.5, 0.999])
>>> np.allclose([0.001, 0.5, 0.999], anglit.cdf(vals))
True 

生成随机数:

>>> r = anglit.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() 

../../_images/scipy-stats-anglit-1.png

方法

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.arcsine

原文链接:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.arcsine.html#scipy.stats.arcsine

scipy.stats.arcsine = <scipy.stats._continuous_distns.arcsine_gen object>

一个正弦曲线的连续随机变量。

作为 rv_continuous 类的一个实例,arcsine 对象继承了一组通用方法(下面列出全部),并为特定分布的细节完善了这些方法。

注释

arcsine 的概率密度函数为:

[f(x) = \frac{1}{\pi \sqrt{x (1-x)}}]

对于 (0 < x < 1)。

上述概率密度在“标准化”形式中定义。使用 locscale 参数进行移位和/或缩放分布。具体而言,arcsine.pdf(x, loc, scale) 等同于 arcsine.pdf(y) / scale,其中 y = (x - loc) / scale。请注意,移动分布的位置并不使其成为“非中心”分布;一些分布的非中心推广可以在单独的类中找到。

示例

>>> import numpy as np
>>> from scipy.stats import arcsine
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1) 

计算前四个矩:

>>> mean, var, skew, kurt = arcsine.stats(moments='mvsk') 

显示概率密度函数(pdf):

>>> x = np.linspace(arcsine.ppf(0.01),
...                 arcsine.ppf(0.99), 100)
>>> ax.plot(x, arcsine.pdf(x),
...        'r-', lw=5, alpha=0.6, label='arcsine pdf') 

或者,可以调用分布对象(作为函数)以固定形状、位置和尺度参数。这将返回一个“冻结”的随机变量对象,保持给定的参数不变。

冻结分布并显示冻结的pdf

>>> rv = arcsine()
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf') 

检查cdfppf的准确性:

>>> vals = arcsine.ppf([0.001, 0.5, 0.999])
>>> np.allclose([0.001, 0.5, 0.999], arcsine.cdf(vals))
True 

生成随机数:

>>> r = arcsine.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() 

../../_images/scipy-stats-arcsine-1.png

方法

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.argus

原文:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.argus.html#scipy.stats.argus

scipy.stats.argus = <scipy.stats._continuous_distns.argus_gen object>

Argus 分布

作为 rv_continuous 类的一个实例,argus 对象继承了一组通用方法(请参阅下面的完整列表),并以此特定分布的详细信息补充它们。

注释

argus 的概率密度函数为:

[f(x, \chi) = \frac{\chi³}{\sqrt{2\pi} \Psi(\chi)} x \sqrt{1-x²} \exp(-\chi² (1 - x²)/2)]

对于 (0 < x < 1) 和 (\chi > 0),其中

[\Psi(\chi) = \Phi(\chi) - \chi \phi(\chi) - 1/2]

其中 (\Phi) 和 (\phi) 分别是标准正态分布的 CDF 和 PDF。

argus 将 (\chi) 视为形状参数。

上述概率密度在“标准化”形式下定义。要移动和/或缩放分布,请使用 locscale 参数。具体而言,argus.pdf(x, chi, loc, scale) 等同于 argus.pdf(y, chi) / scale,其中 y = (x - loc) / scale。请注意,移动分布的位置并不使其成为“非中心”分布;某些分布的非中心推广可在单独的类中找到。

参考文献

[1]

“ARGUS 分布”,en.wikipedia.org/wiki/ARGUS_distribution

从版本 0.19.0 开始新增。

示例

>>> import numpy as np
>>> from scipy.stats import argus
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1) 

计算前四阶矩:

>>> chi = 1
>>> mean, var, skew, kurt = argus.stats(chi, moments='mvsk') 

显示概率密度函数 (pdf):

>>> x = np.linspace(argus.ppf(0.01, chi),
...                 argus.ppf(0.99, chi), 100)
>>> ax.plot(x, argus.pdf(x, chi),
...        'r-', lw=5, alpha=0.6, label='argus pdf') 

或者,可以调用(作为函数)分布对象以固定形状、位置和缩放参数。这将返回一个“冻结”的随机变量对象,保存给定的参数不变。

冻结分布并显示冻结的 pdf

>>> rv = argus(chi)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf') 

检查 cdfppf 的准确性:

>>> vals = argus.ppf([0.001, 0.5, 0.999], chi)
>>> np.allclose([0.001, 0.5, 0.999], argus.cdf(vals, chi))
True 

生成随机数:

>>> r = argus.rvs(chi, 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() 

../../_images/scipy-stats-argus-1.png

方法

rvs(chi, loc=0, scale=1, size=1, random_state=None)随机变量。
pdf(x, chi, loc=0, scale=1)概率密度函数。
logpdf(x, chi, loc=0, scale=1)概率密度函数的对数。
cdf(x, chi, loc=0, scale=1)累积分布函数。
logcdf(x, chi, loc=0, scale=1)累积分布函数的对数。
sf(x, chi, loc=0, scale=1)生存函数(也定义为 1 - cdf,但 sf 有时更准确)。
logsf(x, chi, loc=0, scale=1)生存函数的对数。
ppf(q, chi, loc=0, scale=1)百分点函数(cdf 的反函数 — 百分位数)。
isf(q, chi, loc=0, scale=1)逆生存函数(sf 的反函数)。
moment(order, chi, loc=0, scale=1)指定阶数的非中心矩。
stats(chi, loc=0, scale=1, moments=’mv’)均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。
entropy(chi, loc=0, scale=1)随机变量的(微分)熵。
fit(data)通用数据的参数估计。详细文档请参见 scipy.stats.rv_continuous.fit
**expect(func, args=(chi,), loc=0, scale=1, lb=None, ub=None, conditional=False, kwds)函数期望值(一个参数)关于分布的。
median(chi, loc=0, scale=1)分布的中位数。
mean(chi, loc=0, scale=1)分布的均值。
var(chi, loc=0, scale=1)分布的方差。
std(chi, loc=0, scale=1)分布的标准差。
interval(confidence, chi, loc=0, scale=1)置信区间,围绕中位数具有相等的面积。

scipy.stats.beta

原文链接:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.beta.html#scipy.stats.beta

scipy.stats.beta = <scipy.stats._continuous_distns.beta_gen object>

一个 beta 连续随机变量。

作为rv_continuous类的实例,beta对象继承了一组通用方法(下面详细列出),并且根据该特定分布补充了细节。

注意:

beta 的概率密度函数为:

[f(x, a, b) = \frac{\Gamma(a+b) x^{a-1} (1-x)^{b-1}} {\Gamma(a) \Gamma(b)}]

对于 (0 <= x <= 1), (a > 0), (b > 0),其中 (\Gamma) 是 gamma 函数 (scipy.special.gamma)。

beta 接受(a)和(b)作为形状参数。

上述概率密度函数以“标准化”形式定义。使用 locscale 参数来进行移动和/或缩放分布。具体来说,beta.pdf(x, a, b, loc, scale)beta.pdf(y, a, b) / scale 完全等价,其中 y = (x - loc) / scale。请注意,移动分布的位置并不会使其成为“非中心”分布;某些分布的非中心推广可以在单独的类中找到。

示例:

>>> import numpy as np
>>> from scipy.stats import beta
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1) 

计算前四阶距:

>>> a, b = 2.31, 0.627
>>> mean, var, skew, kurt = beta.stats(a, b, moments='mvsk') 

显示概率密度函数 (pdf):

>>> x = np.linspace(beta.ppf(0.01, a, b),
...                 beta.ppf(0.99, a, b), 100)
>>> ax.plot(x, beta.pdf(x, a, b),
...        'r-', lw=5, alpha=0.6, label='beta pdf') 

或者,可以通过调用分布对象(作为函数)来固定形状、位置和尺度参数。这会返回一个“冻结”的随机变量对象,其中包含给定的固定参数。

冻结分布并显示冻结的 pdf

>>> rv = beta(a, b)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf') 

检查 cdfppf 的精度:

>>> vals = beta.ppf([0.001, 0.5, 0.999], a, b)
>>> np.allclose([0.001, 0.5, 0.999], beta.cdf(vals, a, b))
True 

生成随机数:

>>> r = beta.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() 

../../_images/scipy-stats-beta-1.png

方法:

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.betaprime

原文链接:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.stats.betaprime.html#scipy.stats.betaprime

scipy.stats.betaprime = <scipy.stats._continuous_distns.betaprime_gen object>

beta prime 连续随机变量。

作为rv_continuous类的实例,betaprime对象从中继承了一系列通用方法(下面列出了全部方法),并使用特定于此特定分布的细节进行补充。

注释

betaprime的概率密度函数为:

[f(x, a, b) = \frac{x^{a-1} (1+x)^{-a-b}}{\beta(a, b)}]

当(x >= 0),(a > 0),(b > 0)时,其中(\beta(a, b))是 beta 函数(参见scipy.special.beta)。

betaprimeab作为形状参数。

该分布与beta分布相关: 如果(X)服从参数为(a, b)的 beta 分布,则(Y = X/(1-X))服从参数为(a, b)的 beta prime 分布([1])。

beta prime 分布是 F 分布的重新参数化版本。参数ab以及scale = s的 beta prime 分布等效于参数d1 = 2*ad2 = 2*bscale = (a/b)*s的 F 分布。例如,

>>> from scipy.stats import betaprime, f
>>> x = [1, 2, 5, 10]
>>> a = 12
>>> b = 5
>>> betaprime.pdf(x, a, b, scale=2)
array([0.00541179, 0.08331299, 0.14669185, 0.03150079])
>>> f.pdf(x, 2*a, 2*b, scale=(a/b)*2)
array([0.00541179, 0.08331299, 0.14669185, 0.03150079]) 

上述概率密度定义为“标准化”形式。要转换和/或缩放分布,请使用locscale参数。具体地,betaprime.pdf(x, a, b, loc, scale)y = (x - loc) / scalebetaprime.pdf(y, a, b) / scale是等价的。注意,移动分布的位置并不会使其成为“非中心”分布; 一些分布的非中心广义化可在单独的类中找到。

参考资料

[1]

Beta prime 分布,维基百科,en.wikipedia.org/wiki/Beta_prime_distribution

示例

>>> import numpy as np
>>> from scipy.stats import betaprime
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1) 

计算前四个矩:

>>> a, b = 5, 6
>>> mean, var, skew, kurt = betaprime.stats(a, b, moments='mvsk') 

显示概率密度函数(pdf):

>>> x = np.linspace(betaprime.ppf(0.01, a, b),
...                 betaprime.ppf(0.99, a, b), 100)
>>> ax.plot(x, betaprime.pdf(x, a, b),
...        'r-', lw=5, alpha=0.6, label='betaprime pdf') 

或者,可以调用分布对象(作为函数)来固定形状,位置和比例参数。 这将返回一个保存给定参数的“冻结”RV 对象。

冻结分布并显示冻结的pdf

>>> rv = betaprime(a, b)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf') 

检查cdfppf的准确性:

>>> vals = betaprime.ppf([0.001, 0.5, 0.999], a, b)
>>> np.allclose([0.001, 0.5, 0.999], betaprime.cdf(vals, a, b))
True 

生成随机数:

>>> r = betaprime.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() 

../../_images/scipy-stats-betaprime-1.png

方法

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)置信区间,围绕中位数有相等的面积。