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 math

if __name__ == '__main__':
    n = 10
    sample_mean = 240
    sample_std = 50
    alpha = 0.05

    t_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 np

if __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.05

    t_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 math

if __name__ == '__main__':

    n1 = 18
    n2 = 20
    sample_mean1 = 80
    sample_mean2 = 76
    sample_std1 = 5
    sample_std2 = 4
    alpha = 0.05

    sw = 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) * 2
    else:
        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.mfbz.cn/a/571970.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用友政务财务系统 FileDownload 任意文件读取漏洞复现

0x01 产品简介 用友政务财务系统具有多项核心功能,旨在满足各类组织的财务管理需求。首先,它提供了财务核算功能,能够全面管理企业的总账、固定资产、现金、应付应收等模块,实时掌握企业的财务状况,并通过科目管理、凭证处理、报表分析等功能为决策提供有力支持。 0x02 …

【WEEK9】 【DAY3】JSR303数据校验及多环境切换【中文版】

2024.4.24 Wednesday 目录 4.JSR303数据校验及多环境切换4.1.JSR303数据校验&#xff08;了解即可&#xff09;4.1.1.修改Person.java4.1.2.修改pom.xml&#xff08;添加依赖&#xff09;4.1.3.运行Springboot02ConfigApplicationTests.java进行测试4.1.4.使用数据校验&#x…

JavaScript系列------2

1. JS 数据类型&#xff1a; 基本数据类型&#xff1a;number数字型,string字符串型,boolean布尔型,undefined未定义型,null空类型 引用数据类型&#xff1a;object对象 js 是弱数据类型的语言&#xff0c;只有当我们赋值了才知道是什么数据类型。 声明一个变量未赋值就是 un…

智慧校园:大数据助力校情分析

随着信息技术的快速发展&#xff0c;数据信息资源以井喷的姿态涌现。数据信息的大量涌现给人们带来丰富的数据信息资源&#xff0c;但面对海量的信息资源时&#xff0c;加大了人们对有效信息资源获取的难度&#xff0c;数据挖掘技术正是这一背景下的产物&#xff0c;基于数据挖…

【安卓13】解决带GMS编译报super分区空间不足错误

1、错误信息 2、解决方案 不同供应商修改分区大小的文件路径不一样&#xff0c;但是万变不离其宗&#xff0c;根据报错信息全局搜索关键词BOARD_SUPER_PARTITION_SIZE 这里以RK供应商和AML供应商修改为例&#xff1a; &#xff08;1&#xff09;RK改法&#xff1a; 根目录下…

2024深圳杯数学建模竞赛D题(东三省数学建模竞赛D题):建立非均质音板振动模型与参数识别模型

更新完整代码和成品完整论文 《2024深圳杯&东三省数学建模思路代码成品论文》↓↓↓&#xff08;浏览器打开&#xff09; https://www.yuque.com/u42168770/qv6z0d/zx70edxvbv7rheu7?singleDoc# 2024深圳杯数学建模竞赛D题&#xff08;东三省数学建模竞赛D题&#xff0…

构建高效智能的理赔业务系统:保险科技的未来

随着保险行业的发展和科技的不断进步&#xff0c;理赔业务作为保险服务的重要环节&#xff0c;也在不断演进和改进。传统的理赔流程可能存在效率低下、信息不透明等问题&#xff0c;而现代化的理赔业务系统则能够通过数字化、智能化等手段提升理赔服务的质量和效率&#xff0c;…

【机器学习】朴素贝叶斯解决实际问题

之前写过这样一道题&#xff1a; 现在换成使用朴素贝叶斯解决这个问题 首先先了解一下朴素贝叶斯 这是之前课本里的笔记记录&#xff1a; 【机器学习笔记】朴素贝叶斯&#xff08;从先验分布到后验分布&#xff09;-CSDN博客 简单的讲解一下这道题需要的知识点 朴素贝叶斯是…

【ensp】网关冗余vrrp实验

备战中级网络工程师 目录 vrrp&#xff08;虚拟路由冗余技术&#xff09; 为什么会出现vrrp&#xff1f; 两个角色 选举流程 基本原理 VRRP 的两个定时器 VRRP 的主备切换 主备切换的条件 VRRP 主备回切 认证方式 冗余路由器 冗余核心交换机 vrrp&#xff08;虚拟路…

【04-提升模型性能:集成学习与超参数优化】

文章目录 前言集成学习BaggingBoosting超参数优化随机搜索贝叶斯优化总结前言 在前几篇博文中,我们已经介绍了一些机器学习的基础知识、Scikit-learn的核心工具与技巧,以及如何评估模型性能。本篇博文将重点讲解两个可以显著提升机器学习模型性能的高级策略:集成学习和超参数…

Github 2024-04-25Go开源项目日报Top10

根据Github Trendings的统计,今日(2024-04-25统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10Vue项目1Go编程语言:构建简单、可靠和高效的软件 创建周期:3474 天开发语言:Go协议类型:BSD 3-Clause “New” or “Revised” Lic…

基于spark进行数据分析的心力衰竭可视化大屏项目

基于spark进行数据分析的心力衰竭可视化大屏项目 项目背景 在当今的医疗领域&#xff0c;数据驱动的决策变得日益重要。心力衰竭作为常见的心血管疾病&#xff0c;其临床数据的分析对于改善患者治疗结果至关重要。本文将介绍如何利用Apache Spark进行大规模心力衰竭临床数据的…

浅谈免杀下的持久化

文章目录 前记注册表计划任务COM劫持后记reference 前记 实战中持久化的手段常用的就是加服务、添改注册表、加计划任务、劫持等&#xff0c;这里探索c/c下的维权免杀 注册表 用户级 \HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run \HKEY_CURRENT_USER…

正则表达式.java

正则表达式的作用&#xff1a; ①可以校验字符串是否满足一定的规则&#xff0c;并用来校验数据格式的合法性&#x1f9f8; &#x1f9e9;[]:只能是括号里的字符 &#x1f9e9;[^]&#xff1a;除了括号里的字符 &#x1f9e9;[- -]:表示两段范围&#xff0c;满足其一即可 &a…

Linux系统内存持续飙高,如何排查

若一台服务器内存使用率持续处于高峰值&#xff0c;可能会导致响应慢&#xff08;如&#xff1a;ssh操作卡顿、用户访问失败或超时等&#xff09; 1.查看系统内存使用情况 free -m 2.查看哪些进程内存占用比较高 top 或htop 观察进程PID和命令确认是哪一个进程占用内存较高 …

Mogdb 5.0新特性:SQL PATCH绑定执行计划

前言 熟悉Oracle的dba都知道&#xff0c;生产系统出现性能问题时&#xff0c;往往是SQL走错了执行计划&#xff0c;紧急情况下&#xff0c;无法及时修改应用代码&#xff0c;dba可以采用多种方式针对于某类SQL进行执行计划绑定&#xff0c;比如SQL Profile、SPM、SQL Plan Base…

【prometheus】监控MySQL并实现可视化

目录 一、概述 1.1下载解压mysqld_exporter 1.2创建MySQL授权用户 1.3配置my.cnf 1.4启动mysqld_exporter 1.5prometheus配置修改 二、Grafana展示 【Prometheus】概念和工作原理介绍_prometheus工作原理 【Prometheus】k8s集群部署node-exporter 【prometheus】k8s集…

Python | Leetcode Python题解之第48题旋转图像

题目&#xff1a; 题解&#xff1a; class Solution:def rotate(self, matrix: List[List[int]]) -> None:n len(matrix)# 水平翻转for i in range(n // 2):for j in range(n):matrix[i][j], matrix[n - i - 1][j] matrix[n - i - 1][j], matrix[i][j]# 主对角线翻转for …

验证二叉搜索树 - LeetCode 热题 43

大家好&#xff01;我是曾续缘&#x1f618; 今天是《LeetCode 热题 100》系列 发车第 43 天 二叉树第 8 题 ❤️点赞 &#x1f44d; 收藏 ⭐再看&#xff0c;养成习惯 验证二叉搜索树 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜…

【Linux】什么是yum?--linux中的软件包管理器详解

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …