python 实现方差检验

前面介绍的 z z z检验和 t t t检验主要用于对总体的均值进行假设检验,下面主要介绍对总体方差进行假设检验的方法。

一. 单个总体方差检验

设总体 X ∼ N ( μ , δ 2 ) X\sim N(\mu, \delta^2) XN(μ,δ2) μ , δ 2 \mu,\delta^2 μ,δ2均未知, X 1 , X 2 . . . , X n X_1,X_2...,X_n X1,X2...,Xn是来自 X X X的样本,则
( n − 1 ) S 2 δ 2 ∼ χ 2 ( n − 1 ) \frac{(n- 1)S^2}{\delta^2} \sim \chi^2(n - 1) δ2(n1)S2χ2(n1)

其中S为样本标准差, δ \delta δ为总体标准差,n为样本容量

根据以上的统计量,可以对单个总体的方差 δ \delta δ进行假设检验。

原假设 H 0 H_0 H0备则假设 H 1 H_1 H1拒绝域
δ 2 = δ 0 2 \delta^2 = \delta_0^2 δ2=δ02 δ 2 ≠ δ 0 2 \delta^2 \neq \delta_0^2 δ2=δ02 χ 2 > χ α / 2 2 ( n − 1 ) \chi^2 > \chi_{\alpha/2}^2(n - 1) χ2>χα/22(n1) χ 2 < χ 1 − α / 2 2 ( n − 1 ) \chi^2 < \chi_{1- \alpha/2}^2(n - 1) χ2<χ1α/22(n1)
δ 2 ≤ δ 0 2 \delta^2 \leq \delta_0^2 δ2δ02 δ 2 > δ 0 2 \delta^2 > \delta_0^2 δ2>δ02 χ 2 > χ α 2 ( n − 1 ) \chi^2 > \chi_{\alpha}^2(n - 1) χ2>χα2(n1)
δ 2 ≥ δ 0 2 \delta^2 \geq \delta_0^2 δ2δ02 δ 2 < δ 0 2 \delta^2 < \delta_0^2 δ2<δ02 χ 2 < χ 1 − α 2 ( n − 1 ) \chi^2 < \chi_{1 - \alpha}^2(n - 1) χ2<χ1α2(n1)

某厂生产某种型号的电池,其寿命长期以来服从方差 δ 2 = 5000 \delta^2 = 5000 δ2=5000的正太分布,现有一批这种电池,从它的生产情况看,寿命的波动性有所改变。现随机抽26只电池,测出其寿命的样本方差 S 2 = 9200 S^2 = 9200 S2=9200,请问根据这一数据能否推断这批电池寿命的波动性较以前有显著的改变?

1. 双侧检验

α = 0.05 \alpha = 0.05 α=0.05的水平下做出如下假设:
H 0 : δ 2 = 5000    H 1 : δ 2 ≠ 5000 H_0: \delta^2 = 5000 \space\space H_1: \delta^2 \neq 5000 H0:δ2=5000  H1:δ2=5000

从备则假设可知,该假设检验是一个双边检验。

代码实现:

from scipy.stats import chi2

if __name__ == '__main__':

    alpha = 0.05
    n = 26

    # 总体方差
    var = 5000
    # 样本方差
    sample_var = 10000
    # 卡方统计量
    chi2stats = (n - 1) * var / sample_var

    rv = chi2(df=n - 1)
    chi2left = rv.ppf(alpha / 2)
    chi2right = rv.ppf(1 - alpha / 2)

    print("chi2left: {}, chi2right: {}".format(round(chi2left, 3), round(chi2right, 3)))
    print("chi2stats: ", round(chi2stats, 3))

    # 计算p值
    if chi2stats > chi2right:
        pval = 2 * (1 - rv.cdf(chi2stats))
    else:
        pval = 2 * (rv.cdf(chi2stats))

    if chi2stats > chi2right or chi2stats < chi2left:
        print("reject null hypothesis, pval: ", round(pval, 3))
    else:
        print("not reject null hypothesis, pval: ", round(pval, 3))

运行结果:

chi2left: 13.12, chi2right: 40.646
chi2stats:  12.5
reject null hypothesis, pval:  0.036
2. 单侧检验

保持 α = 0.05 \alpha = 0.05 α=0.05不变,修改原假设和备则假设 H 0 : δ 2 ≥ 5000   H 1 : δ 2 < 5000 H_0:\delta^2 \geq 5000 \space H_1: \delta^2 <5000 H0:δ25000 H1:δ2<5000,此时就变成了一个左侧检验。

代码实现:

from scipy.stats import chi2

if __name__ == '__main__':

    alpha = 0.05
    n = 26

    # 总体方差
    var = 5000
    # 样本方差
    sample_var = 10000
    # 卡方统计量
    chi2stats = (n - 1) * var / sample_var

    rv = chi2(df=n - 1)
    chi2left = rv.ppf(alpha)

    print("chi2left: {}".format(round(chi2left, 3)))
    print("chi2stats: ", round(chi2stats, 3))

    # 计算p值
    pval = rv.cdf(chi2stats)

    if chi2stats < chi2left:
        print("reject null hypothesis, pval: ", round(pval, 3))
    else:
        print("not reject null hypothesis, pval: ", round(pval, 3))

运行结果:

chi2left: 14.611
chi2stats:  12.5
reject null hypothesis, pval:  0.018
二. 两个总体方差检验

X 1 , X 2 . . . , X n X_1,X_2...,X_n X1,X2...,Xn是来自总体 N ( μ 1 , δ 1 2 ) N(\mu_1,\delta_1^2) N(μ1,δ12)的样本, Y 1 , Y 2 . . . , Y n Y_1,Y_2...,Y_n Y1,Y2...,Yn是来自总体 N ( μ 2 , δ 2 2 ) N(\mu_2,\delta_2^2) N(μ2,δ22)的样本,且两样本独立,其样本方差分别为 S 1 2 , S 2 2 S_1^2,S_2^2 S12,S22,且 μ 1 , μ 2 , δ 1 2 , δ 2 2 \mu_1,\mu_2,\delta_1^2, \delta_2^2 μ1,μ2,δ12,δ22均未知,则
S 1 2 / S 2 2 δ 1 2 / δ 2 2 ∼ F ( n 1 − 1 , n 2 − 1 ) \frac{S_1^2/S_2^2}{\delta_1^2/\delta_2^2} \sim F(n_1 - 1, n_2 - 1) δ12/δ22S12/S22F(n11,n21)

δ 1 , δ 2 , \delta_1, \delta_2, δ1,δ2,为两个总体的标准差, n 1 , n 2 n_1,n_2 n1,n2为两个样本的容量

根据以上的统计量,可以对两个总体的方差之间的大小关系 δ 1 2 / δ 2 2 \delta_1^2/\delta_2^2 δ12/δ22进行假设检验。

原假设 H 0 H_0 H0备则假设 H 1 H_1 H1拒绝域
δ 1 2 = δ 2 2 \delta_1^2 = \delta_2^2 δ12=δ22 δ 1 2 ≠ δ 2 2 \delta_1^2 \neq \delta_2^2 δ12=δ22 F > F α / 2 ( n 1 − 1 , n 2 − 1 ) F > F_{\alpha/2}(n_1 - 1, n_2 - 1) F>Fα/2(n11,n21) F < F 1 − α / 2 ( n 1 − 1 , n 2 − 1 ) F < F_{1 - \alpha/2}(n_1 - 1, n_2 - 1) F<F1α/2(n11,n21)
δ 1 2 ≤ δ 2 2 \delta_1^2 \leq \delta_2^2 δ12δ22 δ 1 2 > δ 2 2 \delta_1^2 > \delta_2^2 δ12>δ22 F > F α ( n 1 − 1 , n 2 − 1 ) F > F_{\alpha}(n_1 - 1, n_2 - 1) F>Fα(n11,n21)
δ 1 2 ≥ δ 2 2 \delta_1^2 \geq \delta_2^2 δ12δ22 δ 1 2 < δ 2 2 \delta_1^2 < \delta_2^2 δ12<δ22 F < F 1 − α ( n 1 − 1 , n 2 − 1 ) F <F_{1 - \alpha}(n_1 - 1, n_2 - 1) F<F1α(n11,n21)

两工厂生产同一份零件且零件尺寸服从正态分布,A生产的16个零件中,均值 μ A \mu_A μA为3.1,样本方差 δ A 2 \delta_A^2 δA2为0.04;B生产的25个零件中,均值 μ B \mu_B μB为3.08,样本方差 δ B 2 \delta_B^2 δB2为0.09。问能否在 α = 0.05 \alpha = 0.05 α=0.05的显著性水平下认为两工厂生产零件的方差相同?

1. 双边检验

α = 0.05 \alpha = 0.05 α=0.05的水平下做出如下假设:
H 0 : δ A 2 = δ B 2    H 1 : δ A 2 ≠ δ B 2 H_0: \delta_A^2 = \delta_B^2 \space\space H_1: \delta_A^2 \neq \delta_B^2 H0:δA2=δB2  H1:δA2=δB2
从备则假设可知,该假设检验是一个双边检验。

代码实现:

from scipy.stats import f

if __name__ == '__main__':

    # 两样本的方差与样本数量
    var1, var2 = 0.04, 0.09
    df1, df2 = 16, 25

    alpha = 0.05
    rv = f(dfn= df1 - 1, dfd= df2 - 1)
    # 计算拒绝域
    fleft = rv.ppf(alpha / 2)
    fright = rv.ppf(1 - alpha / 2)
    # 计算统计量
    fstats = var1 / var2

    print("fleft: {}, fright: {}".format(round(fleft, 3), round(fright, 3)))
    print("fstats: ", round(fstats, 3))
    pval = rv.sf(fstats)

    if fstats > fright:
        pval = 2 * rv.sf(fstats)
    else:
        pval = 2 * rv.cdf(fstats)

    if fstats > fright or fstats < fleft:
        print("reject null hypothesis, pval is ", round(pval, 3))
    else:
        print("not reject null hypothesis, pval is ", round(pval, 3))

运行结果:

fleft: 0.37, fright: 2.437
fstats:  0.444
not reject null hypothesis, pval is  0.107
2. 单边检验

保持 α = 0.05 \alpha = 0.05 α=0.05不变,修改原假设和备则假设 H 0 : δ A 2 ≥ δ B 2   H 1 : δ A 2 < δ B 2 H_0:\delta_A^2 \geq \delta_B^2 \space H_1: \delta_A^2 < \delta_B^2 H0:δA2δB2 H1:δA2<δB2,此时就变成了一个左侧检验。

代码实现:

from scipy.stats import f

if __name__ == '__main__':
    # 两样本的方差与样本数量
    var1, var2 = 0.04, 0.09
    df1, df2 = 16, 25

    alpha = 0.05
    rv = f(dfn=df1 - 1, dfd=df2 - 1)
    # 计算拒绝域
    fleft = rv.ppf(alpha)

    # 计算统计量
    fstats = var1 / var2

    print("fleft: {}".format(round(fleft, 3)))
    print("fstats: ", round(fstats, 3))
    pval = rv.cdf(fstats)


    if fstats < fleft:
        print("reject null hypothesis, pval is ", round(pval, 3))
    else:
        print("not reject null hypothesis, pval is ", round(pval, 3))

运行结果:

fleft: 0.437
fstats:  0.444
not reject null hypothesis, pval is  0.053

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

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

相关文章

OpenHarmony实战开发-搜索功能实现案例、如何使用includes方法对数据实现模糊查询

介绍 本示例介绍使用includes方法对数据实现模糊查询 效果图预览 使用说明 点击首页搜索框跳转到搜索页面在搜索页面输入框中输入搜索的内容&#xff0c;下方列表自动根据搜索的内容进行筛选渲染点击筛选后的列表跳转到相应的页面跳转后会保存搜索历史&#xff0c;搜索历史使…

深度解析 Spring 源码:三级缓存机制探究

文章目录 一、 三级缓存的概述二、 三级缓存的实现原理2.1 创建Bean流程图2.2 getBean()2.3 doGetBean()2.4 createBean()2.5 doCreateBean()2.4 getSingleton() 三、 三级缓存的使用场景与注意事项3.1 在实际开发中如何使用三级缓存3.2 三级缓存可能出现的问题及解决方法 一、…

特征值eigenvalue与特征向量eigenvector

特征值&#xff0c;特征向量概念 在线性代数中&#xff0c;对于一个给定的线性变换A&#xff0c;他的特征向量v经过这个线性变换的作用之后&#xff0c;得到的新向量仍然与原来的 v v v保持在同一条直线上。但长度或方向也许会改变。即&#xff1a; A v Av Av λ v \lambda…

Android开发——Fragment

Demo fragment_blank.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_pare…

Java Web3-2 - tomcat

https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/Tomcat_架构解析.md https://zhuanlan.zhihu.com/p/40249834 早期&#xff0c;web技术主要用于浏览静态页面 时间发展&#xff0c;用户已经不满足于仅浏览静态页面。用户需要一些交互操作&#xff0c;获取…

追溯历史:SIEM 中的生成式人工智能革命

作者&#xff1a;来自 Elastic Mike Nichols, Mike Paquette 网络安全领域仿佛是现实世界的一个映射&#xff0c;安全运营中心&#xff08;security operation center - SOC&#xff09;就像是你的数字警察局。网络安全分析师就像是警察&#xff0c;他们的工作是阻止网络犯罪分…

【Web】DASCTF X GFCTF 2024|四月开启第一局 题解

目录 EasySignin cool_index web1234 web4打破防了&#x1f92e;&#xff0c;应该很接近解出来了&#xff0c;感兴趣的师傅续上吧 EasySignin 先随便注册个账号登录&#xff0c;然后拿bp抓包改密码(username改成admin) 然后admin / 1234567登录 康好康的图片功能可以打SS…

ros仿真启动小龟

1.启动RosMaster&#xff08;管理Ros中各个节点的“大管家”&#xff0c;每次启动Ros时需要首先启动RosMaster&#xff09; roscorefangfang-inspiron-5580:~/ros2/download/rosdistro$ roscore ... logging to /home/fang/.ros/log/6ec2d790-fe1d-11ee-aba8-1c1bb5cdec7c/ros…

MySQL-实验-单表、多表数据查询和嵌套查询

目录 0.简单子查询 &#xff08;1&#xff09;带比较运算符的子查询 &#xff08;2&#xff09;关键字子查询 1.多表查询 3.子查询 4.多表子查询 0.简单子查询 &#xff08;1&#xff09;带比较运算符的子查询 在右侧编辑器补充代码&#xff0c;查询大于所有平均年龄的员…

10 SQL进阶 -- 综合练习题 -- 10道经典SQL题目,配套数据与解答

1. 创建表结构和导入数据 1.1 新建数据库 1.2 执行建表语句 点击下方链接直接下载创建数据表脚本:http://tianchi-media.oss-cn-beijing.aliyuncs.com/dragonball/SQL/create_table.sql 执行建表语句执行成功查看创建的表1.3 导入数据 点击下方链接直接下载插入数据脚本:htt…

VBA脚本终章编译器崩溃

一、介绍 本篇文章为VBA脚本隐藏技术的最后一篇&#xff0c;将介绍如何在保证VBA脚本正常执行的情况下&#xff0c;使分析人员无法打开编译器。 那么为什么需要分析人员无法打开编译器呢&#xff1f; 首先&#xff0c;我们需要引入一个知识点。 在上篇《VBA隐藏技术stompin…

笔记本wifi连接外网 网线连接办公内网 设置路由实现内外网可同时访问

工作提供的办公网络是企业内网,接上企业内网网线后 通过无线在连接手机wifi ,会发现内外网无法同时访问,我自己电脑是接上内网网线 也是只能访问外网,除非把外网无线暂时关闭,才可以访问内网 频繁切换很不方便 1.查看外网无线 wifi网卡信息 IPv4 地址: 192.168.18.114 IP…

数据结构学习记录

数据结构 数组 & 链表 相连性 | 指向性 数组可以迅速定位到数组中某一个节点的位置 链表则需要通过前一个元素指向下一个元素&#xff0c;需要前后依赖顺序查找&#xff0c;效率较低 实现链表 // head > node1 > node2 > ... > nullclass Node {constructo…

AI原生时代,操作系统为何是创新之源?

一直以来&#xff0c;操作系统都是软件行业皇冠上的明珠。 从上世纪40、50年代&#xff0c;汇编语言和汇编器实现软件管理硬件&#xff0c;操作系统的雏形出现&#xff1b;到60年代&#xff0c;高级编程语言和编译器诞生&#xff0c;开发者通过操作系统用更接近人的表达方式去…

面向对象(一)

一.类与对象的定义 (1)类(设计图):是对象共同特征的描述: (2)对象:是真实存在的具体东西。 在Java中,必须先设计类&#xff0c;才能获取对象。 二.如何定义类 public class 类名{1.成员变量(代表属性,一般是名词) 2.成员方法(代表行为,一般是动词) 3.构造器 4.代码块 5.内部…

Liunx入门学习 之 基础操作指令讲解(小白必看)

股票的规律找到了&#xff0c;不是涨就是跌 一、Linux下基本指令 1.ls 指令 2.pwd 命令 3.cd 指令 4.touch 指令 5.mkdir 指令 6.rmdir指令 && rm 指令 7.man 指令 8.cp 指令 9.mv指令 10.cat 11.more 指令 12.less 指令 13.head 指令 14.tail 指令 15…

论文解读-Contiguitas: The Pursuit of Physical Memory Contiguity in Datacenters

研究背景&#xff1a; 在内存容量飞速增长的背景下&#xff0c;使用小页管理内存会带来巨大的内存管理开销&#xff08;地址转换开销高&#xff09;。近些年来不少研究尝试给应用分配大段连续区域&#xff0c;或者改善页表结构&#xff08;如使用hash结构的页表&#xff09;以降…

质谱原理与仪器2-笔记

质谱原理与仪器2-笔记 常见电离源电子轰击电离源(EI)碎片峰的产生典型的EI质谱图 化学电离源(CI)快原子轰击源(FAB)基体辅助激光解析电离(MALDI)典型的MALDI质谱图 大气压电离源(API)电喷雾离子源(ESI)大气压化学电离源(APCI)APCI的正负离子模式 大气压光电离源(APPI) 常见电离…

玄子Share-计算机网络参考模型

玄子Share-计算机网络参考模型 分层思想 利用七层参考模型&#xff0c;便于在网络通信过程中&#xff0c;快速的分析问题&#xff0c;定位问题并解决问题 将复杂的流程分解为几个功能相对单一的子过程 整个流程更加清晰&#xff0c;复杂问题简单化 更容易发现问题并针对性的…

线上频繁fullgc问题-SpringActuator的坑

整体复盘 一个不算普通的周五中午&#xff0c;同事收到了大量了cpu异常的报警。根据报警表现和通过arthas查看&#xff0c;很明显的问题就是内存不足&#xff0c;疯狂无效gc。而且结合arthas和gc日志查看&#xff0c;老年代打满了&#xff0c;gc不了一点。既然问题是内存问题&…
最新文章