【python统计分析】stats.ttest_ind 独立样本T检验

用法

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公司的销售额均值存在显著差异

实战

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

[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]

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2023年9月7日
下一篇 2023年9月7日

相关推荐