文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

利用python进行T检验

2023-01-31 01:57

关注

引入所需的包

from scipy import stats
import numpy as np

注:ttest_1samp, ttest_ind, ttest_rel均进行双侧检验
H0:μ=μ0
H1:μ≠μ0

单样本T检验-ttest_1samp

ttest_1samp官方文档

生成50行x2列的数据

np.random.seed(7654567)  # 保证每次运行都会得到相同结果
# 均值为5,方差为10
rvs = stats.norm.rvs(loc=5, scale=10, size=(50,2))

检验两列数的均值与1和2的差异是否显著

stats.ttest_1samp(rvs, [1, 2])

返回结果:

Ttest_1sampResult(statistic=array([ 2.0801775 , 2.44893711]), pvalue=array([ 0.04276084, 0.01795186]))

分别显示两列数的t统计量和p值。由p值分别为0.042和0.018,当p值小于0.05时,认为差异显著,即第一列数的均值不等于1,第二列数的均值不等于2。


不拒绝原假设——均值等于5

stats.ttest_1samp(rvs, 5.0)

Ttest_1sampResult(statistic=array([-0.68014479, -0.04323899]), pvalue=array([ 0.49961383, 0.96568674]))


拒绝原假设——均值不等于5

stats.ttest_1samp(rvs, 0.0)

Ttest_1sampResult(statistic=array([ 2.77025808, 4.11038784]), pvalue=array([ 0.00789095, 0.00014999]))


第一列数均值等于5,第二列数均值不等于0

stats.ttest_1samp(rvs,[5.0,0.0])

Ttest_1sampResult(statistic=array([-0.68014479, 4.11038784]), pvalue=array([ 4.99613833e-01, 1.49986458e-04]))


第一行数均值等于5,第二行数均值不等于0

#axis=0按列运算,axis=1按行运算
stats.ttest_1samp(rvs.T,[5.0,0.0],axis=1) 

Ttest_1sampResult(statistic=array([-0.68014479, 4.11038784]), pvalue=array([ 4.99613833e-01, 1.49986458e-04]))


将两列数据均值分别与5.0和0.0比较,得到4个t统计量和p值

stats.ttest_1samp(rvs,[[5.0],[0.0]])

Ttest_1sampResult(statistic=array([[-0.68014479, -0.04323899],
[ 2.77025808, 4.11038784]]), pvalue=array([[ 4.99613833e-01, 9.65686743e-01],
[ 7.89094663e-03, 1.49986458e-04]]))

两独立样本t检验-ttest_ind

ttest_ind官方文档
生成数据

np.random.seed(12345678)
#loc:平均值  scale:方差
rvs1 = stats.norm.rvs(loc=5,scale=10,size=500)  
rvs2 = stats.norm.rvs(loc=5,scale=10,size=500)

当两总体方差相等时,即具有“方差齐性”,可以直接检验
不拒绝原假设——两总体均值相等

stats.ttest_ind(rvs1,rvs2)

Ttest_indResult(statistic=0.26833823296238857, pvalue=0.78849443369565098)


当不确定两总体方差是否相等时,应先利用levene检验,检验两总体是否具有方差齐性。

stats.levene(rvs1, rvs2)

LeveneResult(statistic=1.0117186648494396, pvalue=0.31473525853990908)

p值远大于0.05,认为两总体具有方差齐性。

如果两总体不具有方差齐性,需要将equal_val参数设定为“False”。


需注意的情况:

如果两总体具有方差齐性,错将equal_var设为False,p值变大

stats.ttest_ind(rvs1,rvs2, equal_var = False)

Ttest_indResult(statistic=0.26833823296238857, pvalue=0.78849452749501059)


两总体方差不等时,若没有将equal_var参数设定为False,则函数会默认equal_var为True,这样会低估p值

rvs3 = stats.norm.rvs(loc=5, scale=20, size=500)
stats.ttest_ind(rvs1, rvs3, equal_var = False)

正确的p值
Ttest_indResult(statistic=-0.46580283298287956, pvalue=0.64149646246568737)


stats.ttest_ind(rvs1, rvs3)

被低估的p值
Ttest_indResult(statistic=-0.46580283298287956, pvalue=0.64145827413435608)


当两样本数量不等时,equal_val的变化会导致t统计量变化
rvs1:来自总体——均值5,方差10,样本数500
rvs2:来自总体——均值5,方差20,样本数100
两总体不具有方差齐性,应设定equal_var=False

rvs4 = stats.norm.rvs(loc=5, scale=20, size=100)
stats.ttest_ind(rvs1, rvs4)

错误的t统计量
Ttest_indResult(statistic=-0.99882539442782847, pvalue=0.31828327091038783)


stats.ttest_ind(rvs1, rvs4, equal_var = False)

正确的t统计量
Ttest_indResult(statistic=-0.69712570584654354, pvalue=0.48716927725401871)


不同均值,不同方差,不同样本量的t检验
错误的检验:未将equal_var设定为False

rvs5 = stats.norm.rvs(loc=8, scale=20, size=100)
stats.ttest_ind(rvs1, rvs5)

Ttest_indResult(statistic=-1.4679669854490669, pvalue=0.14263895620529113)


正确的检验:

stats.ttest_ind(rvs1, rvs5, equal_var = False)

Ttest_indResult(statistic=-0.94365973617133081, pvalue=0.34744170334794089)


配对样本t检验

ttest_rel官方文档

np.random.seed(12345678)

不拒绝原假设,认为rvs1 与 rvs2 所代表的总体均值相等

rvs1 = stats.norm.rvs(loc=5,scale=10,size=500)
rvs2 = (stats.norm.rvs(loc=5,scale=10,size=500) + stats.norm.rvs(scale=0.2,size=500))
stats.ttest_rel(rvs1,rvs2)

Ttest_relResult(statistic=0.24101764965300979, pvalue=0.80964043445811551)


拒绝原假设,认为rvs1 与 rvs3所代表的总体均值不相等

rvs3 = (stats.norm.rvs(loc=8,scale=10,size=500) + stats.norm.rvs(scale=0.2,size=500))
stats.ttest_rel(rvs1,rvs3)

Ttest_relResult(statistic=-3.9995108708727924, pvalue=7.3082402191661285e-05)


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯