python实现假设检验-t检验

一. 什么是t检验

设总体 X ∼ N ( μ , δ 2 ) X\sim N(\mu,\delta^2) XN(μ,δ2),其中 μ , δ 2 \mu, \delta^2 μ,δ2未知,统计量 t = X ‾ − μ S / n t = \frac{\overline{X} - \mu}{S/\sqrt{n}} t=S/n Xμ服从标准正太分布,可以利用该统计量对总体均值 μ \mu μ进行假设检验,这种检验方法称为 t t t检验法。

适用条件:总体服从正态分布且方差未知;样本容量较小,一般小于30。

二. 常见t检验的实现
1. 单样本t检验
原假设 H 0 H_0 H0备则假设 H 1 H_1 H1拒绝域
μ ≤ μ 0 \mu \leq \mu_0 μμ0 μ > μ 0 \mu > \mu_0 μ>μ0 t > t α ( n − 1 ) t > t_\alpha(n - 1) t>tα(n1)
μ ≥ μ 0 \mu \geq \mu_0 μμ0 μ < μ 0 \mu < \mu_0 μ<μ0 t < − t α ( n − 1 ) t < -t_\alpha(n - 1) t<tα(n1)
μ = μ 0 \mu = \mu_0 μ=μ0 μ ≠ μ 0 \mu \neq \mu_0 μ=μ0 ∣ t ∣ > t α / 2 ( n − 1 ) |t| > t_{\alpha/2}(n - 1) t>tα/2(n1)

某元件的寿命 X X X服从参数为 N ( μ , δ 2 ) N(\mu, \delta^2) N(μ,δ2)的正太分布, μ , δ \mu,\delta μ,δ未知,现抽取10个元件测得元件的寿命的平均值为240小时,标准差为50,问是否有理由认为元件总体的平均寿命大于225小时?

因为总体的方差 δ \delta δ未知,且样本量小于10,因此需要使用 t t t检验,设置信水平 α = 0.05 \alpha = 0.05 α=0.05
H 0 : u ≥ 225 H 1 : u < 225 H_0: u \geq 225\space H_1: u < 225 H0:u225 H1:u<225

代码实现:

from scipy.stats import t
import mathif __name__ == '__main__':n = 10sample_mean = 240sample_std = 50alpha = 0.05t_statistic = (sample_mean - 225) / (sample_std / math.sqrt(n))t_left = t(n - 1).ppf(alpha)print("t_left:", round(t_left, 3), "t_statistic:", round(t_statistic, 3))pval = t(n - 1).cdf(t_statistic)if t_statistic < t_left:print("reject null hypothesis, pval is", round(pval, 3))else:print("not reject null hypothesis, pval is", round(pval, 3))

运行结果:

t_left: -1.833 t_statistic: 0.949
not reject null hypothesis, pval is 0.816
2. 配对t检验

配对t检验一般用于比较同一研究对象处理前与处理后的效果比较,又称为重复测量设计下均值差异的检验。比如医学上药物效果的检验。

原假设 H 0 H_0 H0备则假设 H 1 H_1 H1拒绝域
μ D ≤ 0 \mu_D \leq 0 μD0 μ D > 0 \mu_D > 0 μD>0 t > t α ( n − 1 ) t > t_\alpha(n - 1) t>tα(n1)
μ D ≥ 0 \mu_D \geq 0 μD0 μ D < 0 \mu_D < 0 μD<0 t < − t α ( n − 1 ) t < -t_\alpha(n - 1) t<tα(n1)
μ D = 0 \mu_D = 0 μD=0 μ D ≠ 0 \mu_D \neq 0 μD=0 ∣ t ∣ > t α / 2 ( n − 1 ) |t| > t_{\alpha/2}(n - 1) t>tα/2(n1)

某研究者为了研究新型降压药的效果,现收集了8名高血压患者服药前和服药后的血压数据。

高血压患者12345678
服药前137135132151132150142145
服药后124129135144123142142134
差值136-3798011

现在想知道该药物对高血压患者是否有明显效果?

要想验证药物是否有效,只需要验证服药前与服药后差异值的均值与0的关系,如果差值小于等于0则说明药物对高血压没有效果,反之则证明有效。设置信水平 α = 0.05 \alpha = 0.05 α=0.05
μ D : u ≤ 0 H 1 : μ D > 0 \mu_D: u \leq 0\space H_1: \mu_D > 0 μD:u0 H1:μD>0

代码实现:

from scipy.stats import t
import math
import numpy as npif __name__ == '__main__':diff = [13, 6, -3, 7, 9, 8, 0, 11]diff_mean = np.mean(diff)diff_std = np.std(diff, ddof=1)diff_length = len(diff)alpha = 0.05t_statistic = diff_mean / (diff_std / math.sqrt(diff_length))t_right = t(diff_length - 1).ppf(1 - alpha)print("t_right:", round(t_right, 3))print("t_statistic:", round(t_statistic, 3))pval = t(diff_length - 1).sf(t_statistic)if t_statistic > t_right:print("reject null hypothesis, pval is", round(pval, 3))else:print("not reject null hypothesis, pval is", round(pval, 3))

运行结果:

t_right: 1.895
t_statistic: 3.341
reject null hypothesis, pval is 0.006

拒绝原假设,因此说明该药物对降压有明显效果。

3. 两样本t检验

X 1 , X 2 . . . X n 1 X_1,X_2...X_{n1} X1,X2...Xn1是来自正太总体 N ( μ 1 , δ 1 2 ) N(\mu_1, \delta_1^2) N(μ1,δ12)的样本, Y 1 , Y 2 . . . Y n 2 Y_1,Y_2...Y_{n2} Y1,Y2...Yn2是来自正太总体 N ( μ 2 , δ 2 2 ) N(\mu_2, \delta_2^2) N(μ2,δ22)的样本,且两样本独立, μ 1 , μ 2 , δ 1 2 , δ 2 2 \mu_1,\mu_2,\delta_1^2,\delta_2^2 μ1,μ2,δ12,δ22均未知。统计量 ( X ‾ − Y ‾ ) − δ S w 1 n 1 + 1 n 2 \frac{(\overline{X} - \overline{Y}) - \delta}{S_w\sqrt{\frac{1}{n_1} + \frac{1}{n_2}}} Swn11+n21 (XY)δ服从 t ( n 1 + n 2 − 2 ) t(n_1 + n_2 - 2) t(n1+n22)的分布。

其中 X ‾ , Y ‾ \overline{X},\overline{Y} X,Y分别为两样本的均值, n 1 , n 2 n_1,n_2 n1,n2为两样本的容量, δ = μ 1 − μ 2 \delta = \mu_1 - \mu_2 δ=μ1μ2, S w 2 = ( n 1 − 1 ) S 1 2 + ( n 2 − 1 ) S 2 2 n 1 + n 2 − 2 S_w^2=\frac{(n_1 - 1)S_1^2 + (n_2 - 1)S_2^2}{n_1 + n_2 - 2} Sw2=n1+n22(n11)S12+(n21)S22, S w = S w 2 S_w = \sqrt{S_w^2} Sw=Sw2

两样本t检验主要用来对两个总体的均值之间的关系做假设检验。

原假设 H 0 H_0 H0备则假设 H 1 H_1 H1拒绝域
μ 1 − μ 2 ≤ δ \mu_1 - \mu_2 \leq \delta μ1μ2δ μ 1 − μ 2 > δ \mu_1 - \mu_2 > \delta μ1μ2>δ t > t α ( n 1 + n 2 − 2 ) t > t_\alpha(n_1 + n_2- 2) t>tα(n1+n22)
μ 1 − μ 2 ≥ δ \mu_1 - \mu_2\geq \delta μ1μ2δ μ 1 − μ 2 < δ \mu_1 - \mu_2 < \delta μ1μ2<δ t < t α ( n 1 + n 2 − 2 ) t < t_\alpha(n_1 + n_2- 2) t<tα(n1+n22)
μ 1 − μ 2 = δ \mu_1 - \mu_2 = \delta μ1μ2=δ μ 1 − μ 2 ≠ δ \mu_1 - \mu_2 \neq \delta μ1μ2=δ ∣ t ∣ > t α / 2 ( n 1 + n 2 − 2 ) |t| > t_{\alpha/2}(n_1 + n_2- 2) t>tα/2(n1+n22)

一家香水的制造商共有两条生产线,现在对两条生产线进行抽样,A生产线抽取18个样本,样本均值为80,样本标准差为5,B生产线抽取20个样本,样本均值为76,样本标准差为4。问这两条生产线所生产的香水的平均分量是否相同?

α = 0.05 \alpha = 0.05 α=0.05的水平下做出如下假设:
H 0 : μ A − μ B = 0 H 1 : μ A − μ B ≠ 0 H_0:\mu_A - \mu_B = 0\space\space H_1:\mu_A - \mu_B \neq 0 H0:μAμB=0  H1:μAμB=0

代码实现:

from scipy.stats import t
import mathif __name__ == '__main__':n1 = 18n2 = 20sample_mean1 = 80sample_mean2 = 76sample_std1 = 5sample_std2 = 4alpha = 0.05sw = math.sqrt(((n1 - 1) * sample_std1**2 + (n2 - 1) * sample_std2**2) / (n1 + n2 - 2))t_statistic = (sample_mean1 - sample_mean2) / (sw * math.sqrt(1 / n1 + 1/ n2))t_left = t(n1 + n2 - 2).ppf(alpha/2)t_right = t(n1 + n2 - 2).ppf(1 - alpha/2)print("t_left:", round(t_left, 3), "t_right:", round(t_right, 3))print("t_statistic:", round(t_statistic, 3))if t_statistic >= t_right:pval = t(n1 + n2 -2).sf(t_statistic) * 2else:pval = 2 * t(n1 + n2 - 2)if t_statistic < t_left or t_statistic > t_right:print("reject null hypothesis, pval is", round(pval, 3))else:print("not reject null hypothesis, pval is", round(pval, 3))

运行结果:

t_left: -2.028 t_right: 2.028
t_statistic: 2.736
reject null hypothesis, pval is 0.01

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

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

相关文章

表达式求值(后缀表达式)(数据结构)

一、概念 算术表达式是由操作数&#xff08;运算数&#xff09;、运算符&#xff08;操作符&#xff09;、和界线符&#xff08;括号&#xff09;三部分组成&#xff0c;在计算机中进行算术表达式的计算是通过堆栈来实现的。 二后缀表达式的逻辑和实现方式&#xff08;逆波兰…

电商平台数据有哪些?如何进行电商平台数据分析?(内附模板及工具)

在电商日常的贩卖工作中会产生大量的数据&#xff0c;如果你还不知道如何利用这些宝贵的数据指导未来的销售策略、增长销售额的话&#xff0c;就和我一起看下去吧&#xff01;电商数据采集API接口包含哪些数据&#xff1f; 电商平台数据可以大致分为以下几个组成部分&#xff…

C#:直接调用 OpenFileDialog

C# 直接调用 OpenFileDialog&#xff0c;打开文件夹&#xff0c;选择视频文件&#xff0c;并播放。 编写 openvideo.cs 如下 // open a video file using System; using System.Diagnostics; using System.Windows.Forms;public class OpenVideoFile {[STAThread]public st…

Java中的封装

package day32; ​ public class Person {private String name;private int age; ​public String getName() {return name;} ​public void setName(String name) {this.name name;} ​public int getAge() {return age;} ​public void setAge(int age) {if (age>120 || …

蚓链数字化营销系统与数字资产的关系

蚓链数字化营销系统是一种利用数字技术来实现营销目标的系统。它集成了多种数字营销工具和渠道&#xff0c;以收集、分析和利用客户数据&#xff0c;优化营销活动&#xff0c;并提高营销效果。 数字资产是一种新型的资产类别&#xff0c;它们以电子数据的形式存在&#xff0c;可…

笔试狂刷--Day3

大家好,我是LvZi,今天带来笔试狂刷--Day3 一.牛牛的快递 1.题目链接:牛牛的快递 2.分析: 简单的模拟 3.代码实现: import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Scanner i…

计算机经典黑皮书分享

计算机经典黑皮书是一套计算机科学丛书&#xff0c;其中包含了多本计算机科学领域的经典教材 提供了全面的知识体系&#xff1a;黑皮书涵盖了计算机科学的多个领域&#xff0c;如计算机组成与设计、操作系统、数据库、人工智能等。它们深入浅出地介绍了相关领域的基本概念、原…

HTTP/HTTPS详解

HTTP/HTTPS详解 1. HTTP1.1 HTTP基础知识1.2 HTTP建立和断开连接 2. HTTPS 1. HTTP 1.1 HTTP基础知识 HTTP是互联网上应用最为广泛的一种网络协议&#xff0c;是一个客户端和服务器端请求和应答的标准&#xff08;TCP&#xff09;&#xff0c;用 于从WWW服务器传输超文本到本…

C++学习————第八天(C/C++内存管理)

目录 1、1.C/C内存分布 2、 C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free 3、C内存管理方式 3.1 new/delete操作内置类型 3.2 new和delete操作自定义类型 4.operator new与operator delete函数 5. new和delete的实现原理 5.1 内置类型 5.2 自定…

【QT学习】8.qt事件处理机制,事件过滤器,自定义事件

1.qt事件处理机制 事件处理&#xff1a; 当用户移动鼠标的时候 &#xff0c;创建一个 鼠标移动事件对象 然后把这个对象放到 事件队列里面去&#xff0c;事件管理器 从队列中 取出事件&#xff0c;然后 调用其对应的事件处理函数。 多态机制&#xff1a; &#x…

【xhs爬虫软件】把小红书评论comment接口封装成GUI采集工具!

用Python开发爬虫采集软件&#xff0c;可自动抓取小红书评论数据&#xff0c;并且含二级评论。 小红书的评论接口URL是&#xff1a; https://edith.xiaohongshu.com/api/sns/web/v2/comment/page 开发者模式分析过程&#xff1a; 进而封装成GUI界面软件&#xff0c;如下&…

17.基础乐理-调式、自然大调式(C大调、D大调。。。)

调式&#xff1a; 若干个音&#xff0c;按照某种规则排列起来&#xff0c;就是调式&#xff0c;调式是一个非常大&#xff0c;非常抽象的概念&#xff0c;调式这两个字是一个统称&#xff0c;当明确了 若干个音 到底有几个音&#xff0c;某种规则到底是什么规则之后&#xff0c…

【精】Devops实战学习CI/CD落地方案#CI篇#

目录 先有个大概了解 基本概念 CI/CD Devops 阿里云效 devops产品 K8s jenkins docker git maven 知行合一&#xff0c;上手操作 实操记录 安装VMware 安装并配置虚拟机 安装并配置docker docker安装 修改镜像源&#xff08;关键且易出错&#xff09; CentOS…

Spring Security 入门篇(一)-- 简介

引言 Spring Security 官方文档 https://spring.io/projects/spring-security Spring Security 中文文档 &#xff1a; https://springdoc.cn/spring-security/ Spring Cloud 中文文档 https://www.springcloud.cc/spring-security.html#overall-architecture 一、简介 1. 什…

poll实现echo服务器的并发

poll实现echo服务器的并发 代码实现 #include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <stdlib.h> #include <arpa/inet.h> #include <sys/time.h> #include <unistd.h> #…

@CrossOrigin的使用

CrossOrigin的使用 1.使用场景2.用法3.示例3.1 标注在方法上3.2 标注在类上 3.属性配置 1.使用场景 前后端分离应用&#xff1a;当前端应用和后端服务部署在不同的域或端口上时&#xff0c;前端应用尝试向后端服务发起请求时&#xff0c;可能会遇到同源策略的限制。这时&#…

python开发应该具备哪些能力

Python开发能力涵盖了多个方面&#xff0c;这些能力不仅涉及Python语言本身&#xff0c;还包括与Python开发相关的技术栈、工具和方法论。以下是一些关键的Python开发能力&#xff1a; Python语言基础&#xff1a; 熟练掌握Python的语法和核心特性&#xff0c;如变量、数据类型…

常用命令合集

设置永久清华源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simpleDocker dockerfile FROM nvidia/cuda:11.8.0-devel-ubuntu20.04RUN rm -rf /var/lib/apt/lists/* RUN apt-get clean RUN apt update RUN apt upgrade -yRUN apt install vim -yRU…

【JAVA】实现只有一个窗口弹出的底层逻辑——单身模式

目录 背景说明 代码实现 手写笔记 背景说明 有的时候&#xff0c;当你点击一个选项时会弹出来多个窗口&#xff0c;而有的时候只会弹出一个。 实际上&#xff0c;弹出多个窗口就是创建了多个相同的对象&#xff0c;而只弹出一个就是我们今天即将分享的单身模式——一个类只产生…

【Python】使用Python计算简单数值积分

题外话&#xff0c;Python语言命名的来源&#xff1a;&#xff08;见下图&#xff09;Monty Python巨蟒剧团 1、积分题目&#xff08;3&#xff09; 2、解析解答 3、Python计算代码 import math import scipy.integrate as integrate# 积分区间 # x_min 0.0 # 1 # x_min …