python进行t检验示例

 

t检验主要是针对正态总体均值的假设检验,即检验样本的均值与某个值的差异,或者两个样本的均值是否有差异等。其不需要事先知道总体的方差,并且在少量样本情况下也可以进行检验。python进行t检验使用scipy包的stats模块

一、单样本t检验

示例:已知某工厂生产的一种点火器平均寿命大于1200次为合格产品,现在质检部随机抽取了20个点火器进行试验,结果寿命分别为(单位:次):
809, 1250, 689, 1541, 995, 1234, 1024, 920, 777, 2510, 2301, 540, 850, 895, 1024, 1000, 1025, 863, 875, 1105

单样本t检验用stats.ttest_1samp函数,如下:

from scipy import stats
import numpy as np

#单样本t检验
sample=[809, 1250, 689, 1541, 995, 1234, 1024, 920, 777, 2510,
        2301, 540, 850, 895, 1024, 1000, 1025, 863, 875, 1105]
sample = np.asarray(sample)
m = np.mean(sample)
print("样本均值:",m)
#单样本检验用stats.ttest_1samp
r = stats.ttest_1samp(sample, 1200, axis=0)
print("statistic:", r.__getattribute__("statistic"))
print("pvalue:", r.__getattribute__("pvalue"))

结果:

样本均值: 1111.35
statistic: -0.8043067483882222
pvalue: 0.4311691484589055

在这里统计量statistic<0,说明样本均值小于指定均值1200,实际上是1111.35。但我们并不能因为1111.35<1200而去认定点火器平均寿命低于1200。我们应看pvalue: 0.4311691484589055,这里说明在这个样本下,我们有0.4311691484589055>0.05的概率认为产品的寿命均值为1200。同样我们不能拒绝产品的寿命均值>1200。也就是我们接受产品是合格的。

 

二、两个独立样本t检验

示例:现市场上有2种蓄电池,为研究哪种蓄电池比较好,分别抽取两种蓄电池若干件,测试其续航时间,结果如下(单位:h):

A型蓄电池5.5     5.6     6.3     4.6     5.3     5.0     6.2     5.8     5.1     5.2     5.9
B型蓄电池3.8     4.3     4.2     4.0     4.9     4.5     5.2     4.8     4.5     3.9     3.7     4.6

根据抽样结果分析两种蓄电池续航是否有显著差异(alpha=0.1)。

独立2个样本t检验用stats.ttest_ind函数,如下:

from scipy import stats
import numpy as np

#独立2个样本t检验
sample1=[5.5, 5.6, 6.3, 4.6, 5.3, 5.0, 6.2, 5.8, 5.1, 5.2, 5.9]
sample2=[3.8, 4.3, 4.2, 4.0, 4.9, 4.5, 5.2, 4.8, 4.5, 3.9, 3.7, 4.6]
sample1 = np.asarray(sample1)
sample2 = np.asarray(sample2)
r = stats.ttest_ind(sample1, sample2)
print("statistic:", r.__getattribute__("statistic"))
print("pvalue:", r.__getattribute__("pvalue"))

结果:

statistic: 5.484377451921326
pvalue: 1.9279192737974777e-05

由statistic=5.484377451921326大于0可以知道在样本统计上A型的均值比B型的大,事实上样本A均值为5.5,样本B的均值为4.37。另外pvalue=1.9279192737974777e-05远小于0.1,由此我们拒绝A的均值与B的均值相等,也就是说A型蓄电池的续航均值明显比B型蓄电池好,即A型蓄电池比B型蓄电池要好。

这里我们假设两个总体有方差齐性,当不确定两总体方差是否相等时,可以先利用levene检验,检验两总体是否具有方差齐性。

r = stats.levene(sample1,sample2)
print(r)

结果为LeveneResult(statistic=0.09936227113762626, pvalue=0.7557072345826116),pvalue>0.05说明具有方差齐性,假如不具有方差齐性,进行t检验时需要加上参数equal_val并设定为False。如下:

stats.ttest_ind(sample1, sample2, equal_var=False)

 

三、成对样本t检验

成对样本t检验,是针对成对的数据做的检验,比如比较两种测量方法的差异,每对数据是针对同一个对象的测量。

示例:现有2种血压计,为研究其测量性能是否有显著差异,分别使用这两种血压计测量15个人的血压值,结果如下:

受测人编号123456789101112131415
血压计A68851237488128631151109399758968140
血压计B60881327095115741151218696719670143

这里数据都是成对的,使用stats.ttest_rel进行成对数据的t检验。

from scipy import stats
import numpy as np

#成对样本t检验
sample1=[68, 85, 123, 74, 88, 128, 63, 115, 110, 93, 99, 75, 89, 68, 140]
sample2=[60, 88, 132, 70, 95, 115, 74, 115, 121, 86, 96, 71, 96, 70, 143]
sample1 = np.asarray(sample1)
sample2 = np.asarray(sample2)
r = stats.ttest_rel(sample1,sample2)
print("statistic:", r.__getattribute__("statistic"))
print("pvalue:", r.__getattribute__("pvalue"))

结果:

statistic: -0.492910604649229
pvalue: 0.6297167086230713

从结果上看,statistic<0,说明在样本均值上看血压计A的测量结果比血压计B略低。但pvalue=0.6297167086230713远大于0.05,我们并不能拒绝两种血压计测量均值相等,即我们认为2种血压计的测量性能并没有显著差异。

 

 

author:蓝何忠

email:lanhezhong@163.com

  • 23
    点赞
  • 104
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在Python中,可以使用`scipy`库中的`ttest_ind`函数来进行配对t检验。假设有两个样本组`a`和`b`,可以按照以下步骤进行配对t检验: 1. 导入 `scipy` 库中的 `ttest_ind` 函数: ```python from scipy.stats import ttest_ind ``` 2. 计算两组样本的差值: ```python diff = a - b ``` 3. 对差值进行配对t检验: ```python t_statistic, p_value = ttest_ind(a, b) ``` 其中,`t_statistic`表示t统计量,`p_value`表示双侧检验的p值。如果需要单侧检验,则可以将`p_value`值除以2,得到单侧检验的p值。 ### 回答2: Python配对t检验是一种统计分析方法,用于评估两组相关样本的均值差异是否显著。它适用于对同一组样本在不同条件下的测量值进行比较,常用于试验前后或相同个体的不同时间点的对比分析。 配对t检验基于以下假设:两组样本是从同一总体中独立获取的,且样本分布近似正态分布。我们的目标是评估样本均值之间的差异是否真实,还是由于随机抽样误差引起的。 Python中,可以使用scipy库中的ttest_rel函数进行配对t检验的计算。这个函数接受两个等长的数组作为输入,分别表示两组相关样本的测量值。函数将返回计算得到的t值和对应的p值。 使用Python进行配对t检验的基本步骤如下: 1. 导入必要的库:import scipy.stats as stats 2. 准备数据:定义两个等长的数组,分别表示两组相关样本的测量值。 3. 进行配对t检验:使用stats.ttest_rel(array1, array2)函数进行计算,将结果保存在变量中。 4. 解读结果:根据返回的t值和p值,判断两组样本均值是否显著差异。如果p值小于显著性水平(通常取0.05),则可以认为两组样本均值存在显著差异。 总而言之,Python中的配对t检验是一种常用的统计分析方法,用于评估两组相关样本的均值差异。通过计算t值和p值,我们可以判断样本均值是否存在显著差异,从而得出结论。 ### 回答3: 一般而言,当我们想要比较两个样本之间是否存在显著差异时,可以使用配对t检验。配对t检验是一种统计方法,常用于分析对偶的样本或相关性较强的配对数据。 在Python中,可以使用SciPy库中的"ttest_rel"函数执行配对t检验。该函数的参数是两组配对样本的数据,返回的结果包括t值和p值。 下面是一个使用Python进行配对t检验示例代码: ```python import numpy as np from scipy import stats # 定义两组配对样本的数据 group1 = np.array([1, 2, 3, 4, 5]) group2 = np.array([2, 3, 4, 5, 6]) # 执行配对t检验 t_statistic, p_value = stats.ttest_rel(group1, group2) # 输出结果 print("t值:", t_statistic) print("p值:", p_value) ``` 在上述示例代码中,我们首先导入了必要的库。然后,定义了两组配对样本的数据。最后,使用"ttest_rel"函数执行了配对t检验,并将返回的t值和p值打印出来。 需要注意的是,该示例代码假设两组样本是正态分布的。如果数据不符合正态分布,可以尝试进行数据变换或使用非参数的检验方法。并且,配对t检验还有一些前提假设,如配对数据是独立的、具有相同的方差等。在进行分析时,需要适当检查这些前提假设的满足程度。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值