python进行t检验示例

2023-05-16

 

t检验主要是针对正态总体均值的假设检验,即检验样本的均值与某个值的差异,或者两个样本的均值是否有差异等。其不需要事先知道总体的方差,并且在少量样本情况下也可以进行检验。python进行t检验使用scipy包的stats模块

一、单样本t检验

示例:已知某工厂生产的一种点火器平均寿命大于1200次为合格产品,现在质检部随机抽取了20个点火器进行试验,结果寿命分别为(单位:次):
809, 1250, 689, 1541, 995, 1234, 1024, 920, 777, 2510, 2301, 540, 850, 895, 1024, 1000, 1025, 863, 875, 1105

单样本t检验用stats.ttest_1samp函数,如下:

from scipy import stats
import numpy as np

#单样本t检验
sample=[809, 1250, 689, 1541, 995, 1234, 1024, 920, 777, 2510,
        2301, 540, 850, 895, 1024, 1000, 1025, 863, 875, 1105]
sample = np.asarray(sample)
m = np.mean(sample)
print("样本均值:",m)
#单样本检验用stats.ttest_1samp
r = stats.ttest_1samp(sample, 1200, axis=0)
print("statistic:", r.__getattribute__("statistic"))
print("pvalue:", r.__getattribute__("pvalue"))

结果:

样本均值: 1111.35
statistic: -0.8043067483882222
pvalue: 0.4311691484589055

在这里统计量statistic<0,说明样本均值小于指定均值1200,实际上是1111.35。但我们并不能因为1111.35<1200而去认定点火器平均寿命低于1200。我们应看pvalue: 0.4311691484589055,这里说明在这个样本下,我们有0.4311691484589055>0.05的概率认为产品的寿命均值为1200。同样我们不能拒绝产品的寿命均值>1200。也就是我们接受产品是合格的。

 

二、两个独立样本t检验

示例:现市场上有2种蓄电池,为研究哪种蓄电池比较好,分别抽取两种蓄电池若干件,测试其续航时间,结果如下(单位:h):

A型蓄电池5.5     5.6     6.3     4.6     5.3     5.0     6.2     5.8     5.1     5.2     5.9
B型蓄电池3.8     4.3     4.2     4.0     4.9     4.5     5.2     4.8     4.5     3.9     3.7     4.6

根据抽样结果分析两种蓄电池续航是否有显著差异(alpha=0.1)。

独立2个样本t检验用stats.ttest_ind函数,如下:

from scipy import stats
import numpy as np

#独立2个样本t检验
sample1=[5.5, 5.6, 6.3, 4.6, 5.3, 5.0, 6.2, 5.8, 5.1, 5.2, 5.9]
sample2=[3.8, 4.3, 4.2, 4.0, 4.9, 4.5, 5.2, 4.8, 4.5, 3.9, 3.7, 4.6]
sample1 = np.asarray(sample1)
sample2 = np.asarray(sample2)
r = stats.ttest_ind(sample1, sample2)
print("statistic:", r.__getattribute__("statistic"))
print("pvalue:", r.__getattribute__("pvalue"))

结果:

statistic: 5.484377451921326
pvalue: 1.9279192737974777e-05

由statistic=5.484377451921326大于0可以知道在样本统计上A型的均值比B型的大,事实上样本A均值为5.5,样本B的均值为4.37。另外pvalue=1.9279192737974777e-05远小于0.1,由此我们拒绝A的均值与B的均值相等,也就是说A型蓄电池的续航均值明显比B型蓄电池好,即A型蓄电池比B型蓄电池要好。

这里我们假设两个总体有方差齐性,当不确定两总体方差是否相等时,可以先利用levene检验,检验两总体是否具有方差齐性。

r = stats.levene(sample1,sample2)
print(r)

结果为LeveneResult(statistic=0.09936227113762626, pvalue=0.7557072345826116),pvalue>0.05说明具有方差齐性,假如不具有方差齐性,进行t检验时需要加上参数equal_val并设定为False。如下:

stats.ttest_ind(sample1, sample2, equal_var=False)

 

三、成对样本t检验

成对样本t检验,是针对成对的数据做的检验,比如比较两种测量方法的差异,每对数据是针对同一个对象的测量。

示例:现有2种血压计,为研究其测量性能是否有显著差异,分别使用这两种血压计测量15个人的血压值,结果如下:

受测人编号123456789101112131415
血压计A68851237488128631151109399758968140
血压计B60881327095115741151218696719670143

这里数据都是成对的,使用stats.ttest_rel进行成对数据的t检验。

from scipy import stats
import numpy as np

#成对样本t检验
sample1=[68, 85, 123, 74, 88, 128, 63, 115, 110, 93, 99, 75, 89, 68, 140]
sample2=[60, 88, 132, 70, 95, 115, 74, 115, 121, 86, 96, 71, 96, 70, 143]
sample1 = np.asarray(sample1)
sample2 = np.asarray(sample2)
r = stats.ttest_rel(sample1,sample2)
print("statistic:", r.__getattribute__("statistic"))
print("pvalue:", r.__getattribute__("pvalue"))

结果:

statistic: -0.492910604649229
pvalue: 0.6297167086230713

从结果上看,statistic<0,说明在样本均值上看血压计A的测量结果比血压计B略低。但pvalue=0.6297167086230713远大于0.05,我们并不能拒绝两种血压计测量均值相等,即我们认为2种血压计的测量性能并没有显著差异。

 

 

author:蓝何忠

email:lanhezhong@163.com

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python进行t检验示例 的相关文章

  • Django 中的 Rpy2 错误 - 未为“”类型的对象定义转换“py2rpy”

    我以前从未使用过 R 并且正在尝试使用 rpy2 从 python 调用 R 函数 它可以在独立的 python 终端上运行 但不能在 Django 中运行 但rpy2似乎无法将python字符串转换为r对象 我正在使用同事提供的自定义库
  • 如何使用 conda 在一行中安装多个包?

    我需要使用 conda 安装以下多个软件包 我不确定 conda forge 是什么 有些使用 conda forge 有些不使用它 是否可以将它们安装成一行而不需要一一安装 谢谢 conda install c conda forge d
  • pandas Wide_to_long 后缀参数

    我对在 pandas 中使用 Wide to long 时的参数有疑问 有一个参数叫suffix我不明白 在文档中它说 后缀 str 默认 d 捕获所需后缀的正则表达式 d 捕获数字后缀 没有数字的后缀可以用否定字符类 D 指定 您还可以进
  • Django 不会以奇怪的错误“AttributeError: 'module' object has no attribute 'getargspec'”启动

    我对 Django 的内部结构有点缺乏经验 所以我现在完全陷入困境 它昨天起作用了 但我不记得我改变过任何重要的东西 当我转身时DEBUG True任何恰好位于列表中第一个的模块上都有堆栈跟踪 Traceback most recent c
  • 按多个键分组并对字典列表的值进行汇总/平均值

    在Python中按多个键进行分组并对字典列表进行汇总 平均值的最Pythonic方法是什么 假设我有一个字典列表 如下所示 input dept 001 sku foo transId uniqueId1 qty 100 dept 001
  • 在 iPython/pandas 中绘制多条线会生成多个图

    我试图了解 matplotlib 的状态机模型 但在尝试在单个图上绘制多条线时遇到错误 据我了解 以下代码应该生成包含两行的单个图 import pandas as pd import pandas io data as web aapl
  • 在谷歌云上训练神经网络时出现“无法获取路径的文件系统”错误

    我正在使用 Google Cloud 在云上训练神经网络 如下例所示 https cloud google com blog big data 2016 12 how to classify images with tensorflow u
  • Python 3在for循环中更改字典键的值不起作用

    我的 python 3 代码没有按预期工作 def addFunc x y print x y def subABC x y z print x y z def doublePower base exp print 2 base exp d
  • Pandas groupby apply 执行缓慢

    我正在开发一个涉及大量数据的程序 我正在使用 python pandas 模块来查找数据中的错误 这通常工作得非常快 然而 我当前编写的这段代码似乎比应有的速度慢得多 我正在寻找一种方法来加快速度 为了让你们正确测试它 我上传了一段相当大的
  • PyArmor - 打包为一个可执行文件

    当我执行此命令时 您好 使用 PyArmor pyarmor pack main py 它将它打包到一个名为的文件夹中dist里面包含我的 exe 以及许多 Python 扩展文件 据我所知 PyArmor 使用 PyInstaller 来
  • Jupyter Notebook 中的深色模式绘图 - Python

    我正在使用 Jupyter Notebook 目前正在使用 JupyterThemes 的深色日光主题 我注意到我的绘图不是处于黑暗模式 并且文本仍然是黑色并且在日光照射的背景上无法读取 JupyterThemes 的自述文件建议在 ipy
  • 如何使用 django-pyodbc (ubuntu 16.04) 配置数据库设置 Django-MSSQL?

    我是 Django 新手 目前正在尝试使用另一个数据库来保存我的模型 即MS SQL 我的数据库部署在docker容器中 903876e64b67 microsoft mssql server linux bin sh c opt mssq
  • 如何分析组合的 python 和 c 代码

    我有一个由多个 python 脚本组成的应用程序 其中一些脚本正在调用 C 代码 该应用程序现在的运行速度比以前慢得多 因此我想对其进行分析以查看问题所在 是否有工具 软件包或只是一种分析此类应用程序的方法 有一个工具可以将 python
  • 线性同余生成器 - 如何选择种子和统计检验

    我需要做一个线性同余生成器 它将成功通过所选的统计测试 我的问题是 如何正确选择发电机的数字以及 我应该选择哪些统计检验 我想 均匀性的卡方频率测试 每代收集10 000个号码的方法 将 0 1 细分为10个相等的细分 柯尔莫哥洛夫 斯米尔
  • Python 导入非常慢 - Anaconda python 2.7

    我的 python import 语句变得非常慢 我使用 Anaconda 包在本地运行 python 2 7 导入模块后 我编写的代码运行得非常快 似乎只是导入需要很长时间 例如 我使用以下代码运行了一个 tester py 文件 imp
  • 如何使用 os.chdir 转到减去最后一步的路径?

    例如 一个方法传递了一个路径作为参数 这个路径可能是 C a b c d 如果我想使用 os chdir 更改为 C a b 怎么办 c 没有最后一个文件夹 os chdir 可以接受 命令吗 os chdir 可以采取 作为论点 是的 然
  • 如何在Tensorflow中保存估计器以供以后使用?

    我按照教程 TF Layers 指南 构建卷积神经网络 以下是代码 https github com tensorflow tensorflow blob r1 1 tensorflow examples tutorials layers
  • Streamlabs API 405 响应代码

    我正在尝试使用Streamlabs API https dev streamlabs com Streamlabs API 使用 Oauth2 来创建应用程序 因此 首先我将使用我的应用程序的用户发送到一个授权链接 其中包含我的应用程序的客
  • 如何使用 Python 3 正确显示倒计时日期

    我正在尝试获取将显示的倒计时 基本上就像一个世界末日时钟哈哈 有人可以帮忙吗 import os import sys import time import datetime def timer endTime datetime datet
  • 使用 SERVER_NAME 时出现 Flask 404

    在我的 Flask 配置中 我将 SERVER NAME 设置为 app example com 之类的域 我这样做是因为我需要使用url for with external网址 如果未设置 SERVER NAME Flask 会认为服务器

随机推荐

  • spring security 自定义多种方式登录授权(普通用户、管理员、第三方登录)

    1 自定义token xff0c 继承 AbstractAuthenticationToken 目的 xff1a 主要用于包装区别过滤条件 第2步用到 span class token keyword public span span cl
  • STM32F30X USART串口初始化顺序

    void InitUart void GPIO InitTypeDef GPIO InitStructure if 1 USART USED 61 61 USART1 RCC AHBPeriphClockCmd RCC AHBPeriph
  • java学习记录(一)

    前言 因为在大创项目中要用到一点点java 所以想利用这段时间 快速的入门一下简单的Java 试图在项目中不拖后腿 ps 小白自学 如有错误还请指正 偶然间看到编程的学习要点 在此记录一下 明确学习目标 锁定一门语言版本 努力学习 认真研读
  • C++ 之HTTP post请求

    一 建立会话 xff08 Session xff09 对象 xff1a CInternetSession mysession 二 连接到Http服务器 xff1a CHttpConnection myconn 61 mysession Ge
  • C语言Printf函数深入解析

    Printf这个函数让大家又爱又恨 xff0c 第一次接触c语言编程 xff0c 基本都是调用printf打印 Hellow World xff01 但当真正深入使用编程后 xff0c 才发现printf并不是一个简单的函数 尤其是从事嵌入
  • SQL笔试经典50题及答案解析

    转 SQL笔试经典50题及答案解析 建表语句 create table Student sid varchar 10 sname varchar 10 sage datetime ssex nvarchar 10 insert into S
  • redis高可用集群搭建

    redis高可用集群搭建 恶魔的复活的博客 CSDN博客 redis集群搭建
  • 80027efe

    微软更新了签名算法 xff0c 从 2019 年开始 xff0c 开始弃用SHA 1 xff0c 逐步改为SHA 2加密算法 导致windows upate更新报80072EFE错误 此方法同样适用于Windows 7系统 建议手动下载安装
  • ts 动态加载import()

    import 函数 简介 import命令会被 JavaScript 引擎静态分析 xff0c 先于模块内的其他模块执行 xff08 叫做 连接 更合适 xff09 所以 xff0c 下面的代码会报错 报错if x 61 61 61 2 i
  • Ubuntu 文件文件夹查看权限和设置权限

    ubuntu下查看权限的命令为 xff1a ls l filename ls ld folder ubuntu下设置权限的命令为 xff1a 一共有10位数 其中 xff1a 最前面那个 代表的是类型 中间那三个 rw 代表的是所有者 xf
  • mysql不能启动:Unit mysql.service failed to load: No such file or directory的解决办法

    Failed to issue method call Unit MySQL service failed to load No such file or directory的解决办法 作者 xff1a chszs xff0c 转载需注明
  • round()函数的用法

    python中round 函数的用法 round a b a 需要进行四舍五入的数字 b 指定的位数 xff0c 按此位数进行四舍五入 注解 如果 b 大于 0 xff0c 则四舍五入到指定的小数位 如果 b 等于 0 xff0c 则四舍五
  • linux mysql 查看默认端口号和修改端口号

    如何查看mysql 默认端口号和修改端口号 2015 03 19 17 42 18 1 登录mysql root 64 test mysql u root p Enter password 2 使用命令show global variabl
  • netty 二进制简单通信

    环境 xff1a netty版本4 0 36Final jdk7 服务端 xff1a 1 App java package com mind core import com mind core net websocket server Ne
  • js 字符串转换成数字的三种方法, 取float型小数点后两位数的方法

    在js读取文本框或者其它表单数据的时候获得的值是字符串类型的 例如两个文本框a和b 如果获得a的value值为11 b的value值为9 那么a value要小于b value 因为他们都是字符串形式的 在网上找了一下js字符串转数字的文章
  • 二次贝塞尔曲线长度

    二次贝塞尔曲线通常以如下方式构建 xff0c 给定二维平面上的固定点P0 P1 P2 xff0c 用B t 表示该条曲线 用一个动画来演示 xff0c 可以更加清楚的表明这条曲线的构建过程 如果t变量本身线形变化的话 xff0c 这条贝塞尔
  • 损坏的主控文件表,CHKDSK被终止.如何恢复数据

    这种情况是分区结构出现异常 引起的分区错误 单击右键属性看到的是RAW格式 移动硬盘的话 xff0c 很大程度是因为强拔之类的操作 xff0c 也可能是坏道 病毒 xff0c 硬盘本身质量问题引起的 因为系统读取移动硬盘信息困难 xff0c
  • Microsoft SQL Server 2008 R2 官方简体中文正式版下载(附激活序列号密钥)

    微软官方发布的Microsoft SQL Server 2008 R2 简体中文完整版 基于SQL Server 2008提供可靠高效的智能数据平台构建而成 xff0c SQL Server 2008 R2 提供了大量新改进 xff0c 可
  • 不重装系统将系统移动到固态硬盘,并修改为C盘

    如今很多人升级电脑都会考虑换块固态硬盘 xff0c 如果重装系统 xff0c 又要重新安装一系列的软件 xff0c 拷贝一系列的数据 这里教大家怎样直接用固态硬盘代替C盘 xff0c 并且不会影响数据和软件 1 首先是在原电脑上加装新固态硬
  • python进行t检验示例

    t检验主要是针对正态总体均值的假设检验 xff0c 即检验样本的均值与某个值的差异 xff0c 或者两个样本的均值是否有差异等 其不需要事先知道总体的方差 xff0c 并且在少量样本情况下也可以进行检验 python进行t检验使用scipy