统计函数 (scipy.stats)#

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

统计是一个非常大的领域,有些主题超出了 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])

生成由直方图给出的分布。

连续分布#

alpha

一个 alpha 连续随机变量。

anglit

一个 anglit 连续随机变量。

arcsine

一个 arcsine 连续随机变量。

argus

Argus 分布

beta

一个 beta 连续随机变量。

betaprime

一个 beta prime 连续随机变量。

bradford

一个 Bradford 连续随机变量。

burr

一个 Burr (Type III) 连续随机变量。

burr12

一个 Burr (Type XII) 连续随机变量。

cauchy

一个 Cauchy 连续随机变量。

chi

一个 chi 连续随机变量。

chi2

一个卡方连续随机变量。

cosine

一个余弦连续随机变量。

crystalball

Crystalball 分布

dgamma

一个双伽玛连续随机变量。

dpareto_lognorm

一个双 Pareto 对数正态连续随机变量。

dweibull

一个双 Weibull 连续随机变量。

erlang

一个 Erlang 连续随机变量。

expon

一个指数连续随机变量。

exponnorm

一个指数修改的正态连续随机变量。

exponweib

一个指数化的 Weibull 连续随机变量。

exponpow

一个指数幂连续随机变量。

f

一个 F 连续随机变量。

fatiguelife

一个疲劳寿命(Birnbaum-Saunders)连续随机变量。

fisk

一个 Fisk 连续随机变量。

foldcauchy

一个折叠的 Cauchy 连续随机变量。

foldnorm

一个折叠的正态连续随机变量。

genlogistic

一个广义 Logistic 连续随机变量。

gennorm

一个广义正态连续随机变量。

genpareto

一个广义 Pareto 连续随机变量。

genexpon

一个广义指数连续随机变量。

genextreme

一个广义极值连续随机变量。

gausshyper

一个高斯超几何连续随机变量。

gamma

一个伽玛连续随机变量。

gengamma

一个广义伽玛连续随机变量。

genhalflogistic

一个广义半 Logistic 连续随机变量。

genhyperbolic

一个广义双曲连续随机变量。

geninvgauss

一个广义逆高斯连续随机变量。

gibrat

一个 Gibrat 连续随机变量。

gompertz

一个 Gompertz(或截断的 Gumbel)连续随机变量。

gumbel_r

一个右偏的 Gumbel 连续随机变量。

gumbel_l

一个左偏的 Gumbel 连续随机变量。

halfcauchy

一个半 Cauchy 连续随机变量。

halflogistic

一个半 Logistic 连续随机变量。

halfnorm

一个半正态连续随机变量。

halfgennorm

一个广义正态连续随机变量的上半部分。

hypsecant

一个双曲正割连续随机变量。

invgamma

一个反伽玛连续随机变量。

invgauss

一个逆高斯连续随机变量。

invweibull

一个反 Weibull 连续随机变量。

irwinhall

一个 Irwin-Hall(均匀和)连续随机变量。

jf_skew_t

Jones 和 Faddy 偏 t 分布。

johnsonsb

一个 Johnson SB 连续随机变量。

johnsonsu

一个 Johnson SU 连续随机变量。

kappa4

Kappa 4 参数分布。

kappa3

Kappa 3 参数分布。

ksone

柯尔莫哥洛夫-斯米尔诺夫单边检验统计量分布。

kstwo

柯尔莫哥洛夫-斯米尔诺夫双边检验统计量分布。

kstwobign

缩放的柯尔莫哥洛夫-斯米尔诺夫双边检验统计量的极限分布。

landau

一个 Landau 连续随机变量。

laplace

一个拉普拉斯连续随机变量。

laplace_asymmetric

一个不对称的拉普拉斯连续随机变量。

levy

一个 Levy 连续随机变量。

levy_l

一个左偏的 Levy 连续随机变量。

levy_stable

一个 Levy-stable 连续随机变量。

logistic

一个 Logistic(或 Sech 平方)连续随机变量。

loggamma

一个对数伽玛连续随机变量。

loglaplace

一个对数拉普拉斯连续随机变量。

lognorm

一个对数正态连续随机变量。

loguniform

一个对数均匀或倒数连续随机变量。

lomax

一个 Lomax(第二类 Pareto)连续随机变量。

maxwell

一个麦克斯韦连续随机变量。

mielke

一个 Mielke Beta-Kappa / Dagum 连续随机变量。

moyal

一个 Moyal 连续随机变量。

nakagami

一个 Nakagami 连续随机变量。

ncx2

一个非中心卡方连续随机变量。

ncf

一个非中心 F 分布连续随机变量。

nct

一个非中心 Student's t 连续随机变量。

norm

一个正态连续随机变量。

norminvgauss

一个正态逆高斯连续随机变量。

pareto

一个 Pareto 连续随机变量。

pearson3

一个 Pearson III 型连续随机变量。

powerlaw

一个幂函数连续随机变量。

powerlognorm

一个幂对数正态连续随机变量。

powernorm

一个幂正态连续随机变量。

rdist

一个 R 分布(对称 beta)连续随机变量。

rayleigh

一个瑞利连续随机变量。

rel_breitwigner

一个相对论布赖特-维格纳随机变量。

rice

一个 Rice 连续随机变量。

recipinvgauss

一个倒数逆高斯连续随机变量。

semicircular

一个半圆形连续随机变量。

skewcauchy

一个偏斜柯西随机变量。

skewnorm

一个偏态正态随机变量。

studentized_range

一个学生化范围连续随机变量。

t

一个 Student's t 连续随机变量。

trapezoid

一个梯形连续随机变量。

triang

一个三角形连续随机变量。

truncexpon

一个截断的指数连续随机变量。

truncnorm

一个截断的正态连续随机变量。

truncpareto

一个上截断的 Pareto 连续随机变量。

truncweibull_min

一个双重截断的 Weibull 最小值连续随机变量。

tukeylambda

一个 Tukey-Lamdba 连续随机变量。

uniform

一个均匀连续随机变量。

vonmises

一个冯·米塞斯连续随机变量。

vonmises_line

一个冯·米塞斯连续随机变量。

wald

一个 Wald 连续随机变量。

weibull_min

Weibull 最小值连续随机变量。

weibull_max

Weibull 最大值连续随机变量。

wrapcauchy

一个包裹的柯西连续随机变量。

单变量连续分布的 fit 方法使用最大似然估计将分布拟合到数据集。 fit 方法可以接受常规数据或删失数据。删失数据用 CensoredData 类的实例表示。

CensoredData([未删失, 左, 右, 区间])

此类的实例表示删失数据。

多元分布#

multivariate_normal

多元正态随机变量。

matrix_normal

矩阵正态随机变量。

dirichlet

狄利克雷随机变量。

dirichlet_multinomial

狄利克雷多项式随机变量。

wishart

Wishart 随机变量。

invwishart

逆 Wishart 随机变量。

multinomial

多项式随机变量。

special_ortho_group

特殊正交矩阵 (SO(N)) 随机变量。

ortho_group

正交矩阵 (O(N)) 随机变量。

unitary_group

矩阵值的 U(N) 随机变量。

random_correlation

随机相关矩阵。

multivariate_t

多元 t 分布随机变量。

multivariate_hypergeom

多元超几何随机变量。

normal_inverse_gamma

正态逆伽马分布。

random_table

来自具有固定边际和的独立样本的列联表。

uniform_direction

向量值均匀方向。

vonmises_fisher

冯·米塞斯-费舍尔变量。

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

协方差()

协方差矩阵的表示

离散分布#

bernoulli

伯努利离散随机变量。

betabinom

贝塔二项式离散随机变量。

betanbinom

贝塔负二项式离散随机变量。

binom

二项式离散随机变量。

boltzmann

玻尔兹曼(截断离散指数)随机变量。

dlaplace

拉普拉斯离散随机变量。

geom

几何离散随机变量。

hypergeom

超几何离散随机变量。

logser

对数(对数级数,级数)离散随机变量。

nbinom

负二项式离散随机变量。

nchypergeom_fisher

费舍尔非中心超几何离散随机变量。

nchypergeom_wallenius

瓦勒纽斯非中心超几何离散随机变量。

nhypergeom

负超几何离散随机变量。

planck

普朗克离散指数随机变量。

poisson

泊松离散随机变量。

poisson_binom

泊松二项式离散随机变量。

randint

均匀离散随机变量。

skellam

斯凯拉姆离散随机变量。

yulesimon

尤尔-西蒙离散随机变量。

zipf

齐普夫(Zeta)离散随机变量。

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, ...])

计算数据集的峰度(费舍尔或皮尔逊)。

mode(a[, axis, nan_policy, keepdims])

返回传入数组中模态(最常见)值的数组。

moment(a[, order, axis, nan_policy, center, ...])

计算样本均值的 n 阶矩。

lmoment(sample[, order, axis, sorted, ...])

计算来自连续分布的样本的 L 阶矩

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[, ...])

计算一组数据的多维分箱统计量。

随机变量#

make_distribution(dist)

rv_continuous 的实例生成 ContinuousDistribution

Normal([mu, sigma])

具有指定均值和标准差的正态分布。

Uniform(*[, a, b])

均匀分布。

Mixture(components, *[, weights])

混合分布的表示。

order_statistic(X, /, *, r, n)

顺序统计量的概率分布

truncate(X[, lb, ub])

截断随机变量的支持范围。

abs(X, /)

随机变量的绝对值

exp(X, /)

随机变量的自然指数

log(X, /)

非负随机变量的自然对数

拟蒙特卡罗#

列联表#

掩码统计函数#

其他统计功能#

转换#

boxcox(x[, lmbda, alpha, optimizer])

返回由 Box-Cox 幂变换转换的数据集。

boxcox_normmax(x[, brack, method, ...])

计算输入数据的最佳 Box-Cox 变换参数。

boxcox_llf(lmb, data)

boxcox 对数似然函数。

yeojohnson(x[, lmbda])

返回由 Yeo-Johnson 幂变换转换的数据集。

yeojohnson_normmax(x[, brack])

计算最佳 Yeo-Johnson 变换参数。

yeojohnson_llf(lmb, data)

yeojohnson 对数似然函数。

obrientransform(*samples)

计算输入数据的 O'Brien 变换(任意数量的数组)。

sigmaclip(a[, low, high])

执行数组元素的迭代西格玛剪切。

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[, ...])

计算两个一维离散分布之间的 Wasserstein-1 距离。

wasserstein_distance_nd(u_values, v_values)

计算两个 N 维离散分布之间的 Wasserstein-1 距离。

energy_distance(u_values, v_values[, ...])

计算两个一维分布之间的能量距离。

抽样#

拟合/生存分析#

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, ...])

计算角度观测样本的圆标准差。

敏感性分析#

sobol_indices(*, func, n[, dists, method, rng])

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 中使用的结果类#

警告

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