【统计学精要】:使用 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.hqwc.cn/news/55055.html

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

相关文章

装修小程序,开启装修公司智能化服务的新时代

随着数字化时代的来临&#xff0c;装修小程序成为提升服务质量和效率的关键工具。装修小程序旨在为装修公司提供数字化赋能、提高客户满意度的智慧装修平台。通过装修小程序&#xff0c;装修公司能够与客户进行在线沟通、展示设计方案、提高服务满意度等操作。 装修小程序的好处…

snap xxx has “install-snap“ change in progress

error description * 系重复安装&#xff0c;进程冲突 solution 展示snap的改变 然后sudo snap abort 22即可终止该进程 之后重新运行install command&#xff5e;&#xff5e; PS: ubuntu有时候加载不出来&#xff0c;执行resolvectl flush-caches&#xff0c;清除dns缓存…

uniapp发布插件显示components/xxx文件没找到,插件格式不正确

uniapp发布插件显示components/xxx文件没找到&#xff0c;插件格式不正确 将插件文件这样一起选中&#xff0c;然后右键压缩成zip文件&#xff0c;而不是外层文件压缩

K8S 部署 RocketMQ

文章目录 添加模板部署本地访问 集群使用 kubesphere 作为工具 添加模板 添加 helm 模板 helm repo add rocketmq-repo https://helm-charts.itboon.top/rocketmq helm repo update rocketmq-repo编写 value.yaml 文件 配置主从节点的个数&#xff0c;例子为单节点 broker:…

机器人状态估计:robot_localization 功能包使用方法

机器人状态估计&#xff1a;robot_localization 功能包基本使用 前言功能包简介基本使用数据输入与数据输出坐标系设置性能参数调试 前言 移动机器人的状态估计需要用到很多传感器&#xff0c;因为对单一的传感器来讲&#xff0c;都存在各自的优缺点&#xff0c;所以需要一种多…

如何将 dubbo filter 拦截器原理运用到日志拦截器中?

业务背景 我们希望可以在使用日志拦截器时&#xff0c;定义属于自己的拦截器方法。 实现的方式有很多种&#xff0c;我们分别来看一下。 拓展阅读 java 注解结合 spring aop 实现自动输出日志 java 注解结合 spring aop 实现日志traceId唯一标识 java 注解结合 spring ao…

GO学习之 函数(Function)

GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 文章目录 GO系列前言一、什么是…

[OGeek2019 Final]OVM——详细入门VM pwn

是一个入门级别的题目&#xff0c;但是花了非常久的时间整理 刚拿到题目进行反编译的时候是非常懵逼的&#xff0c;因为我确实不知道这是干啥的 查了下资料 原理大概如下 VMpwn 程序通常都是模拟一套虚拟机&#xff0c;对用户输入的opcode进行解析&#xff0c;模拟程序的执行&…

React Dva项目 Model中编写与调用异步函数

上文 React Dva项目中模仿网络请求数据方法 中&#xff0c;我们用项目方法模拟了后端请求的数据 那么 今天我们就在models中尝试去使用一下这种异步获取数据的方法 之前 我们在文章 React Dva项目创建Model,并演示数据管理与函数调用 中已经接触过Model了 也可以理解为 它就是 …

【FIFO IP系列】FIFO IP参数配置与使用示例

Vivado IP核提供了强大的FIFO生成器&#xff0c;可以通过图形化配置快速生成FIFO IP核。 本文将详细介绍如何在Vivado中配置一个FIFO IP核,以及如何调用这个FIFO IP核。 一、FIFO IP核的配置 1、新建FIFO IP 在Vivado的IP Catalog中找到FIFO Generator IP核&#xff0c;双击…

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

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

QT学习之QLabel

设置文本 mylbl->setText("Hello QT! Hello QT!"); 根据文本动态调整大小 mylbl->adjustSize(); 位置居中展示&#xff1a;利用横向布局和spacer控件 效果如下&#xff1a;