利用python进行T检验 | 您所在的位置:网站首页 › ttest的结果怎么看 › 利用python进行T检验 |
引入所需的包 from scipy import stats import numpy as np 12注:ttest_1samp, ttest_ind, ttest_rel均进行双侧检验 H0:μ=μ0H0:μ=μ0 单样本T检验-ttest_1sampttest_1samp官方文档 生成50行x2列的数据 np.random.seed(7654567) # 保证每次运行都会得到相同结果 # 均值为5,方差为10 rvs = stats.norm.rvs(loc=5, scale=10, size=(50,2)) 123检验两列数的均值与1和2的差异是否显著 stats.ttest_1samp(rvs, [1, 2]) 1返回结果: 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) 1Ttest_1sampResult(statistic=array([-0.68014479, -0.04323899]), pvalue=array([ 0.49961383, 0.96568674])) 拒绝原假设——均值不等于5 stats.ttest_1samp(rvs, 0.0) 1Ttest_1sampResult(statistic=array([ 2.77025808, 4.11038784]), pvalue=array([ 0.00789095, 0.00014999])) 第一列数均值等于5,第二列数均值不等于0 stats.ttest_1samp(rvs,[5.0,0.0]) 1Ttest_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) 12Ttest_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]]) 1Ttest_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_indttest_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) 1234当两总体方差相等时,即具有“方差齐性”,可以直接检验 不拒绝原假设——两总体均值相等 stats.ttest_ind(rvs1,rvs2) 1Ttest_indResult(statistic=0.26833823296238857, pvalue=0.78849443369565098) 当不确定两总体方差是否相等时,应先利用levene检验,检验两总体是否具有方差齐性。 stats.levene(rvs1, rvs2) 1LeveneResult(statistic=1.0117186648494396, pvalue=0.31473525853990908) p值远大于0.05,认为两总体具有方差齐性。 如果两总体不具有方差齐性,需要将equal_val参数设定为“False”。 需注意的情况: 如果两总体具有方差齐性,错将equal_var设为False,p值变大 stats.ttest_ind(rvs1,rvs2, equal_var = False) 1Ttest_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) 12正确的p值 Ttest_indResult(statistic=-0.46580283298287956, pvalue=0.64149646246568737) stats.ttest_ind(rvs1, rvs3) 1被低估的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) 12错误的t统计量 Ttest_indResult(statistic=-0.99882539442782847, pvalue=0.31828327091038783) stats.ttest_ind(rvs1, rvs4, equal_var = False) 1正确的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) 12Ttest_indResult(statistic=-1.4679669854490669, pvalue=0.14263895620529113) 正确的检验: stats.ttest_ind(rvs1, rvs5, equal_var = False) 1Ttest_indResult(statistic=-0.94365973617133081, pvalue=0.34744170334794089) 配对样本t检验ttest_rel官方文档 np.random.seed(12345678) 1不拒绝原假设,认为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) 123Ttest_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) 12Ttest_relResult(statistic=-3.9995108708727924, pvalue=7.3082402191661285e-05) |
CopyRight 2018-2019 实验室设备网 版权所有 |