数据挖掘与统计分析——T检验,正态性检验和一致性检验——代码复现

T检验是一种统计测试,用于确定两个样本组的均值是否有统计学上的显著差异。以下是对T检验的详细介绍:

定义:

T检验是一种参数检验,它的前提是数据近似于正态分布。它通过计算T统计量,并将其与特定分布(T分布)进行比较,来判断两个样本组的均值之间是否存在显著差异。

主要类型:

单样本T检验:比较一个样本的均值与一个已知或假设的均值。

独立样本T检验(又称为两独立样本T检验):比较两个独立样本的均值。例如,比较两组人接受不同治疗后的效果。

配对样本T检验(又称为相关样本T检验):比较同一组人或实体在两个不同时间点或条件下的均值。例如,前后测试中的学生成绩。

前提假设:

数据近似于正态分布。 如果是独立样本T检验,两个样本的方差应该相似(方差齐性)。
数据应为连续数据。
在配对样本T检验中,差异应服从正态分布。

计算:

T统计量的计算公式根据其检验类型略有不同。但基本思路是:差异均值除以差异的标准误差。这给出了样本均值差异相对于期望的随机差异的大小。

解释结果:

结果中会得到一个T值和一个p值。p值告诉我们观察到的数据与零假设(即没有差异)之间的显著性差异。
如果p值小于预定的显著性水平(通常为0.05),则我们拒绝零假设,认为两组之间存在显著差异。
T值的正负号可以告诉我们哪个组的均值较高。

案例

背景:假设我们想要研究一个新的数学教学方法是否对学生的成绩有积极的影响。为此,我们随机选择了两组学生,一组使用传统的教学方法(控制组),另一组使用新的教学方法(实验组)。课程结束后,两组学生都进行了测试。

数据:
控制组(传统方法)的分数:85, 88, 75, 66, 90, 78, 77, 79, 80
实验组(新方法)的分数:92, 95, 90, 85, 97, 91, 88, 90, 93

步骤1:首先,我们需要计算两组的均值。
控制组均值 = 78
实验组均值 = 91.1

步骤2:计算T统计量。这需要更复杂的计算,涉及到两组的方差、样本大小等。但为了简化,我们假设计算后得到T值为3.5。

步骤3:查找T分布表或使用统计软件来确定p值。假设我们得到p值为0.003。

解释:

T值为3.5意味着实验组和控制组之间的均值差异是其标准误差的3.5倍。这是一个相对较大的值,表明两组之间存在显著差异。
p值为0.003远小于常见的显著性水平0.05,这意味着我们观察到的数据在统计学上是显著的。

结论:
基于T检验的结果,我们有足够的证据拒绝零假设(即两种教学方法的效果相同),并认为新的教学方法对学生的数学成绩有积极的影响。

需要注意的是,这个结论只基于我们的样本数据。真实的教育研究会涉及更多的控制变量、更大的样本大小和更复杂的统计方法来确保结论的准确性和可靠性。

上面的只是一个简单的案例,现在我们通过代码来探索实现一个复杂的案例

假设你是一个药物研究者,正在研究一种新的药物对血压的影响。为此,你进行了一个随机、双盲、对照的实验。

你随机选择了50名高血压患者,其中25人接受新药物治疗,另外25人接受安慰剂。实验前后都要测量患者的血压。

任务:

你想要知道新药物是否对血压有显著的降压效果。

import numpy as np
from scipy.stats import ttest_rel# 假设的数据
np.random.seed(42)  # 使得结果可以复现# 生成模拟数据
baseline_bp = np.random.normal(150, 20, 25)  # 基线血压
after_treatment_bp = baseline_bp - np.random.normal(10, 5, 25)  # 治疗后血压# 执行配对样本T检验
t_stat, p_value = ttest_rel(baseline_bp, after_treatment_bp)print("T-statistic:", t_stat)
print("P-value:", p_value)if p_value < 0.05:print("新药物对血压有显著的降压效果。")
else:print("新药物对血压没有显著的降压效果。")

我们使用scipy.stats中的ttest_rel方法,它是专门用于配对样本T检验的。
首先,我们生成了一些模拟数据来表示患者的基线血压和治疗后血压。 然后,我们使用T检验来比较这两组数据。 根据p值,我们可以得出结论。

但是,在实际中,大多数都是多个变量之间对比实验
当涉及到多个变量时,单一的T检验可能不再适用或不足以得出结论。此时,我们需要采用更为复杂的统计方法。以下是几种常见的方法,以及如何处理多个变量的问题:

多重T检验:

当我们对多个组进行比较时,可能会执行多个T检验。但这会增加犯第一类错误(即错误地拒绝了真实的零假设)的风险。
解决办法:Bonferroni 校正是一种简单的方法,将α值(如0.05)除以比较的数量来调整显著性水平。

对于多重T检验,Bonferroni校正是一种控制家族误差率(Familywise Error Rate,FWER)的方法。其基本思想是,当我们进行多次假设检验时,通过降低每次检验的显著性标准(α值),以控制总体上犯第一类错误的风险。

以下是如何实施Bonferroni校正的步骤:

确定原始的α值。通常情况下,α值选择为0.05。
确定你要进行的比较次数,记作m。
调整α值:新的α值为原始α值除以比较次数。即,新的α值 = 原始α / m。
进行每次T检验。
比较每次检验得到的p值与调整后的α值。如果某次检验的p值小于调整后的α值,那么该检验结果被认为是显著的。

示例:

假设你要对5组数据进行两两之间的T检验,那么你总共需要进行10次比较(即5*(5-1)/2 = 10)。如果原始的α值是0.05,那么经过Bonferroni校正后的α值为0.05 / 10 = 0.005。这意味着每次T检验的p值都必须小于0.005,才能被认为是显著的。

Python代码实现:

以下是一个简化的示例,使用Python的scipy.stats库进行多重T检验,并应用Bonferroni校正:

import numpy as np
from scipy.stats import ttest_ind# 假设的数据
np.random.seed(42)group1 = np.random.normal(50, 10, 30)
group2 = np.random.normal(52, 10, 30)
group3 = np.random.normal(55, 10, 30)
group4 = np.random.normal(53, 10, 30)
group5 = np.random.normal(50, 10, 30)groups = [group1, group2, group3, group4, group5]# 计算比较次数
m = len(groups) * (len(groups) - 1) // 2# Bonferroni校正后的α值
alpha_corrected = 0.05 / m# 两两进行T检验
for i in range(len(groups)):for j in range(i+1, len(groups)):t_stat, p_value = ttest_ind(groups[i], groups[j])print(f"Group {i+1} vs Group {j+1}: p-value = {p_value:.4f}")if p_value < alpha_corrected:print(f"显著差异 between Group {i+1} and Group {j+1}")

方差分析(ANOVA):

当我们想比较三个或更多组的均值时,可以使用一元ANOVA。
如果我们想要同时考虑两个或更多的自变量,可以使用多元ANOVA。
ANOVA的前提是数据应该服从正态分布,且各组的方差应相等(方差齐性)。
协方差分析(ANCOVA):

ANCOVA允许我们比较多个组的均值,同时控制一个或多个连续的协变量。
这可以帮助我们校正或消除某些变量的影响,从而更清晰地看到其他因子的效果。

  1. 基本原理:
    ANOVA分析的基本思想是将数据的总变异分为两部分:组间变异和组内变异。然后根据这两部分的变异来计算一个F统计量,并用其来决定不同组的均值是否相等。

组间变异:反映了不同组之间的差异。
组内变异:反映了同一组内部的差异。

  1. 假设:
    零假设(H0):所有组的均值都相等。
    备择假设(Ha):至少有两个组的均值不相等。
  2. 前提假设:
    数据服从正态分布。
    各组的方差相等,即方差齐性。
    观察值是独立的。
  3. 类型:
    一元ANOVA:当我们只有一个分类自变量时使用。
    多元ANOVA(MANOVA):当我们有两个或更多的分类自变量时使用。
  4. 结果解释:
    如果p值小于预定的显著性水平(通常为0.05),那么我们拒绝零假设,认为至少有两个组的均值不相等。
    F统计量的大小表示组间和组内差异的相对大小。较大的F值表示组间差异较大。
  5. 注意事项:
    如果ANOVA的结果显著,说明至少有两个组不同,但它不会告诉我们哪些组之间的差异是显著的。为了确定这一点,我们需要进行事后检验,例如Tukey-Kramer方法或Bonferroni校正。
    当数据不满足正态性或方差齐性的假设时,可能需要使用其他非参数方法,如Kruskal-Wallis H检验。
    ANOVA是多个组均值比较的强大工具,但使用时需要确保其前提假设得到满足,并在必要时采取适当的转换或选择替代方法。

当ANOVA的结果显著,意味着我们拒绝了零假设(即所有组的均值相等),但它不告诉我们哪些组之间的差异是显著的。为了确定具体哪些组之间存在显著差异,我们需要进行事后检验(也称为多重比较检验)。

以下是一些常用的事后检验方法:

  • Tukey-Kramer方法(Tukey’s Honest Significant Difference, Tukey’s HSD):

它比较所有组的两两组合。
适用于所有样本大小相等的情况。
它控制了家族误差率,使其保持在显著性水平α之下。

  • Bonferroni校正:

这是一个保守的方法,将α值除以比较的数量来调整显著性水平。
例如,如果你有5组数据(进行10次比较),并且α=0.05,则每次比较的显著性水平是0.005。

  • Scheffé’s Test:

这是一个非常保守的方法,可以用于任何组合的比较,包括两两比较和多个组的比较。
适用于不平衡设计,即各组的样本大小不等。

  • Dunnett’s Test:

当你要将所有其他组与一个特定的控制组进行比较时,Dunnett’s Test是很有用的。
它调整了显著性水平以控制多重比较的误差。

  • Newman-Keuls Test:

它进行所有可能的两两比较。
它的特点是步骤化的,即它首先考虑整体差异,然后再进行两两比较。
在Python中进行事后检验:
使用statsmodels库,我们可以进行Tukey-Kramer事后检验

import numpy as np
import statsmodels.api as sm
from statsmodels.stats.multicomp import pairwise_tukeyhsd# 示例数据
data = [83, 85, 84, 76, 88, 92, 95, 89, 90, 78, 83, 86]
groups = ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C']tukey_results = pairwise_tukeyhsd(data, groups, alpha=0.05)print(tukey_results)

这个示例会为’A’, ‘B’, 'C’三组提供两两比较的结果。如果某一对比较的p值小于0.05,那么这两组之间的差异被认为是显著的。

回归分析:

当我们对一个连续的因变量和一个或多个自变量(连续或分类)之间的关系感兴趣时,可以使用回归分析。
线性回归适用于一个连续的因变量和一个或多个连续的自变量。
逻辑回归用于分类的因变量。

混合效应模型:

当我们的数据具有嵌套结构或重复测量时(例如,多次测量同一人),可以使用混合效应模型。
这种模型可以处理固定效应(通常的回归系数)和随机效应(描述数据中的随机变异性)。

主成分分析(PCA)和因子分析:

当我们有大量相关的变量并想要减少维度时,可以使用PCA或因子分析。
这些方法可以帮助我们从多个变量中提取出几个关键组件或因子。
处理多个变量时,关键是选择适合数据结构、研究设计和研究问题的方法。这通常需要对统计方法有深入的理解,并根据数据的特性、分布和假设进行选择。

应用场景:

比如想确定两种不同的训练方法对

学生成绩是否有显著影响;或者是比较男性和女性在某项测试中的表现是否有显著差异等。
T检验是统计学中的基础内容,广泛应用于实验研究和数据分析中,帮助研究者确定观察到的效果是否不仅仅是偶然产生的。

在这里插入图片描述

正态性检验:

定义:正态性检验是用来判断一组数据是否近似于正态分布的统计方法。正态分布,也被称为高斯分布,是许多统计技巧和方法背后的关键假设,如t检验、ANOVA和线性回归等。

方法:

图形方法:使用QQ图(Quantile-Quantile Plot)或概率图来视觉判断数据是否遵循正态分布。

统计测试:

Shapiro-Wilk 测试:适用于小样本数据。
Kolmogorov-Smirnov 测试:可以用于任何连续分布,但对正态性检验不如Shapiro-Wilk 测试敏感。
Anderson-Darling 测试:与Kolmogorov-Smirnov类似,但更加权重尾部的差异。
应用场景:在进行如t检验、ANOVA等参数统计分析之前,通常会先进行正态性检验来验证数据的正态分布假设。

一致性检验:

定义:一致性检验是用来判断两个或多个数据集是否来自相同分布的统计方法。这不仅仅局限于正态分布,也可以是其他任何分布。

方法:

Kolmogorov-Smirnov 测试:这是一种非参数方法,用于比较两组独立数据的累积分布函数。
Chi-Square 适合性检验:这是一种检验观察到的频率分布与预期的分布是否有显著差异的方法。
Mann-Whitney U 测试或 Wilcoxon秩和检验:这是一种用于比较两个独立样本是否来自相同分布的非参数方法。
Kruskal-Wallis H 测试:是Mann-Whitney U 测试的扩展,用于三个或更多的独立样本。

应用场景:当你想知道两组或多组数据是否来自同一个总体分布时,可以使用一致性检验。例如,你可能想知道不同处理组的效果是否相同。

总之,这两种检验都是在数据分析中验证数据属性或模型假设的关键步骤,确保你在得出结论或使用特定统计方法时的准确性。

每文一语

每天积累一点

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

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

相关文章

PyTorch Lightning - LightningModule 训练逻辑 (training_step) 异常处理 try-except

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/133673820 在使用 LightningModule 框架训练模型时&#xff0c;因数据导致的训练错误&#xff0c;严重影响训练稳定性&#xff0c;因此需要使用 t…

华为OD机试 - 数组组成的最小数字(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#…

Spring5应用之事务处理

作者简介&#xff1a;☕️大家好&#xff0c;我是Aomsir&#xff0c;一个爱折腾的开发者&#xff01; 个人主页&#xff1a;Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏&#xff1a;Spring5应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言事务…

ant-design-vue 实现表格表头纵排列

结果如图&#xff1a; 区域&#xff0c;成功率&#xff0c;清单率为表头&#xff0c;右侧为动态的数据 废话不多说直接上代码&#xff1a; 1.先声明表格&#xff0c;使用框架自带a-table&#xff0c;核心点就在data和columns上 <div style"margin-bottom: 60px;"…

jvm--执行引擎

文章目录 1. 执行引擎的工作流程2. 解释器、JIT及时编译器3. 热点代码及探测技术4. HotSpotVM 中 JIT 分类 执行引擎属于 JVM 的下层&#xff0c;里面包括解释器、及时编译器、垃圾回收器 JVM 的主要任务是负责 装载字节码到其内部&#xff0c;但字节码并不能够直接运行在操作…

C之fopen/fclose/fread/fwrite/flseek

一、C中文件操作简介 c中的文件操作大致和linux的文件操作类似&#xff0c;但是毕竟是不同的API&#xff0c;所以会有些差异。部分差异会在下面的案例中体验 二、fopen open的参数有两个一个是文件名&#xff0c;一个是模式选择&#xff0c;不同open函数&#xff0c;open中的模…

Jmeter 分布式压测,你的系统能否承受高负载?

‍你可以使用 JMeter 来模拟高并发秒杀场景下的压力测试。这里有一个例子&#xff0c;它模拟了同时有 5000 个用户&#xff0c;循环 10 次的情况‍。 请求默认配置 token 配置 秒杀接口 ​结果分析 ​但是&#xff0c;实际企业中&#xff0c;这种压测方式根本不满足实际需求。下…

HSRP热备份路由器协议的解析和配置

HSRP的解析 个人简介 HSRP hot standby router protocol 热备份路由协议&#xff08;思科私有协议&#xff09; HSRP v1 version 1 HSRP v2 version 2 虚拟一个HSRP虚拟IP地址 192.168.1.1 开启HSRP的抢占功能 通过其他参数 人为调整谁是主 谁是从 &#xff01; 查…

firefox的主题文件位置在哪?记录以防遗忘

这篇文章写点轻松的 最近找到了一个自己喜欢的firefox主题,很想把主题的背景图片找到,所以找了下主题文件所在位置 我的firefox版本:版本: 118.0.1 (64 位)主题名称: Sora Kawai 我的位置在 C:\Users\mizuhokaga\AppData\Roaming\Mozilla\Firefox\Profiles\w0e4e24v.default…

写爬虫?前端er何必用python

前言 说起网络爬虫,很多人第一时间想到python,但爬虫并非只能用python实现,虽然网上大部分爬虫文章都在说python爬虫,但对于前端程序员来说,我觉得js才是最屌的(对于简单爬取任务来说,复杂的我暂时没碰到~),下面说说我的经验(是的,仅限本人经验),希望能给各位前…

Linux系统管理:虚拟机Centos Stream 9安装

目录 一、理论 1.Centos Stream 9 二、实验 1.虚拟机Centos Stream 9安装准备阶段 2.安装Centos Stream 9 3.进入系统 一、理论 1.Centos Stream 9 (1) 简介 CentOS Stream 是一种 Linux 操作系统。安装此操作系统的难题在于&#xff0c;在安装此系统之前&#xff0c…

光伏发电预测(GRU模型,Python代码)

运行效果&#xff1a;光伏发电预测&#xff08;GRU模型&#xff0c;Python代码&#xff09;_哔哩哔哩_bilibili 所有库的版本&#xff1a; 1.数据集&#xff08;连续10年不间断采集三个光伏电站的发电量及天气情况&#xff0c;每隔半个小时采集一次信息&#xff0c;因此&…

MPP 架构在 OLAP 数据库的运用

MPP 架构&#xff1a; MPP 架构的产品&#xff1a; Impala ClickHouse Druid Doris 很多 OLAP 引擎都采用了 MPP 架构 批处理系统 - 使用场景分钟级、小时级以上的任务&#xff0c;目前很多大型互联网公司都大规模运行这样的系统&#xff0c;稳定可靠&#xff0c;低成本。…

污水管网水位监测,管网水位监测仪守护城市污水管网运行

万宾科技&#xff1a;污水管网水位监测 近年来&#xff0c;城市化进程的加速使得污水管网建设愈发重要。然而&#xff0c;在管网运维中&#xff0c;水位监测一直以来都是一个令人头痛的难题。为了解决这一问题&#xff0c;万宾科技公司推出了管网水位监测仪EN200-D2&#xff0…

基于 ACK Fluid 的混合云优化数据访问(三):加速第三方存储的读访问,降本增效并行

作者&#xff1a;车漾 前文回顾&#xff1a; 本系列将介绍如何基于 ACK Fluid 支持和优化混合云的数据访问场景&#xff0c;相关文章请参考&#xff1a; 基于 ACK Fluid 的混合云优化数据访问&#xff08;一&#xff09;&#xff1a;场景与架构 基于 ACK Fluid 的混合云优化…

Java-Atomic原子操作类详解及源码分析,Java原子操作类进阶,LongAdder源码分析

文章目录 一、Java原子操作类概述1、什么是原子操作类2、为什么要用原子操作类3、CAS入门 二、基本类型原子类1、概述2、代码实例 三、数组类型原子类1、概述2、代码实例 四、引用类型原子类1、概述2、AtomicReference3、ABA问题与AtomicStampedReference4、一次性修改&#xf…

功率半导体器件静态参数测试都测哪些内容?

功率半导体器件如今已成为不可或缺的元件&#xff0c;在通信、电力电子等领域得到广泛应用。而对其性能参数的测试也是必不可少的&#xff0c;是对半导体性能、质量的保障。半导体测试参数包含静态测试参数和动态测试参数&#xff0c;本文将介绍半导体分立器件静态测试参数的相…

【网络安全 ---- 靶场搭建】凡诺企业网站管理系统靶场详细搭建过程(asp网站,练习Access数据库的 sql注入)

一&#xff0c;资源下载 百度网盘资源下载链接&#xff1a;百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百度网盘即可享受免费存储空间https://pan.baidu.com…

Android Studio Flutter真机调试错误

错误&#xff1a;Could not locate aapt. Please ensure you have the Android buildtools installed. No application found for TargetPlatform.android_arm64. Is your project missing an android/app/src/main/AndroidManifest.xml? Consider running "flutter crea…

京东运营数据分析:2023年8月京东饮料行业品牌销售排行榜

鲸参谋监测的京东平台8月份饮料市场销售数据已出炉&#xff01; 8月份&#xff0c;饮料市场整体销售下滑。根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;今年8月&#xff0c;京东平台饮料市场的总销量将近820万&#xff0c;环比下滑约8%&#xff0c;同比下滑约20%&am…