相信看到这篇文章的同学,一定搜了很多次下面的关键词
“T检验”、“Matlab”、“P值”、“T值”
网上公式一大堆,含义也都有解释,看完之后觉得T检验就是为我而生的。但是具体怎么用到自己的数据库中?代码到底怎么写?样本输入格式是啥?P值、T值怎么计算?好像并不是很懂,下面举个栗子,帮助大家实操T检验。
首先T检验是用来判断两个样本的差异性有多显著的。如上图所示,比如我们想告诉小猫怎么区分男生和女生,这里我们就需要用一个确切的特征(指标)来区分男生和女生。
比如说身高高于170的是男生,低于170的是女生。确定之后,小猫只需要问你多高就能判断你是男生还是女生。当然在人人一米八的现在,只用身高难免有点误判,所以我们还可以选取【年龄】【体重】【高数成绩】等参数作为特征来综合判断到底是男生还是女生。
当然,这些特征并不是每个都能很好的区分男生和女生。那么,怎么判断某个特征是否有区分能力,以及区分能力的强弱呢?这里就要有请T检验登场了!
如上图所示,只需要将同一特征下的两类样本数据输入到【T检验函数】中就可以获得结果(P值和T值)。这里用到的函数如下:
1 | [h,p,ci,stats]=ttest2(x, y); |
将特征年龄对应的两类样本数据输入到函数中看下结果。
函数输入如下:
这里输出两个参数是我们关心的,即P值和T值。
1 2 | P_Value = p; % P值 T_Value = stats.tstat; % T值 |
同理,我们可以对其他三个特征都进行T检验,结果如下:
BCDE分别对应【年龄】【身高】【体重】【高数成绩】,可以看到【年龄】对应的P值最大是0.69,T值最小是0.40。这代表什么意思呢?
P值反映了两类样本差异性的置信度,也就是说我们都多大的把握相信这个特征下两类样本是具有差异性的。
通常P值有三个阈值0.05,0.01和0.001,如果 P值<0.05 ,我们则有95%的把握相信该特征下的两类样本是具有差异性的,若 0.01 ,我们则有99%的把握,同理可推0.001。 这时,反观我们T检验的结果。如上图,C的P值小于0.001,我们有99.9%的把握相信【身高】是可以区分男女生的;DE的P值小于0.01,我们有99%的把握相信,【体重】【高数成绩】是可以区分男女生的;而B的P值为0.69,可以看到在目前的样本数据中并不能通过【年龄】来区分男女生。 而且,在Matlab官方函数 ttest2 中,将两个输入样本顺序改变后,T值的正负也会随之改变,如下图。所以,如果要使用T值对两个特征进行比较的话,则需要比较 绝对值 大小。 最后的最后,T检验用来筛选特征,那么筛选好的特征还是需要小猫去进行判断,能否用优选特征训练一个模型,之后模型自动输出分类结果?
最后,再分析下P值和T值的关系,从上图可以看到,P值是t分布曲线和直线 X=t 在右侧围成的面积。可以看到T值越大则P值越小,样本差异性越明显。
从我们的T检验的结果可以看到【体重】和【高数成绩】的P值相差无几,T值却接近于相反数。这是由于不管T值是正数还是负数,曲线和直线围成的面积都是一样的,如上图。
为了方便大家使用T检验,我对T检验函数进行封装,只需要按照文中EXCEL格式编辑自己的数据库文件,不需要调任何参数,即可实现Matlab全自动导出P值和T值。效果如下图所示:
同时欢迎大家来技术交流,个人QQ:1356580910,图像处理探索群(不只是图像处理):913931535 备注:CSDN
【机器学习实操】待更~