文章目录

  • 1. z 检验
  • 2. t 检验

Python 中的假设检验一般用到 scipy 或 statsmodels 包。

1. z 检验

对于大样本数据(样本量 ≥\geq≥ 30),或者即使是小样本,但是知道其服从正态分布,并且知道总体分布的方差时,需要用 z 检验。在 python 中,由于 scipy 包没有 z 检验,我们只能用 statsmodels 包中的 ztest 函数。ztest 函数的一般用法如下:

ztest(x1, x2=None, value=0, alternative=`two-sided’)
输入参数:
x1 数组,第一个样本的数据值
x2 数组,第二个样本的数据值,默认没有值
value 浮点型数值,若是单样本,则 value 是样本假设的均值
若是双样本,则 value是两个样本均值的差值
alternative 若为 `larger’,备选假设 H1 大于 value 值
若为 `smaller’,备选假设 H1 小于 value 值
输出参数:
tstats 统计量值
pvalue p 值

假设有下面表格的数据:

23 36 42 34 39 34 35 42 53 28 49 39
46 45 39 38 45 27 43 54 36 34 48 36
47 44 48 45 44 33 24 40 50 32 39 31

检测其均值是否为 39, 该问题显然是一个双侧检验,由于样本个数大于 30,则使用 z 检验,python 代码如下:

 >>> import statsmodels.stats.weightstats as sw>>> arr=[23,36,42,34,39,34,35,42,53,28,49,39,... 46,45,39,38,45,27,43,54,36,34,48,36,... 47,44,48,45,44,33,24,40,50,32,39,31]>>> sw.ztest(arr, value=39)(0.3859224924939799, 0.6995540720244979)

从 ztest 的运行结果可以看出,统计量值为 0.385,而 p 值是 0.699,在置信度 α=0.05\alpha=0.05α=0.05 时,由于 p 值大于 α\alphaα,接受原假设,认为该样本的均值是 39。

若要检测该样本均值是否大于 39,即原假设 H0:μ≥39\mu\geq 39μ≥39,备选假设为:μ<39\mu< 39μ<39,则我们需要在代码中增加一个参数 alternative=``smaller”:

>>> sw.ztest(arr, value=39, alternative="smaller")
(0.3859224924939799, 0.650222963987751)

检测结果的 p 值为 0.650,大于置信度 0.05,则接受原假设,认为样本均值大于39。假设另外一个样本 2 的数据:

41 34 36 32 32 35 33 31 35 34
37 34 31 36 37 34 33 37 33 38
38 37 34 36 36 31 33 36 37 35
33 34 33 35 34 34 34 35 35 34

检测两个样本的均值是否相等,因为两个样本都是大样本,使用 z 检验, python 代码如下:

>>> arr2 = [41, 34, 36, 32, 32, 35, 33, 31, 35, 34,
... 37, 34, 31, 36, 37, 34, 33, 37, 33, 38,
... 38, 37, 34, 36, 36, 31, 33, 36, 37, 35,
... 33, 34, 33, 35, 34, 34, 34, 35, 35, 34]
>>> sw.ztest(arr, arr2, value=0)
(3.775645601380307, 0.0001595937672736755)

从 ztest 的检验结果可以看出,p 值小于 0.05, 则拒绝原假设,认为两个样本的均值不相等。

2. t 检验

小样本(样本量小于30个),一般用 t 检验。对于 t 检验,可以根据样本特点,用 scipy 包中的 ttest_1sample(单样本 t检验函数),ttest_ind(两个独立样本的 t 检验),ttest_rel (两个匹配样本的 t 检验)。但这些函数得到都是双侧 t 检验的 p 值。如果是单侧检验,我们还要进行一些换算,得到单侧检验的 p 值。

ttest_1sample 函数的语法为:

ttest_1samp(a, popmean)
输入参数:
a 数组,样本的数据值
popmean 原假设 H0H_0H0​ 中样本的期望值
输出参数:
tstats 统计量值
pvalue p 值

下面是一个样本的数据:
99.398.7100.5101.298.399.799.5102.1100.599.3\quad 98.7\quad 100.5\quad 101.2\quad 98.3\quad 99.7\quad 99.5\quad 102.1\quad 100.5 99.398.7100.5101.298.399.799.5102.1100.5

检测样本均值是否等于100,对其进行双侧 t 检验的语法为:

>>> import scipy.stats as st
>>> a = [99.3, 98.7, 100.5, 101.2, 98.3, 99.7, 99.5, 102.1, 100.5]
>>> st.ttest_1samp(a, 100)
Ttest_1sampResult(statistic=-0.054996133220328265, pvalue=0.9574902045208937)

从结果可以看出,双侧检验的 p 值为 0.95, 大于置信度 0.05,因此接受原假设,认为样本的均值是100。若是单侧检验中的左侧检验,则 p 值为 0.957/2=0.47850.957/2=0.47850.957/2=0.4785,若是右侧检验,则 p 值为 1−0.957/2=0.52151-0.957/2=0.52151−0.957/2=0.5215。

假设有另外一个样本的数据:
91.193.793.696.194.392.294.095.797.191.1\quad 93.7\quad 93.6\quad 96.1\quad 94.3\quad 92.2\quad 94.0\quad 95.7\quad 97.1 91.193.793.696.194.392.294.095.797.1

若两个样本相互独立,检测两个样本的均值是否相等,使用 ttest_ind 函数。

ttest_ind 函数的语法为:

ttest_ind(a, b, axis=0, equal_var=True)
输入参数:
a 数组,样本的数据值
b 数组,样本2的数据值
axis 一般为 0
equal_var 若为 true,表示两个样本由相同的方差
若为 false,表示两个样本的方差不同,使用合并方差
输出参数:
tstats 统计量值
pvalue p 值

假设两个样本的方差不同,则独立双样本的 t 检验 python 代码为:

\begin{lstlisting}[Language=Python]

>>> a = [99.3, 98.7, 100.5, 101.2, 98.3, 99.7, 99.5, 102.1, 100.5]
>>> b = [91.1, 93.7, 93.6, 96.1, 94.3, 92.2, 94.0, 95.7, 97.1]
>>> st.ttest_ind(a, b, equal_var = False)
Ttest_indResult(statistic=7.723221821038956, pvalue=2.4331092243754622e-06)

从上面结果可以看出,p 值小于置信度 0.05,拒绝原假设,认为两个两个样本的均值不同。

若两个样本是匹配样本,使用函数 ttest_rel,它的语法更简单,只需在函数里输入两个样本的数组即可。假设上面两个样本为匹配样本,python 代码为:

>>> import scipy.stats as st
>>> a = [99.3, 98.7, 100.5, 101.2, 98.3, 99.7, 99.5, 102.1, 100.5]
>>> b = [91.1, 93.7, 93.6, 96.1, 94.3, 92.2, 94.0, 95.7, 97.1]
>>> st.ttest_rel(a, b)
Ttest_relResult(statistic=10.845107419335658, pvalue=4.617509769582176e-06)

结果显示,p 值小于置信度 0.05,拒绝原假设,认为这两个匹配样本的均值不同。

用 python 做 z 检验,t 检验相关推荐

  1. python样本期望值_用 python 做 z 检验,t 检验

    文章目录 1. z 检验 2. t 检验 Python 中的假设检验一般用到 scipy 或 statsmodels 包,需要注意的是,这两个包里面各种检验的置信度都是 0.05. 1. z 检验 对 ...

  2. 【统计学】假设检验 z检验t检验 Python实现

    一.快速理解 我开始学习假设检验时遇到了几个问题: 什么是假设检验? 为什么要假设检验? 什么是假设:对总体参数(均值,比例等)的具体数值所作的陈述.(因为一般来说总体的属性具体值我们是测不出来的,也 ...

  3. 假设检验/T检验/F检验/Z检验/卡方检验

    ****显著性水平: 一个概率值,原假设为真时,拒绝原假设的概率,表示为 alpha 常用取值为0.01, 0.05, 0.10 ****什么是P值? p值是当原假设为真时样本观察结果及更极端结果出现 ...

  4. r语言kendall协和系数_使用R语言函数cor.test()做相关性计算和检验

    假设我们现在有两组数据,如下所示 x y 55.24 1.2 59.03 1.19 47.27 1.38 52.94 0.94 55 1.81 54 1.75 55.69 1.42 48.85 3.0 ...

  5. python威氏符号秩次检验(Wilcoxon Signed-Rank Test)

    python威氏符号秩次检验(Wilcoxon Signed-Rank Test) 1.Wilcoxon Signed Rank Test Wilcoxon有符号秩检验(也称为Wilcoxon有符号秩 ...

  6. python生成白噪声与纯随机检验——Ljung-Box检验

    生成白噪声 生成白噪声的代码请参考:https://blog.csdn.net/sinat_24259567/article/details/93889547 import numpy as npde ...

  7. lm做自相关做几阶_lm检验(lm检验怎么判断是几阶自相关)

    LM检验自相关性的方法是什么?它的判断标准是什么? LM检验即拉格朗日乘数检验,用来检验模型残差序列是否存在序列相关.原假设是不存在序列相关:备选假设是:存在p阶自相关.检验统计量渐进服从卡方分布,如 ...

  8. 用Python实现斯皮尔曼等级相关性检验

    用Python实现斯皮尔曼等级相关性检验 斯皮尔曼等级相关性检验是一种非参数统计方法,用于衡量两个连续变量之间的相关性.与皮尔逊相关系数(Pearson correlation coefficient ...

  9. 5个步骤,掌握单样本z检验 / t检验

    提出问题:想知道北京大学所有男生的平均身高是否等于1.8米. 1.抽样(比如抽取100人作为样本). 2.做出假设,假设北京大学男生总体的平均身高等于1.8米.(零假设,null hypothesis ...

最新文章

  1. LeetCode简单题之去掉最低工资和最高工资后的工资平均值
  2. android jni语法,Android NDK中的JNIEXPORT和JNICALL
  3. WPF 触发器Triggers
  4. 话里话外:冯军的担心 “pk” 流程规范化
  5. 春秋时期被误解的人才。
  6. cassss服务未启动_不要再本地启动项目调试了,试SpringBoot远程调试你会发现新大陆!...
  7. CentOS内核升级
  8. 【转】给网站添加X-UA-Compatible标签
  9. 事务、事务的隔离级别、一致性
  10. 基于R语言分析决策树和随机森林(1)
  11. Ubuntu20.04设置静态IP
  12. 《嵌入式 - 深入剖析STM32》详解STM32时钟系统
  13. paper survey之——水下图像复原与增强水下光通信
  14. GitLab 安全漏洞 (CVE-2016-4340)复现
  15. ltunes无法验证服务器,itunes无法验证服务器身份
  16. ArcGIS Server Rest 认证过程分析
  17. 调整字体间距属性和文字换行属性
  18. CXF系列(四):CXF整合spring
  19. 电路习题解答 第五章 5-1、5-2
  20. 弹窗代码(详细说明)

热门文章

  1. Python中list的最大容量限制?最多支持多少?
  2. 手机号归属地和运营商数据(471452条)
  3. 团体程序设计天梯赛 L2-013 红色警报
  4. 第三方软件连接SQL server数据库,报错Failed to connect to localhost:1433的一种解决方法
  5. 沪深A股中小板创业版企业点位数据(含注册地址、办公地址等)
  6. Linux主机与Windows虚拟机之间创建共享文件夹
  7. 将英文单词首字母改成大写
  8. 获得到当前月底时间(秒)
  9. pandas使用pd.offsets.MonthEnd把dataframe数据中的时间数据列统一移动到所在月份的月底、最后一天(move to month end)
  10. HBuilderX Wap2App(H5)打包APP去除顶部导航栏