用 python 做 z 检验,t 检验
文章目录
- 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 检验相关推荐
- python样本期望值_用 python 做 z 检验,t 检验
文章目录 1. z 检验 2. t 检验 Python 中的假设检验一般用到 scipy 或 statsmodels 包,需要注意的是,这两个包里面各种检验的置信度都是 0.05. 1. z 检验 对 ...
- 【统计学】假设检验 z检验t检验 Python实现
一.快速理解 我开始学习假设检验时遇到了几个问题: 什么是假设检验? 为什么要假设检验? 什么是假设:对总体参数(均值,比例等)的具体数值所作的陈述.(因为一般来说总体的属性具体值我们是测不出来的,也 ...
- 假设检验/T检验/F检验/Z检验/卡方检验
****显著性水平: 一个概率值,原假设为真时,拒绝原假设的概率,表示为 alpha 常用取值为0.01, 0.05, 0.10 ****什么是P值? p值是当原假设为真时样本观察结果及更极端结果出现 ...
- 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 ...
- python威氏符号秩次检验(Wilcoxon Signed-Rank Test)
python威氏符号秩次检验(Wilcoxon Signed-Rank Test) 1.Wilcoxon Signed Rank Test Wilcoxon有符号秩检验(也称为Wilcoxon有符号秩 ...
- python生成白噪声与纯随机检验——Ljung-Box检验
生成白噪声 生成白噪声的代码请参考:https://blog.csdn.net/sinat_24259567/article/details/93889547 import numpy as npde ...
- lm做自相关做几阶_lm检验(lm检验怎么判断是几阶自相关)
LM检验自相关性的方法是什么?它的判断标准是什么? LM检验即拉格朗日乘数检验,用来检验模型残差序列是否存在序列相关.原假设是不存在序列相关:备选假设是:存在p阶自相关.检验统计量渐进服从卡方分布,如 ...
- 用Python实现斯皮尔曼等级相关性检验
用Python实现斯皮尔曼等级相关性检验 斯皮尔曼等级相关性检验是一种非参数统计方法,用于衡量两个连续变量之间的相关性.与皮尔逊相关系数(Pearson correlation coefficient ...
- 5个步骤,掌握单样本z检验 / t检验
提出问题:想知道北京大学所有男生的平均身高是否等于1.8米. 1.抽样(比如抽取100人作为样本). 2.做出假设,假设北京大学男生总体的平均身高等于1.8米.(零假设,null hypothesis ...
最新文章
- LeetCode简单题之去掉最低工资和最高工资后的工资平均值
- android jni语法,Android NDK中的JNIEXPORT和JNICALL
- WPF 触发器Triggers
- 话里话外:冯军的担心 “pk” 流程规范化
- 春秋时期被误解的人才。
- cassss服务未启动_不要再本地启动项目调试了,试SpringBoot远程调试你会发现新大陆!...
- CentOS内核升级
- 【转】给网站添加X-UA-Compatible标签
- 事务、事务的隔离级别、一致性
- 基于R语言分析决策树和随机森林(1)
- Ubuntu20.04设置静态IP
- 《嵌入式 - 深入剖析STM32》详解STM32时钟系统
- paper survey之——水下图像复原与增强水下光通信
- GitLab 安全漏洞 (CVE-2016-4340)复现
- ltunes无法验证服务器,itunes无法验证服务器身份
- ArcGIS Server Rest 认证过程分析
- 调整字体间距属性和文字换行属性
- CXF系列(四):CXF整合spring
- 电路习题解答 第五章 5-1、5-2
- 弹窗代码(详细说明)
热门文章
- Python中list的最大容量限制?最多支持多少?
- 手机号归属地和运营商数据(471452条)
- 团体程序设计天梯赛 L2-013 红色警报
- 第三方软件连接SQL server数据库,报错Failed to connect to localhost:1433的一种解决方法
- 沪深A股中小板创业版企业点位数据(含注册地址、办公地址等)
- Linux主机与Windows虚拟机之间创建共享文件夹
- 将英文单词首字母改成大写
- 获得到当前月底时间(秒)
- pandas使用pd.offsets.MonthEnd把dataframe数据中的时间数据列统一移动到所在月份的月底、最后一天(move to month end)
- HBuilderX Wap2App(H5)打包APP去除顶部导航栏