【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]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stig_Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值