【统计学精要】:使用 Python 实现的统计检验— 1/10

一、介绍

        欢迎来到“掌握 Python 统计测试:综合指南”,它将介绍本手册中您需要熟悉使用 Python 的所有基本统计测试和分析方法。本文将为您提供统计测试及其应用的全面介绍,无论您是新手还是经验丰富的数据科学家。

        使用来自现实世界的实际示例和 Python 代码片段来帮助您理解这些想法,我们将涵盖从假设测试和作为其中一部分进行的测试的所有内容。所以让我们开始吧!

二、Statistics

统计学研究的重点是收集,组织,分析,解释和呈现数据。在将统计应用于科学、工业或社会问题时,通常从统计总体或要研究的统计模型开始。

三、数学中的统计类型

统计数据主要分为两类:

  1. 描述统计学
  2. 推论统计

3.1 描述统计学

        使用提供的观测结果以这种统计形式汇总数据。汇总是使用平均值或标准差等指标的总体样本的表示形式。
使用表、图形和汇总统计量,描述性统计量是一种排列、描绘和描述数据集合的方法。考虑一个城市使用互联网或电视的人数。

        描述性统计也分为四个不同的类别:

  1. 频率测量
  2. 色散测量
  3. 集中趋势的衡量标准
  4. 位置测量

        频率测量显示给定数据发生的频率。离差度量包括范围、方差和标准差。它显示了数据是如何传播的。数据的平均值、中位数和众数是主要趋势。百分位和四分位数等级由位置度量描述。

3.2 推论统计

描述性统计量是使用这种类型的统计量来解释的。换句话说,在收集、检查和总结数据之后,我们使用这些统计数据来解释数据的重要性。或者,换句话说,它用于从易受随机误差(如观测误差、抽样方差等)影响的数据中得出推论。

在推论统计的帮助下,我们可以使用从样本中收集的数据来推断有关人口的结论。它使我们能够提出超出手头事实或数据范围的主张。使用虚构的研究创建估计,作为说明。

四、数据科学中的统计测试

        统计检验用于假设检验。 它们可用于确定预测变量和结果变量是否具有统计显著性关系。应估计两组或多组之间的差异。如果数据呈正态分布,则使用参数检验。

统计检验分为两大类:

  1. 参数
  2. 非参数

        要假设或检查的假设:

        一、观察的独立性: 单独的观察值(每个变量条目)彼此无关(例如,对单个患者重复相同的测试会产生非独立的测量值,即重复测量值)。

        二、数据正态性:数据服从正态分布。只有定量数据才需要此假设。(有关更多详细信息,另请参阅此处)

        三. 方差的同质性:被比较的每个组都有相似的方差(即分数围绕平均值的分布或“散布”)。如果一组的变异明显大于其他组,则检验检测差异的“功效”将降低。

        或者,如果您的数据不符合观察独立性的前提,则可以采用考虑这种情况的检验(即重复测量检验)。

        相反,如果您的数据不满足正态性或方差齐性假设,则可以执行非参数统计检验,这样您就可以在没有这两个假设的情况下进行比较。

在 Python 中选择统计测试的指南

图例.2 — 统计检验选择指南

以下类型的测试用代码解释:

  1. Z — 测试
  2. T — 测试
  3. 方差分析测试
  4. 卡方检验
  5. 相关性测试

五、Z 测试

Z 检验是一种统计检验,用于在总体标准差已知时将样本均值与总体均值进行比较。 简单来说,

  1. 它是一种统计检验,用于确定当方差已知且样本数量较大时,两个总体均值是否不同。
  2. 它适用于 z 统计量服从正态分布的假设检验。
  3. Z 统计量或 Z 分数是表示 Z 检验结果的数字。
统计中的 Z 检验
图例.3 — 统计中的 Z 检验

        为了理解 Z 检验,让我们看一个真实世界的例子。假设一家鞋业公司声称他们的鞋类的典型寿命是 500 天。我们收集了50双鞋的样本来验证这一断言,我们发现平均寿命为490天,标准差为25天。我们现在可以运行 Z 测试以查看样本是否支持公司的说法。

        何时使用 Z 检验:

  • 样本数量应大于 30。否则,我们应该使用 t 检验。
  • 样本应从总体中随机抽取。
  • 应该知道总体的标准差。
  • 从总体中抽取的样本应彼此独立。
  • 数据应呈正态分布,但对于大样本量,假定数据具有正态分布。

        执行 Z 检验的步骤:

  • 首先,确定零假设和替代假设。
  • 确定显著性水平 (∝)。
  • 使用 在 z 检验中查找 z 的临界值。
  • 计算 z 检验统计量。下面是用于计算 z 检验统计量的公式。
图片.4 — Z 分数公式

        如果 p 值低于阈值(表示小于),则可以推断输入变量和目标变量之间存在统计显著性关系。

        否则,您可以推断预测变量和结果变量之间没有统计显著性关系。

5.1 Python 中的一个示例 Z 测试

        假设某个人群中的智商呈正态分布,平均值为 μ = 100,标准差为 σ = 15。

        一位研究人员想知道一种新药是否会影响智商水平(是或否[分类]),因此他招募了20名患者进行尝试并记录他们的智商水平。

Python 中的一个示例 Z 测试
图 5 — 一个样本 Z 测试

以下代码演示如何在 Python 中执行单样本 z 检验,以确定新药是否会导致智商水平的显着差异:

from statsmodels.stats.weightstats import ztest as ztest
"""
H0 : New Drug not Affects the IQ
H1 : New Drug Does Affects the IQ
"""#enter IQ levels for 20 patients
data = [88, 92, 94, 94, 96, 97, 97, 97, 99, 99,105, 109, 109, 109, 110, 112, 112, 113, 114, 115]#perform one sample z-test
ztest(data, value=100)

        一个样本 z 检验的检验统计量为 1.5976,对应的 p 值为 0.1101。

        由于此 p 值不小于 .05,因此我们没有足够的证据来否定原假设。换句话说,新药不会显着影响智商水平。

5.2 Python 中的两个示例 Z 测试

        假设已知两个不同城市中个人的智商水平以已知的标准差呈正态分布。

        研究人员从每个城市选择20人的基本随机样本,并记录他们的智商水平,以确定城市A和B中人们的平均智商水平是否彼此不同。

统计中的 Z 检验
图 6 — 两个样本 Z 测试

        以下代码演示如何在 Python 中执行双样本 z 检验,以确定两个城市之间的平均 IQ 水平是否不同:


from statsmodels.stats.weightstats import ztest as ztest"""
H0 : Mean is not Different
H1 : Mean is Different
"""#enter IQ levels for 20 individuals from each city
cityA = [82, 84, 85, 89, 91, 91, 92, 94, 99, 99,105, 109, 109, 109, 110, 112, 112, 113, 114, 114]cityB = [90, 91, 91, 91, 95, 95, 99, 99, 108, 109,109, 114, 115, 116, 117, 117, 128, 129, 130, 133]#perform two sample z-test
ztest(cityA, cityB, value=0) 

        两个样本 z 检验的检验统计量为 -1.9953,对应的 p 值为 0.0460。

        由于此 p 值小于 .05,因此我们有足够的证据来否定原假设。换句话说,两个城市的平均智商水平存在显着差异。

六、T 检验

        T 检验统计检验用于确定两组均值之间是否存在显著差异。相对于两组均值之间的变异,它估计分组内的方差。当样本量较小且总体标准差未知时,此检验特别有用。

图片.7 — T 检验
  1. T 检验是一种参数化推论统计方法,用于比较两个不同组之间的均值(双样本 t 检验)或与特定值(单样本 t 检验)。
  2. 在 t 检验中,检验统计量遵循原假设下的 t 分布(连续概率分布的类型)。
  3. t 检验是专门为小样本量数据 (n 30) 创建的,而 z 检验需要更高的样本量(t 和 z 分布与较大的样本量相似,例如 n=30)。t 检验也适用于样本量非常小 (n 5) 的数据。对于样本数量有限的数据集,t 检验会产生更保守的结果。
  4. T 检验有三种主要类型:一个样本 t 检验、双样本 t 检验(非配对或独立)和配对 t 检验。
  5. 单样本 t 检验将样本均值与假设值进行比较,而双样本 t 检验(也称为独立或未配对 t 检验)比较两个独立组的均值。在配对 t 检验中比较两个因变量之间的差异。

        一个样本 t 检验

  • 一个样本 t 检验(单样本 t 检验)用于将样本均值(总体中的随机样本)与特定值(总体的假设或已知均值)进行比较。
  • 例如,一个球的直径为 5 厘米,我们要检查从生产线上随机抽取的样本(例如 50 个球)中球的平均直径是否与已知尺寸不同。

        假设

  • 因变量应具有近似正态分布(夏皮罗-威尔克斯检验)
  • 观测值彼此独立

        假设

  • 原假设:样本均值等于假设或已知总体均值
  • 备择假设:样本均值不等于假设或已知总体均值(双尾或双侧)
  • 备择假设:样本均值大于或小于假设或已知总体均值(单尾或单侧)。
T 检验公式
图例.8 - T检验公式

from scipy import stats as st
from bioinfokit.analys import get_data
# load dataset as pandas dataframe
df = get_data('t_one_samp').data
df.head(2)
# output
#size
#0  5.739987
#1  5.254042# t test using scipy
a =  df['size'].to_numpy()
# use parameter "alternative" for two-sided or one-sided test
st.ttest_1samp(a=a, popmean=5)
# Using only Bioinfokit
from bioinfokit.analys import stat
res = stat()
res.ttest(df=df,test_type=1, res='size',mu=5)
print(res.summary)

        从一个样本 t 检验获得的 p 值不显著 (p > 0.05),因此,我们得出结论,随机样本中球的平均直径等于 5 cm。

6.1 两个样本 t 检验

        双样本(未配对或独立)t 检验通过比较两个独立组的均值是否相等或统计上不同来评估它们。在双样本 t 检验中,通常计算来自两组的样本均值,并为从中选择两组的总体均值(未知均值)形成结论。

        例如,我们有两种不同的植物基因型(基因型A和基因型B),我们想看看基因型A的产量是否与基因型B有很大不同。

        假设

  • 原假设:两个组均值相等
  • 备择假设:两个组均值不同(双尾或双侧)
  • 备择假设:一个组的平均值大于或小于另一个组(单尾或单侧)

        假设

  • 两组中的观测值具有近似正态分布(夏皮罗-威尔克斯检验)
  • 方差的同质性(治疗组之间的方差相等)(莱文或巴特利特检验)
  • 两组从同一人群中彼此独立地抽样。

        注意:当样本数量较大 (n ≥ 30) 且两组中样本数相等 (n1 = n2) 时,两个样本 t 检验对方差的正态性和同质性假设相对稳健。

        如果样本数量较小且不服从正态分布,则应使用非参数曼-惠特尼 U 检验。

        两个样本(独立)t检验公式 -

图 9 — 双样本 T 检验

        如果方差相等,则双样本 t 检验和韦尔奇检验(不等方差 t 检验)的性能相同(就类型 I 错误率而言)并且具有相似的功效。

        计算 Python 中的两个样本 t 检验:

# Perform two sample t-test using SciPy
# install bioinfokit as !pip install bioinfokit
!pip install bioinfokit
from scipy import stats as st
from bioinfokit.analys import get_data
# load dataset as pandas dataframe
df = get_data('t_ind_samp').data
df.head(2)a = df.loc[df['Genotype'] == 'A', 'yield'].to_numpy()
b = df.loc[df['Genotype'] == 'B', 'yield'].to_numpy()
st.ttest_ind(a=a, b=b, equal_var=True)# Perform two sample t-test using bioinfokit
from bioinfokit.analys import stat
res = stat()
# for unequal variance t-test (Welch's t-test) set evar=False
res.ttest(df=df, xfac="Genotype", res="yield", test_type=2, evar=False)
print(res.summary)

        注意:尽管当两组的样本数量不相同时可以进行 t 检验,但每组中具有相等的样本数量以提高 t 功效会更有效。测试的

        从t检验获得的p值是显著的(p <0.05),因此,我们得出结论,基因型A的产量与基因型B显着不同。

6.2 配对 t 检验

  • 配对t检验用于比较同一受试者的一对因变量之间的差异
  • 例如,我们有植物品种A,想比较施用一些肥料前后A的产量。
  • 注意:配对 t 检验是对两个因变量之间差异的单样本 t 检验

        假设

  • 原假设:两个因变量之间没有差异(差值 = 0)
  • 备择假设:两个因变量(双尾或双侧)之间存在差异
  • 备择假设:大于或小于零的两个响应变量之间的差异(单尾或单侧)

        假设

  • 两个因变量之间的差异遵循近似正态分布(夏皮罗-威尔克斯检验)
  • 自变量应具有一对因变量
  • 两个因变量之间的差异不应具有异常值
  • 观测值彼此独立地采样

统计学中的配对 t 检验

图例.10 — 统计中的配对 t 检验

# install bioinfokit as !pip install bioinfokit
from bioinfokit.analys import get_data, stat
# load dataset as pandas dataframe
# the dataset should not have missing (NaN) values. If it has, it will omitted
df = get_data('t_pair').data
df.head(2)res = stat()
res.ttest(df=df, res=['AF', 'BF'], test_type=3)
print(res.summary)

        t检验得到的p值显著(p<0.05),因此,我们得出结论,施肥显著提高了植物品种A的产量。

        注意:如果您有部分配对的数据,则可以对所有未配对的观测值执行配对 t 检验,或者通过将两个因变量视为两个单独的样本来使用独立 t 检验。然而,这两种临时办法都不合适,因为它们不能满足基本条件,并可能导致对方差的偏斜估计和信息丢失。

  • 如果效应量较大且数据遵循 t 检验假设,则 t 检验可以应用于极小样本数量(n = 2 至 5)。请记住,较大的样本量优于较小的样本量。
  • 对于配对 t 检验,建议具有较高的对内相关性 (r > 0.8),以获得小样本量数据的高统计功效 (>80%)。
  • 当样本数量较大 (n ≥ 30) 时,t 检验对方差的正态性和同质性假设相对稳健。

        在下一篇博客中,我将讨论卡方检验、方差分析和相关性检验

七、结语

        通过使用 Python 深入学习 T 检验和 Z 检验,您可以掌握数据分析并开发可靠的结果。Z 检验用于评估有关总体均值的假设,而 T 检验用于发现两组之间是否存在显著差异。凭借对这些统计测试的经验和工作掌握,您将能够处理具有挑战性的问题并为您的公司提供有见地的建议。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/24769.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS 开发基础(五)对用户名做点啥

一、实现用户名检验 条件渲染 、生命周期 1.规定用户名长度 2.限定使用的数字及字母&#xff08;涉及正则表达&#xff09; // 导出方式直接从文件夹 import MyInput from "../common/commons/myInput" Entry Component /* 组件可以基于struct实现&#xff0c;组件…

驱动开发(中断)

头文件&#xff1a; #ifndef __LED_H__ #define __LED_H__#define PHY_LED1_MODER 0X50006000 #define PHY_LED1_ODR 0X50006014 #define PHY_LED1_RCC 0X50000A28#define PHY_LED2_MODER 0X50007000 #define PHY_LED2_ODR 0X50007014 #define PHY_LED2_RCC 0X50000A28#def…

在word的文本框内使用Endnote引用文献,如何保证引文编号按照上下文排序

问题 如下图所示&#xff0c;我在word中插入了一个文本框&#xff08;为了插图&#xff09;&#xff0c;然后文本框内有引用&#xff0c;结果endnote自动将文本框内的引用优先排序&#xff0c;变成文献[1]了&#xff0c;而事实上应该是[31]。请问如何能让文本框内的排序也自动…

maven install命令:将包安装在本地仓库,供本地的其它工程或者模块依赖

说明 有时候&#xff0c;自己本地的maven工程依赖于本地的其它工程&#xff0c;或者manven工程中的一个模块依赖于另外的模块&#xff0c;可以执行maven的install命令&#xff0c;将被依赖的包安装在maven本地仓库。 示例 一个工程包含几个模块&#xff0c;模块之间存在依赖…

第一个maven项目(IDEA生成)

第一个maven项目&#xff08;IDEA生成&#xff09; 步骤1 配置Project SDK 步骤2 配置maven File->Settings搜索maven

风辞远的科技茶屋:来自未来的信号枪

很久之前&#xff0c;有位朋友问我&#xff0c;现在科技资讯这么发达了&#xff0c;你们还写啊写做什么呢&#xff1f; 我是这么看的。最终能够凝结为资讯的那个新闻点&#xff0c;其实是一系列事情最终得出的结果&#xff0c;而这个结果又会带来更多新的结果。其中这些“得出”…

kagNet:对常识推理的知识感知图网络 2023 AAAI 8.4+8.5

这里写目录标题 摘要介绍概述问题陈述推理流程 模式图基础概念识别模式图构造概念网通过寻找路径来匹配子图基于KG嵌入的路径修剪 知识感知图网络图卷积网络&#xff08;GCN&#xff09;关系路径编码分层注意机制 实验数据集和实验步骤比较方法KAGNET是实施细节性能比较和分析与…

python GUI nicegui初识一(登录界面创建)

最近尝试了python的nicegui库&#xff0c;虽然可能也有一些不足&#xff0c;但个人感觉对于想要开发不过对ui设计感到很麻烦的人来说是很友好的了&#xff0c;毕竟nicegui可以利用TailwindCSS和Quasar进行ui开发&#xff0c;并且也支持定制自己的css样式。 这里记录一下自己利…

【Spring框架】Spring事务

目录 Spring中事务的实现编程式事务声明式事务Transactional 作⽤范围Transactional 参数说明注意事项Transactional ⼯作原理 MySQL 事务隔离级别Spring 事务隔离级别事务传播机制 Spring中事务的实现 Spring中事务操作分为两类&#xff1a; 1.编程式事务 2.声明式事务 编程…

Abaqus 中最常用的子程序有哪些 硕迪科技

在ABAQUS中&#xff0c;用户定义的子程序是一种重要的构件&#xff0c;可以将其插入到Abaqus分析中以增强该软件的功能和灵活性。这些子程序允许用户在分析过程中添加自定义材料模型、边界条件、初始化、加载等特定操作&#xff0c;以便更精准地模拟分析中的现象和现象。ABAQUS…

小白电脑装机(自用)

几个月前买了配件想自己装电脑&#xff0c;结果最后无法成功点亮&#xff0c;出现的问题是主板上的DebugLED黄灯常亮&#xff0c;即DRAM灯亮。对于微星主板的Debug灯&#xff0c;其含义这篇博文中有说明。 根据另一篇博文&#xff0c;有两种可能。 我这边曾将内存条和主板一块…

mongodb-win32-x86_64-2008plus-ssl-3.6.23-signed.msi

Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。C:\Users\Administrator>cd C:\MongoDB\Server\3.6\binC:\MongoDB\Server\3.6\bin> C:\MongoDB\Server\3.6\bin> C:\MongoDB\Server\3.6\bin>mongod --dbpath C:\Mongo…

c语言每日一练(2)

前言&#xff1a; 每日一练系列&#xff0c;每一期都包含5道选择题&#xff0c;2道编程题&#xff0c;博主会尽可能详细地进行讲解&#xff0c;令初学者也能听的清晰。每日一练系列会持续更新&#xff0c;暑假时三天之内必有一更&#xff0c;到了开学之后&#xff0c;将看学业情…

Nginx启动报错- Failed to start The nginx HTTP and reverse proxy server

根据日志&#xff0c;仍然出现 “bind() to 0.0.0.0:8888 failed (13: Permission denied)” 错误。这意味着 Nginx 仍然无法绑定到 8888 端口&#xff0c;即使使用 root 权限。 请执行以下操作来进一步排查问题&#xff1a; 确保没有其他进程占用 8888 端口&#xff1a;使用以…

python#django数据库一对一/一对多/多对多

一对一OneToOneField 用户和用户信息 搭建 # 一对一 class TestUser(models.Model): usernamemodels.CharField(max_length32) password models.CharField(max_length32) class TestInfo(models.Model): mick_namemodels.CharField(max_length32) usermode…

企业计算机服务器中了locked勒索病毒怎么办,如何预防勒索病毒攻击

计算机服务器是企业的关键信息基础设备&#xff0c;随着计算机技术的不断发展&#xff0c;企业的计算机服务器也成为了众多勒索者的攻击目标&#xff0c;勒索病毒成为当下计算机服务器的主要攻击目标。近期&#xff0c;我们收到很多企业的求助&#xff0c;企业的服务器被locked…

leaflet-uniapp 缩放地图的同时 显示当前缩放层级

记录实现过程&#xff1a; 需求为移动端用户在使用地图时&#xff0c;缩放地图的同时&#xff0c;可以获知地图此时缩放的级别。 效果图如下&#xff1a;此时缩放地图级别为13 map.on() 有对应的诸多行为 查看官网即可&#xff0c;这里根据需要为--zoomstart zoom zoomend 代…

Crowd-Robot Interaction 论文阅读

论文信息 题目&#xff1a;Crowd-Robot Interaction:Crowd-aware Robot Navigation with Attention-based Deep Reinforcement Learning 作者&#xff1a;Changan Chen, Y uejiang Liu 代码地址&#xff1a;https://github.com/vita-epfl/CrowdNav 来源&#xff1a;arXiv 时间…

【Linux】网络套接字知识点补足

目录 1 地址转换函数 1.1 字符串转in_addr的函数: 1.2 in_addr转字符串的函数: 1.3 关于inet_ntoa 2 TCP协议通讯流程 1 地址转换函数 本节只介绍基于IPv4的socket网络编程,sockaddr_in中的成员struct in_addr sin_addr表示32位 的IP 地址但是我们通常用点分十进制的字符串…

无涯教程-Perl - bind函数

描述 此功能将网络地址绑定到由SOCKET标识的文件句柄。地址应该是用于打开的Socket的适当类型的打包地址。 语法 以下是此函数的简单语法- bind SOCKET, ADDRESS 返回值 如果失败,此函数返回0,如果成功,则返回1。 Perl 中的 bind函数 - 无涯教程网无涯教程网提供描述此功能…