使用python中的Numpy进行t检验

虽然像SciPy和PyMC3这样的流行的统计数据库有预定义的函数来计算不同的测试,但是为了了解这个过程的数学原理,必须了解后台的运行。本系列将帮助你了解不同的统计测试,以及如何在python中只使用Numpy执行它们。

t检验是统计学中最常用的程序之一。但是,即使是经常使用t检验的人,也往往不清楚当他们的数据转移到后台使用像Python和R的来操作时会发生什么。

什么是t检验

t检验(Student’s T Test)比较两个平均值(均值),然后告诉你它们彼此是否有差异。并且,t检验还会告诉你这个差异有没有意义,换句话说,它让你知道这些差异是否可能是偶然发生的。

举一个非常简单的例子:假设你得了感冒,你尝试了自然疗法。你的感冒持续了几天。下一次感冒时,你买了一个非处方药,感冒了一周。你调查你的朋友,他们都告诉你,当他们采取同种方法治疗时,他们的感冒时间较短(平均 3天)。你真正想知道的是,这种情况会不会是碰巧的?t测试可以通过比较两组的方法来回答你,让你知道这些结果碰巧发生的概率。

再举一个例子:t检验可以用在现实生活中作为比较手段。例如,一家制药公司可能想要测试一种新的抗癌药,以确定它是否能提高预期寿命。在实验中,会有一个对照组(给予安慰剂或“糖丸”的组)。对照组可能显示平均寿命增长5年,而服用新药平均寿命增长6年。看样子药物可能产生了效果。但这也可能是个巧合。为了验证这一点,研究人员将使用t检验来确定整这样的情况会不会一直发生。

什么是t分数

t分数是两个组之间的差值与组内差的比值。t分数越大,组间的差异越大。t分数越小,组间的相似度就越大。t分数为3代表这些组是彼此之间的三倍。当你运行t-score时,t值越大,结果越可能重复。

  • t分数越大,这些组差异越大。
  • 如果t分数越小,这些组越相似的。

什么是T值和P值

“足够大”多大?每个t值都有伴随着一个p值。p值是你的样本数据的结果偶然发生的概率。P值为0%至100%。它们通常写为小数。例如,5%的p值为0.05。低p值好;低假定值是好的;他们指出你的数据不是偶然发生的。例如,p值为0.1意味着实验结果只有1%的可能是碰巧发生的。多数情况下,p值为0.05(5%)表示数据有效。

t检验有哪些类型

t检验有三种主要类型:

1.独立样本t检验:比较两组平均值的方法。 2.配对样本t检验:比较同一组中不同时间(例如,相隔一年)平均值的方法。 3.单一样本t检验:检验单个组的平均值对照一个已知的平均值。

如何执行2个样本的t检验

假设,我们必须检验人口中男性的身高与女性的身高是否不同。我们从人口中抽取样本,并使用t检验来判断结果是否有效。

步骤:

1.确定一个虚无假设和对立假设

一般来说,零假设将表明被测试的两个群体没有统计学意义上的差异。对立假设将说明有差异存在。在这个例子中我们可以说:

虚无假设:男女平均身高相同

对立假设:男女平均身高不相同

2.收集样本数据 下一步是为每个群体收集一组数据。在我们的示例中,我们收集了2组数据即:女性身高和男性身高。理想情况下样本量应该是相同的,但这显然不现实。让我们设定样本大小分别是nx和ny。

3.确定置信区间和自由度 这就是我们所说的alpha(α)。α的代表值为0.05。这意味着这个测试的结论有效的可能性是95%。自由度可以通过以下公式计算:

4.计算t统计 t统计量可以用下面的公式计算:

其中, Mx和My是男性和女性两个样本的平均值。 Nx和Ny是两个样本的样本空间 S是标准偏差

5.从t分布 计算临界t值为了计算临界t值,我们需要2件事,选择的α值和自由度。临界t值的公式是复杂的,但是固定的一对自由度和α的值是固定的。因此,我们使用一个表来计算临界t值:

在python中,我们将使用sciPy包中的函数计算而不是在表中查找。(我保证,这是我们唯一一次需要用它!)

6.将临界t值与计算出的t统计量进行比较 如果计算的t统计量大于临界t值,则该测试得出结论:两个群体之间存在统计上显著的差异。因此,你可以驳回虚无假设的两个人群之间没有统计学上显著差异结论。

在任何其他情况下,两个人群之间没有统计学上的显著差异。测试无法驳回虚无假设,但我们接受了对立假设,也就是说男性和女性的身高在统计学上是不同的。

代码如下:

view source

## Import the packages
import numpy as np
from scipyimport stats


## Define 2 random distributions
#Sample Size
N= 10
#Gaussian distributed data with mean = 2 and var = 1
a= np.random.randn(N)+ 2
#Gaussian distributed data with with mean = 0 and var = 1
b= np.random.randn(N)


## Calculate the Standard Deviation
#Calculate the variance to get the standard deviation

#For unbiased max likelihood estimate we have to divide the var by N-1, and therefore the parameter ddof = 1
var_a= a.var(ddof=1)
var_b= b.var(ddof=1)

#std deviation
s= np.sqrt((var_a+ var_b)/2)
s



## Calculate the t-statistics
t= (a.mean()- b.mean())/(s*np.sqrt(2/N))



## Compare with the critical t-value
#Degrees of freedom
df= 2*N- 2

#p-value after comparison with the t
p= 1 - stats.t.cdf(t,df=df)


print("t = " + str(t))
print("p = " + str(2*p))
#Note that we multiply the p value by 2 because its a twp tail t-test
### You can see that after comparing the t statistic with the critical t value (computed internally) we get a good p value of 0.0005 and thus we reject the null hypothesis and thus it proves that the mean of the two distributions are different and statistically significant.


## Cross Checking with the internal scipy function
t2, p2= stats.ttest_ind(a,b)
print("t = " + str(t2))
print("p = " + str(2*p2))

原文发布于微信公众号 - ATYUN订阅号(atyun_com)

原文发表时间:2017-09-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CreateAMind

变分自编码器(Variational Autoencoder, VAE)通俗教程,细节、基础、符号解释很齐全

1943
来自专栏专知

【NIPS2017前沿】半监督学习需要Bad GAN,清华特奖学霸与苹果AI总监提出(附Ruslan教授深度学习教程pdf下载)

【导读】CMU博士杨植麟与导师同时也是苹果首任AI总监Ruslan Salakhutdinov 在NIPS2017上合作提出新的GAN生成模型,大幅度提高对抗生...

6006
来自专栏Vamei实验室

统计02:怎样描绘数据

作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载。

1021
来自专栏机器之心

解读 | 替代图灵测试?让人工智能参加数学和科学考试

SyncedReview 作者:Shixin Gu 参与:Joshua Chou、Chain Zhang、熊猫 图灵测试在过去很长一段时间里都被认为是一种衡量人...

40412
来自专栏阮一峰的网络日志

蒙特卡罗方法入门

本文通过五个例子,介绍蒙特卡罗方法(Monte Carlo Method)。 ? 一、概述 蒙特卡罗方法是一种计算方法。原理是通过大量随机样本,去了解一个系统,...

3736
来自专栏yw的数据分析

R语言各种假设检验实例整理(常用)

一、正态分布参数检验 例1. 某种原件的寿命X(以小时计)服从正态分布N(μ, σ)其中μ, σ2均未知。现测得16只元件的寿命如下:           ...

6604
来自专栏大数据挖掘DT机器学习

机器学习有很多关于核函数的说法,核函数的定义和作用是什么?

作者:蓦风 链接:https://www.zhihu.com/question/30371867/answer/73508853 机器学习,具体以RBF网络里...

4165
来自专栏牛客网

头条算法岗

无论走到哪里,都应该记住,过去都是假的,回忆是一条没有尽头的路,一切以往的春天都不复存在,就连那最坚韧而又狂乱的爱情归根结底也不过是一种转瞬即逝的现实。——马尔...

1914
来自专栏AI科技评论

干货 | 什么是熵?

雷锋网 AI 科技评论按:「熵」大概是统计学、信息学里最让初学者愁肠百结的基本概念之一。我们都知道熵可以用来描述含有的信息丰富程度的多少,但是具体是怎么回事呢?...

862
来自专栏Python中文社区

GBDT回归的原理及Python实现

提到GBDT回归相信大家应该都不会觉得陌生,本文就GBDT回归的基本原理进行讲解,并手把手、肩并肩地带您实现这一算法。完整实现代码请参考本人的github。

2263

扫码关注云+社区