社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python Pingouin:搞定各种假设检验和统计模型 !

数据分析与开发 • 1 年前 • 1109 次点击  

推荐关注↓

原文作者:Giannis Tolios

来源:我得学城 

1. 假设检验的基本步骤

假设检验的第一步是提出研究假设,这是一种可以经过统计测试的陈述,涉及变量的比较,例如药物X可以比安慰剂降低血压。在这样做之后,我们指定零假设 ,它指出在总体中不存在影响。相比之下,备择假设 指出在总体中实际上存在影响。
下一步是数据收集。这可以通过实验、调查、采访和其他方法实现,具体取决于研究类型。
例如,A/B测试收集不同网站版本的用户反馈,以评估它们的性能。还可以使用为其他目的创建的数据集,这种方法被称为二次数据分析。
统计测试概述 source: https://philipppro.github.io/Statistical_tests_overview/
之后,我们需要决定哪种测试方法最适合我们的假设检验。
有很多可用的测试方法,包括t检验方差分析(ANOVA)卡方检验克鲁斯卡尔-沃利斯检验(Kruskal-Wallis)等等。
选择适当的测试方法取决于许多因素,包括变量的类型和分布。
因为是基于各种假设的参数测试方法(如ANOVA),所以我们需要评估我们的数据集是否满足这些假设。
上面提供了所有基本假设检验的概述。当然,还有更多的假设检验方法可用,但上面的表已涵盖了基本情况。
第一型和第二型错误 source: 原作者
之后,我们需要指定显著性水平 (alpha),这是拒绝零假设的阈值,通常设为0.05。因此,假设检验的结果为 值 > 0.05意味着无法拒绝零假设。相反, 值 ≤ 0.05允许我们拒绝零假设并接受备择假设。
更具体地说, 值是具有零假设为真的情况下观察到的效应发生的概率。
此外,显著性水平 等于犯第一型错误的概率,即在零假设为真时拒绝零假设(假阳性)。(beta)是犯第二型错误的概率,即在零假设为假时未能拒绝零假设(假阴性)。
另一个重要的概念是统计功效,它是正确拒绝零假设的概率,并定义为 。
在完成上述步骤之后,我们执行假设检验并陈述我们的结论,无论是拒绝零假设还是不拒绝。

2. Pingouin库

Pingouin(https://pingouin-stats.org/index.html) 是一个开源的Python库,支持各种假设检验和统计模型
该库包括许多测试,例如ANOVA、t检验、卡方检验、克鲁斯卡尔-沃利斯检验(Kruskal-Wallis)、曼-惠特尼检验(Mann-Whitney)、威尔科克森符号秩(Wilcoxon signed-rank)等。
此外,Pingouin允许计算两个变量之间的相关系数,并创建线性和逻辑回归模型。
Pingouin既友好又强大,因为它返回所有测试的详细结果,使其成为科学Python生态系统的重要组成部分。
本文,我们将使用Pingouin来运行假设检验并解释提供的结果。

3. 种子数据集

本文的案例研究基于种子数据集(https://archive.ics.uci.edu/ml/datasets/seeds)。
这个数据集由UCI机器学习库免费提供。该数据集包含有关3种小麦品种(Kama、Rosa和Canadian )的样本信息。
此外,数据集包括每个小麦核的各种几何特性,包括面积、周长、紧密度、核长、核宽等。
该数据集广泛用于机器学习任务,例如分类和聚类,但我们将其用于假设检验。更具体地说,我们的目标是评估小麦品种之间的几何差异。

4. ANOVA的案例研究

我们现在将利用Pingouin库和种子数据集,通过实际的假设检验案例来进行探讨。
我们的研究假设是紧密度与小麦品种有关,我们提出了零假设备择假设
  • :所有小麦品种的紧密度均值相同。
  • :小麦品种的紧密度均值不同。
在陈述了我们的假设之后,我们进入代码实践部分。
我们首先导入必要的Python库,并将种子数据集加载到pandas dataframe中。
然后,我们使用groupby()函数将数据集行按小麦品种分组,并计算每列的均值。
正如我们所看到的,对于每个品种,大多数变量的均值值显着不同。紧密度似乎是一个例外,所有小麦品种的平均值相似,因此我们将对此变量进行详细的研究。
我们使用pandas的boxplot()函数为紧密度变量创建箱线图。
显然,Kama和Rosa品种具有类似的四分位数,中位数几乎相同。
相反,Canadian品种似乎与其他品种略有不同,但我们需要通过假设检验进行验证。我们想要比较所有小麦品种的平均紧密度值,即存在一个有三个类别的独立变量和一个数值依赖变量。因此,这种情况下最适合的测试是单因素方差分析(ANOVA)。
作为一个参数化测试,ANOVA基于数据集的各种假设,其中一个是所有组样本都是正态分布的 。我们可以通过使用Seaborn函数kdeplot()为每个小麦品种创建一个KDE图来直观地评估这一点。
此外,我们使用Pingouinnormality()函数运行Shapiro-Wilk正态性测试 ,确认所有样本都是正态分布的。
请记住,Shapiro-Wilk对大样本不是特别准确,因此在这种情况下,Jarque-Bera或Omnibus等测试更可取。
此外,研究表明,ANOVA对这一假设的违反可以具有鲁棒性 ,因此轻微偏离正态分布并不是一个严重的问题。
当然,应该始终评估数据集是否符合测试假设,并考虑使用非参数测试。
除了Shapiro-Wilk等测试之外,创建Q-Q图是评估样本正态性的另一种方法。
这是一个散点图,可以轻松比较正态分布和样本分布的分位数。如果样本分布是正态的,所有点都将靠近 的直线。
我们可以使用Pingouin的qqplot()函数轻松为各种理论分布创建Q-Q图。此外,还在图中包括了一个最佳拟合线,基于线性回归模型。
显然,所有样本分位数都与正态分布几乎相同,进一步确认了Shapiro-Wilk测试和KDE图形评估。
ANOVA测试也基于所有样本具有相等方差的假设,这种性质称为同方差性。
Pingouin的homoscedasticity() 函数让我们通过使用Levene测试轻松评估这一点,这是评估方差相等的典型方法 。
根据Levene测试结果,组样本不符合同方差性的假设,即它们具有不均等的方差。我们可以通过使用Welch ANOVA测试来解决这个问题,与经典ANOVA相比,它更能够容忍违反这个假设的情况 。
执行Welch ANOVA测试后,我们检查结果数据框以评估结果。
首先, 值表示样本均值之间的变异性高于样本内变异性。部分Eta-squared值表示效应大小,因此帮助我们计算统计功率。
此外, 值几乎等于零,使其特别低于显着性水平( )。因此,我们可以拒绝零假设并接受备择假设,即小麦品种的平均紧凑度值不同。
拒绝ANOVA的零假设后,建议执行事后测试以确定哪些组差异具有统计学意义。我们选择了Games-Howell测试,因为它对方差的异质性具有鲁棒性,因此是Welch ANOVA 的补充。
显然,Canadian和其他品种之间的差异具有统计学意义。相比之下,Kama和Rosa品种的平均紧凑度值没有显着差异。

5. 结论

在本文中,我使用Pingouin库和种子数据集介绍了统计假设检验的基本概念。希望能帮助大家了解这些概念。
代码下载:https://github.com/derevirn/hypothesis-test

参考文献

[1] Biau, David Jean, Brigitte M. Jolles, and Raphaël Porcher. “P value and the theory of hypothesis testing: an explanation for new researchers.” Clinical Orthopaedics and Related Research® 468.3 (2010): 885–892.
[2] Lenhard, Johannes. “Models and statistical inference: The controversy between Fisher and Neyman–Pearson.” The British journal for the philosophy of science (2020).
[3] Vallat, Raphael. “Pingouin: statistics in Python.” J. Open Source Softw. 3.31 (2018): 1026.
[4] Charytanowicz, Małgorzata, et al. “Complete gradient clustering algorithm for features analysis of x-ray images.” Information technologies in biomedicine (2010): 15–24.
[5] Scheffe, Henry. The analysis of variance. Vol. 72. John Wiley & Sons, 1999.
[6] Shapiro, Samuel Sanford, and Martin B. Wilk. “An analysis of variance test for normality (complete samples).” Biometrika 52.3/4 (1965): 591–611.
[7] Schmider, Emanuel, et al. “Is it really robust? Reinvestigating the robustness of ANOVA against violations of the normal distribution assumption.” Methodology: European Journal of Research Methods for the Behavioral and Social Sciences 6.4 (2010): 147.
[8] Levene, Howard. “Robust tests for equality of variances.” Contributions to probability and statistics. Essays in honor of Harold Hotelling (1961): 279–292.
[9] Liu, Hangcheng. “Comparing Welch ANOVA, a Kruskal-Wallis test, and traditional ANOVA in case of heterogeneity of variance.” (2015).
[10] Games, Paul A., and John F. Howell. “Pairwise multiple comparison procedures with unequal n’s and/or variances: a Monte Carlo study.” Journal of Educational Statistics 1.2 (1976): 113–125.


- EOF -


加主页君微信,不仅数据分析和开发技能+1

主页君日常还会在个人微信分享数据分析和开发相关工具资源精选技术文章,不定期分享一些有意思的活动岗位内推以及如何用技术做业余项目

加个微信,打开一扇窗



推荐阅读  点击标题可跳转

1、“12306” 是如何支撑百万 QPS 的?

2、使用 XGBoost 算法改进 ETF 交易策略,获得33.99% 的年化收益率

3、又一强大的异常检测开源工具库:PyOD


看完本文有收获?请转发分享给更多人

推荐关注「数据分析与开发」,提升数据技能

点赞和在看就是最大的支持❤️


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/155937
 
1109 次点击