用法
ttest_ind 官方文档
当两总体方差相等时,即具有方差齐性,可以直接检验。
stats.ttest_ind(data1,data2)
当不确定两总体方差是否相等时,应先利用levene检验,检验两总体是否具有方差齐性。如果返回结果的p值远大于0.05,那么我们认为两总体具有方差齐性。
stats.levene(data1,data2)
如果两总体不具有方差齐性,需要加上参数equal_val并设定为False。
stats.ttest_ind(data1,data2,equal_var=False)
举例
例如,我想检验A公司销售额的均值和B公司销售额的均值是否存在差异。
使用stats.levene检验方差是否相等,再使用stats.ttest_ind进行独立样本t检验。
A = stats.norm.rvs(loc=1, scale=1, size=(100)) # 生成A公司的销售额
B = stats.norm.rvs(loc=3, scale=1, size=(100)) # 生成B公司的销售额
stats.levene(A, B) # 进行levene检验
>> out:LeveneResult(statistic=0.8054648213132949, pvalue=0.37055445629183437)
得到的p值大于0.05,说明满足方差相等。使用ttest_ind函数进行独立样本t检验,函数的最后一个参数为判断两个样本的方差是否相同,如果不同,设为False进行独立样本t检验。
stats.ttest_ind(A,B,equal_var=True) # 进行独立样本t检验
>> out:Ttest_indResult(statistic=-15.25297417258199, pvalue=2.993305057567317e-35)
检验结果显示p远小于0.05,我们拒绝原假设,即认为A公司和B公司的销售额均值存在显著差异文章来源:https://www.toymoban.com/news/detail-599659.html
实战
from pylab import *
import scipy.stats as stats
# 读取源数据
X = np.load(r"X_epilepsy_data_16.npy", allow_pickle=True)
y = np.load(r"label_y.npy", allow_pickle=True)
# 读取两种的下标
e = np.where(y=='epilepsy')[0].tolist()
en = np.where(y=='no_epilepsy')[0].tolist()
# 特征恢复原形状
x = []
for i in X:
x.append(i.reshape(16,29))
x = np.array(x)
tt = stats.ttest_ind(x[e][:10000, :, 0], x[en][:10000, :, 0])
print(tt.pvalue)
OUT文章来源地址https://www.toymoban.com/news/detail-599659.html
[3.16822131e-12 1.46901811e-10 2.47155694e-17 3.79753493e-01
3.29168780e-03 4.84374141e-07 2.02176194e-02 4.18225288e-07
1.23518287e-18 1.29679943e-07 1.11032534e-03 2.49217922e-07
5.37464553e-14 5.46798053e-07 3.81657716e-15 7.33245900e-03]
到了这里,关于【python统计分析】stats.ttest_ind 独立样本T检验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!