T检验分单样本T检验和双样本T检验,单样本T检验检验的是样本的均值是否能代表总体的均值。双样本T检验检验的是两个独立样本所代表的总体数据均值差异是否显著。换句话说就是检验两个总体是否是存在差异。双样本T检验适用条件如下:
•两样本均来自于正态总体
•两样本相互独立
•满足方差齐性,方差齐次性指的是样本的方差在一个数量级水平上(通过方差齐性检验)
接下来按照假设检验流程:
1.原假设:两个独立样本所代表的总体数据均值相同(H0),备择假设:两个独立样本所代表的总体数据均值不相同(H1);
2.P值定为0.05;
3.计算两组样本的均值,标准差然后带入t(n1+n2-2)公式后求得t值,然后查T检验表得到P值。
4.如果P<0.05,则两组数据均值不同,数据间存在差异,如果P>0.05,则两组数据均值相同。
5.如果X和Y中一个为二分类数值类型时,一个为连续数值类型时即可以使用双样本T检验。
例如:给定boston房价预测数据:boston(,,,,CHAS,Price)
准备样本
将CHAS = 0 的房价Price 样本 和 将CHAS = 1 的房价Price 样本 分别抽取出来。
CHAS_0 = list(data[data["CHAS"]==0].Price)
CHAS_1 = list(data[data["CHAS"]==1].Price)
CHAS这列是二分类数值类型,506个样本中CHAS = 0的有471个样本,CHAS = 1的有35个样本,而boston房价预测数据中Price是连续数值类型,所以我们可以采用双样本T检验去检验CHAS(0或者1)的不同是否会对房价有影响,换句话说就是去检验CHAS这列特征和房价是否有关联。
双样本T检验
接着做双样本T检验,依然是一行代码。注意由于两组样本之间的方差不满足齐次性,需要加一个参数equal_var=False。此API默认为equal_var=Ture。
stats.ttest_ind(CHAS_0,CHAS_1,equal_var=False)
结果如下:
Ttest_indResult(statistic=-3.113291312794837,pvalue=0.003567170098137517)
P=0.003小于0.05,证明双样本T检验的原假设不成立,即两个总体之间的均值存在差异。
结论
下面结果显示:CHAS = 0的这一波房子的房价均值为22,而CHAS = 1的这一波房价的均值为26,说明CHAS = 1的房子比CHAS = 0的房子要贵。所以CHAS这列特征和房价还是很相关。而且T检验也证明其相关性还是很显著,所以这列特征,不能随意扔掉。
来源参考:
http://www.itale.cn/archives/2018/11/20181104155637.html
https://www.jianshu.com/p/7555c4311a57