t-检验(t-test)的应用举例及matlab代码

目录

一、单样本t检验(One-sample t-test)

1、目的:

2、要求:

3、应用举例:

4、假设:

5、MATLAB代码:

二、配对样本t检验(Paired-sample t-test)

1、目的:

2、要求:

3、应用举例:

4、假设:

5、MATLAB代码:

三、独立双样本t检验 (Independent two-sample t-test)

1、目的:

2、要求:

3、应用举例:

4、假设:

5、注意:

 6、MATLAB代码:


t检验(t test)又称学生t检验(Student t-test)可以说是统计推断中非常常见的一种检验方法,用于统计量服从正态分布,但方差未知的情况

有关t检验的历史(以及学生t检验的由来)可以参考维基百科(跳转中...)。

t检验的前提是要求样本服从正态分布或近似正态分布,不然可以利用一些变换(取对数、开根号、倒数等等)试图将其转化为服从正态分布是数据,如若还是不满足正态分布,只能利用非参数检验方法。不过当样本量大于30的时候,可以认为数据近似正态分布

一、单样本t检验(One-sample t-test)


1、目的:


检验单样本的均值与某一已知数(已知总体的均值)是否有显著差异,只对一组样本进行检验


2、要求:

  • 总体方差未知,否则就可以利用 Z 检验(也叫U检验,就是正态检验)
  •  正态数据或近似正态

3、应用举例:

  • 从某厂生产的零件中随机抽取若干件,检验其某种规格的均值是否与要求的规格相等(双侧检验)
  •  在某偏远地区随机抽取若干健康男子,检验其脉搏均数是否高于全体健康男子平均水平(单侧检验)
  •  检验某一线城市全体高三学生视力水平是否比全国全体高三学生视力水平低(单侧检验)
  • 检验睁眼和闭眼的静息态脑电信号功率间的差值均值是否为零

4、假设:

  •  H0:样本均值与已知数相等
  • H1:样本均值与已知数不等

5、MATLAB代码:

函数:ttest(),默认参数条件下,所进行的t检验是双尾的。也可以指定参数“Tail”为”left“或者“right”,使其进行对应的左尾或者右尾的t检验。例:
 

[h,p,ci,stats]=ttest(x,'Tail','left');

t-检验(t-test)的应用举例及matlab代码_第1张图片

clc;clear;close all;
[num,txt,raw] = xlsread('Resting State.xlsx');
 
%% one sample ttest
x=num(:,3);
[h1,p1,ci1,stats1]=ttest(x);
disp('One-Sample T-test:');
disp(['t = ',num2str(stats1.tstat,'%0.2f')]);     
disp(['p = ',num2str(p1,'%0.2e')]); 

输出结果: 

One-Sample T-test:
t = -19.97
p = 3.32e-35

二、配对样本t检验(Paired-sample t-test)


1、目的:

检验在两次不同条件下来自用一组观察对象的两组样本是否具有相同的均值,配对t检验问题也可以转化为单样本t检验问题(检验在两次不同条件下来自用一组观察对象的两组样本的差值均值是否等于0)


2、要求:

  • 总体方差相等
  • 正态数据或近似正

3、应用举例:

  • 同一受试对象的两个部分接受不同的处理(如对于一批血清样本,将其分为两个部分,利用不同的方法接受某种化合物的检验,检验结果的差异)
  • 同一受试对象的自身前后对照(如检验癌症患者术前、术后的某种指标的差异)
  • 同一受试者睁眼条件下静息态脑电信号功率的均值与闭眼条件下脑电信号的功率的均值是否具有显著的差异

4、假设:

  •  H0:样本均值与已知数相等
  • H1:样本均值与已知数不等

5、MATLAB代码:

函数:ttest(),默认参数条件下,所进行的t检验是双尾的。也可以指定参数“Tail”为”left“或者“right”,使其进行对应的左尾或者右尾的t检验。例:

[h,p,ci,stats]=ttest(x,'Tail','left');

clc;clear;close all;
[num,txt,raw] = xlsread('Resting State.xlsx');
 
%% paired-sample ttest      
x_EO=num(:,1);
x_EC=num(:,2);
disp('Paired-Samples T-test:');
[h2,p2,ci2,stats2]=ttest(x_EO,x_EC);
disp(['t = ',num2str(stats2.tstat,'%0.2f')]);
disp(['p = ',num2str(p2,'%0.2e')]);

输出结果: 

Paired-Samples T-test:
t = -19.97
p = 3.32e-35

三、独立双样本t检验 (Independent two-sample t-test)


1、目的:

检验 两对独立的 正态数据或近似正态的 样本的均值 是否相等,这里可根据总体方差是否相等(总体方差相等且未知或总体方差不相等且未知)分类讨论,两组样本的数量可以不同 


2、要求:

  •  两样本独立,服从正态分布或近似正态

3、应用举例:

  • 检验两工厂生产同种零件的规格是否相等(双侧检验)
  • 为研究某种治疗儿童贫血新药的疗效,以常规药作为对照,治疗一段时间后,检验施以新药的儿童血红蛋白的增加量是否比常规药的大(单侧检验)
  • 检验两种药物对治疗高血压的效果,检验两组药物的降压水平是否相等(双侧检验)
  • 检验男性被试和女性被试(或者正常人和病人)在睁眼条件下静息态脑电信号功率的均值是否具有显著差异(双侧检验)

4、假设:

  • H0:两个组下的均值相同
  •  H1:两个组下的均值不相同

5、注意:


进行独立双样本t检验之前,应该进行方差齐性检验(homogeneity of variance test),即检查两组样本的总体方差是否相同。方差齐性检验本身也是一种假设检验,通用的方法有Hartley检验、Bartlett检验和Leyene检验。

 6、MATLAB代码:

函数:ttest2(),默认参数条件下,所进行的t检验是双尾的。也可以指定参数“Tail”为”left“或者“right”,使其进行对应的左尾或者右尾的t检验。也可以再指定参数“Vartype”为“unequal”,使其进行方差不等的t检验。例:

[h,p,ci,stats]=ttest(x,y,'Vartype','unequal','Tail','left');
clc;clear;close all;
[num,txt,raw] = xlsread('Resting State.xlsx');
 
%% indenpendent two sample ttest
idx=num(:,5);
x=num(:,1);
x_M=x(idx==1);
x_F=x(idx==0);
% 方差齐性检验,即检验两组样本的总体方差是否相同
[p3,stats3] = vartestn(x,idx,...
    'TestType','LeveneAbsolute','Display','off');
disp('Independent t-test with Eyes open:');
disp(['Levene’s test: p = ',num2str(p3,'%0.2f')]);%方差检验方法:Levene检验
if p3<0.05
    disp('Equal variances not assumed') %方差不相同
    [h4,p4,ci4,stats4]=ttest2(x_M,x_F,...
        'Vartype','unequal');                                 
else
    disp('Equal variances assumed'); %方差相同
    [h4,p4,ci4,stats4]=ttest2(x_M,x_F);
end
disp(['t = ',num2str(stats4.tstat,'%0.2f')]);
disp(['df = ',num2str(stats4.df,'%0.2f')]);
disp(['p = ',num2str(p4,'%0.2f')]);

输出结果: 

Independent t-test with Eyes open:
Levene’s test: p = 0.07
Equal variances assumed
t = -1.08
df = 91.00
p = 0.28

你可能感兴趣的:(假设检验,学习,matlab)