SciPy - Stats
SciPy Stats 是 Python 中 SciPy 库的一个模块,专为统计分析而设计。SciPy 是一个强大的科学和数值计算库,而 scipy.stats 模块提供了广泛的统计工具、概率分布以及用于进行统计运算和分析的函数。
SciPy Stats 的主要特性
SciPy Stats 的主要特性包括广泛的统计工具和函数,旨在促进数据分析和假设检验。以下是 scipy.stats 模块的主要特性 −
SciPy Stats 中的概率分布
scipy.stats 模块提供了一套全面的概率分布,包括连续分布和离散分布。这些分布允许在 Python 中进行概率计算、数据建模和统计分析。
SciPy Stats 中的概率分布类型
scipy.stats 模块提供了多种概率分布,主要分为以下两种类型 −
- 连续概率分布: 在连续范围内取无限多个值的分布。
- 离散概率分布: 取特定、可计数的值的分布。
概率分布可以通过 scipy.stats.norm 模块中的函数来实现。以下是适用于 SciPy 中大多数概率分布(无论是连续还是离散)的核心函数 −
| 序号 | 函数 & 描述 |
|---|---|
| 1 | scipy.stats.norm.pdf() 计算连续随机变量在特定点的似然。 |
| 2 | scipy.stats.norm.cdf() 计算随机变量小于等于 x 的概率。 |
| 3 | scipy.stats.norm.ppf() 返回对应给定累积概率的值。 |
| 4 | scipy.stats.norm.sf() 返回随机变量大于 x 的概率(1 - CDF)。 |
| 5 | scipy.stats.norm.isf() 返回对应给定尾概率(1 - CDF)的值。 |
| 6 | scipy.stats.norm.rvs() 从正态分布生成随机样本。 |
| 7 | scipy.stats.norm.fit() 估计给定数据的均值和标准差。 |
| 8 | scipy.stats.norm.mean() 返回正态分布的理论均值。 |
| 9 | scipy.stats.norm.var() 返回正态分布的理论方差。 |
统计检验(假设检验)
统计检验(假设检验)是指基于样本数据对总体进行推断或决策的过程。其核心概念涉及比较两个假设:原假设(H0)认为没有效应或差异,而备择假设(H1)认为存在效应或差异。
基于数据,统计检验评估反对原假设的证据强度。下面是 scipy.stats 模块中可用于执行 统计检验 的关键函数 −
| 序号 | 函数 & 描述 |
|---|---|
| 1 | scipy.stats.ttest_1samp() 执行单样本 t 检验,以将样本均值与已知的总体均值进行比较。 |
| 2 | scipy.stats.ttest_ind() 执行独立双样本 t 检验,以比较两个独立组的均值。 |
| 3 | scipy.stats.ttest_rel() 执行配对 t 检验,以比较两个相关样本的均值。 |
| 4 | scipy.stats.chi2_contingency() 对列联表执行独立性卡方检验。 |
| 5 | scipy.stats.f_oneway() 执行单因素 ANOVA 检验,以比较两个或更多组的均值。 |
| 6 | scipy.stats.levene() 测试组间方差相等性,即方差齐性检验。 |
| 7 | scipy.stats.shapiro() 执行 Shapiro-Wilk 检验,以测试数据集的正态性。 |
| 8 | scipy.stats.ks_1samp() 执行单样本 Kolmogorov-Smirnov 检验,以将样本与分布进行比较。 |
| 9 | scipy.stats.ks_2samp() 执行双样本 Kolmogorov-Smirnov 检验,以比较两个独立样本。 |
| 10 | scipy.stats.mannwhitneyu() 执行 Mann-Whitney U 检验,这是一种用于比较两个独立样本的非参数检验。 |
| 11 | scipy.stats.wilcoxon() 执行 Wilcoxon 符号秩检验,以比较两个相关样本。 |
| 12 | scipy.stats.pearsonr() 计算 Pearson 相关系数和 p 值,用于测试无相关性。 |
| 13 | scipy.stats.spearmanr() 计算 Spearman 等级相关系数。 |
| 14 | scipy.stats.kruskal() 执行 Kruskal-Wallis H 检验,以比较两个或更多独立样本。 |
| 15 | scipy.stats.friedmanchisquare() 执行 Friedman 检验,用于多个条件下的重复测量。 |
描述性统计
描述性统计涉及用于总结和呈现数据集关键特征的技术。它通过突出数据的分布、集中趋势和变异性来帮助解释数据。这分支统计学包括各种汇总量,如集中趋势指标(mean、median、mode)、离散度量(range、variance、standard deviation)和分布特征(skewness、kurtosis)。
以下是 scipy.stats 模块中用于执行描述性统计的可用函数 −
| 序号 | 函数 & 描述 |
|---|---|
| 1 | scipy.stats.tmean(data) 计算数据集的算术平均值。 |
| 2 | scipy.stats.median(data) 找到排序后数据集的中间值。 |
| 3 | scipy.stats.mode(data) 返回数据集中出现最频繁的值。 |
| 4 | scipy.stats.tvar(data) 计算数据集的方差。 |
| 5 | scipy.stats.tstd(data) 计算数据集的标准差。 |
| 6 | scipy.stats.iqr(data) 计算数据集的四分位距 (IQR)。 |
| 7 | scipy.stats.skew(data) 衡量数据分布的不对称性。 |
| 8 | scipy.stats.kurtosis(data) 评估分布的“尾部厚度”。 |
| 9 | scipy.stats.scoreatpercentile(data, q) 返回低于其一定百分比观测值的那个值。 |
| 10 | scipy.stats.mstats.mquantiles(data) 计算数据集的分位数。 |
| 11 | scipy.stats.trim_mean(data, proportiontocut) 在移除一定比例的最小值和最大值后计算平均值。 |
| 12 | scipy.stats.tmin(data) 返回数据集中的最小值和最大值。 |
| 12 | scipy.stats.tmax(data) 返回数据集中的最小值和最大值。 |
SciPy Stats 中的相关性与回归分析
相关性和回归分析是用于考察两个或多个变量之间关系的强大统计方法。这些技术有助于识别模式、评估关联强度并基于数据进行预测。
| 序号 | 函数和描述 |
|---|---|
| 1 | scipy.stats.pearsonr() 计算 Pearson 相关系数和用于测试非相关性的 p 值。 |
| 2 | scipy.stats.spearmanr() 计算 Spearman 等级相关系数。 |
| 3 | scipy.stats.kendalltau() 计算 Kendall's Tau,一种用于有序数据的相关性度量。 |
| 4 | scipy.stats.linregress() 执行简单线性回归,并返回斜率、截距和其他统计量。 |
| 5 | scipy.stats.pointbiserialr() 计算二元数据和连续数据之间的点二列相关系数。 |
| 6 | scipy.stats.variation() 计算变异系数 (CV),用于衡量相对变异性。 |
| 7 | scipy.stats.ttest_ind() 执行独立样本 t 检验,以比较两个独立样本的均值。 |
| 8 | scipy.stats.ttest_rel() 执行配对 t 检验,以比较相关样本的均值。 |
| 9 | scipy.stats.f_oneway() 执行单因素 ANOVA 检验,以比较多个组的均值。 |
| 10 | scipy.stats.chisquare() 执行卡方拟合优度检验。 |
| 11 | scipy.stats.chi2_contingency() 执行卡方独立性检验,用于分类变量之间。 |
| 12 | scipy.stats.mannwhitneyu() 执行 Mann-Whitney U 检验,以比较两个独立分布。 |
| 13 | scipy.stats.wilcoxon() 执行 Wilcoxon 符号秩检验,用于配对样本。 |
SciPy Stats 中的随机抽样
随机抽样是统计学中的一项基本技术,用于从总体或数据集中的个体子集中选择样本进行分析。SciPy 提供了从不同概率分布生成随机样本的各种方法 −
| 序号 | 函数及其描述 |
|---|---|
| 1 | scipy.stats.uniform.rvs() 从区间 [0, 1) 的均匀分布中生成随机样本。 |
| 2 | scipy.stats.norm.rvs() 从具有给定均值 (loc) 和标准差 (scale) 的正态 (高斯) 分布中生成随机样本。 |
| 3 | scipy.stats.randint.rvs() 从 low(包含)到 high(不包含)之间的离散均匀分布中生成随机整数。 |
| 4 | scipy.stats.binom.rvs() 从具有参数 n(试验次数)和 p(成功概率)的二项分布中生成随机样本。 |
| 5 | scipy.stats.poisson.rvs() 从具有速率参数 mu(事件平均发生次数)的泊松分布中生成随机样本。 |
| 6 | scipy.stats.expon.rvs() 从具有给定尺度参数(速率的倒数)的指数分布中生成随机样本。 |
| 7 | scipy.stats.beta.rvs() 从具有形状参数 a 和 b 的 Beta 分布中生成随机样本。 |
| 8 | scipy.stats.gamma.rvs() 从具有形状和尺度参数的 Gamma 分布中生成随机样本。 |
| 9 | scipy.stats.chi2.rvs() 从具有 df 自由度的卡方分布中生成随机样本。 |
| 10 | scipy.stats.f.rvs() 从具有 dfnum 和 dfden 自由度的 F 分布中生成随机样本。 |
| 11 | scipy.stats.t.rvs() 从具有 df 自由度的 Student t 分布中生成随机样本。 |
| 12 | scipy.stats.weibull_min.rvs() 从具有形状参数 c 的 Weibull 分布中生成随机样本。 |
| 13 | scipy.stats.dirichlet.rvs() 从具有浓度参数 alpha 的 Dirichlet 分布中生成随机样本。 |
SciPy Stats 中的数据排序与缩放
数据排序和缩放是统计学中重要的技术,用于调整数据的尺度以进行比较,或评估观测值的相对位置。排序涉及对数据进行排序,而缩放则调整范围或分布以实现标准化或归一化。
| 序号 | 函数及其描述 |
|---|---|
| 1 | scipy.stats.rankdata() 对数组中的值进行排序,并将平局值赋予平均排序。 |
| 2 | scipy.stats.zscore() 通过缩放到零均值和单位方差来标准化数组。 |
| 3 | scipy.stats.mstats.rankdata() 使用掩码数组对数据进行排序,正确处理缺失或无效值。 |
| 4 | scipy.stats.mstats.zscore() 通过转换掩码数据数组到零均值和单位方差来标准化。 |
| 5 | scipy.stats.percentileofscore() 计算给定数据集内某个分数的百分位排名。 |
| 6 | scipy.stats.trim_mean() 在移除给定比例的最小值和最大值后,计算数据集的均值。 |