用MATLAB做T检验(ttest)

本文介绍了如何使用MATLAB进行t检验,包括ttest和ttest2函数的区别和应用场景。ttest适用于单样本和配对样本检验,而ttest2用于独立样本检验。通过实例比较,发现在相同数据上ttest通常给出更小的p值和置信区间。t检验常用于判断两组数据是否来自同一分布,其结果中的p值和置信区间分别表示假设检验的概率和数据差异的置信范围。t检验可以与交叉验证结合,评估算法效果的统计显著性。

t-检验:


t-检验,又称student‘s t-test,可以用于比较两组数据是否来自同一分布(可以用于比较两组数据的区分度),假设了数据的正态性,并反应两组数据的方差在统计上是否有显著差异。

matlab中提供了两种相同形式的方法来解决这一假设检验问题,分别为ttest方法和ttest2方法,两者的参数、返回值类型均相同,不同之处在于ttest方法做的是 One-sample and paired-sample t-test,而ttest2则是 Two-sample t-test with pooled or unpooled variance estimate, performs an unpaired two-sample t-test。但是这里至于paired和unpaired之间的区别我却还没搞清楚,只是在Student's t-test中看到了如下这样一段解释:

“Two-sample t-tests for a difference in mean involve independent samples, paired samples and overlapping samples. Pairedt-tests are a form ofblocking, and have greater power than unpaired tests when the paired units are similar with respect to "noise factors" that are independent of membership in the two groups being compared.[8] In a different context, paired t-tests can be used to reduce the effects ofconfounding factors in anobservational study.”

因此粗略认为paired是考虑了噪声因素的。

在同样的两组数据上分别用ttest和ttest2方法得出的结果进行比较,发现ttest返回的参数p普遍更小,且置信区间ci也更小。


最常用用法:
[H,P,CI]=ttest2(x,y);(用法上ttest和ttest2相同,完整形式为[H,P,CI, STATS]=ttest2(x,y, ALPHA);)

其中,x,y均为行向量(维度必须相同),各表示一组数据,ALPHA为可选参数,表示设置一个值作为t检验执行的显著性水平(performs the test at the significance level
    (100*ALPHA)%),在不设置ALPHA的情况下默认ALPHA为0.05,即计算x和y在5%的显著性水平下是否来自同一分布(假设是否被接受)
结果:H=0,则表明零假设在5%的置信度下被拒绝(根据当设置x=y时候,返回的H=0推断而来),即x,y在统计上可看做来自同一分布的数据;H=1,表明零假设被拒绝,即x,y在统计上认为是来自不同分布的数据,即有区分度。

P为一个概率,matlab help中的解释是“ the p-value, i.e., the probability of observing the given result, or one more extreme, by chance if the null  hypothesis is true.  Small values of P cast doubt on the validity of  the null hypothesis.” 暂且认为表示判断值在真实分布中被观察到的概率(?不太懂)

CI为置信区间(confidence interval),表示“a 100*(1-ALPHA)% confidence interval for the true difference of population means”,即达到100*(1-ALPHA)%的置信度的数据区间(?)


应用:常与k-fold crossValidation(交叉验证)联用可以用于两种算法效果的比较,例如A1,A2两算法得出的结果分别为x,y,且从均值上看mean(x)>mean(y),则对[h,p,ci]=ttest2(x,y);当h=1时,表明可以从统计上断定算法A1的结果大于(?)A2的结果(即两组数据均值的比较是有意义的),h=0则表示不能根据平均值来断定两组数据的大小关系(因为区分度小)

 

临时学的,没经过太多测试,不一定对,还请高手指教。



另外还有在某个ppt(http://jura.wi.mit.edu/bio/education/hot_topics/pdf/matlab.pdf)中看到这样一页


参考资料:

经验+自身理解

matlab 7.11.0(R2010b)的帮助文档

wikipedia

http://www.biosino.org/pages/newhtm/r/schtml/One_002d-and-two_002dsample-tests.html


转载请注明出处,请尊重他人劳动成果

### Matlab 中双样本 t 检验的使用方法 在 MATLAB 中,可以通过 `ttest2` 函数执行双样本 t 检验。该函数用于比较两个独立样本均值是否存在显著差异。以下是关于如何使用此函数的具体说明以及示例代码。 #### 基本语法 `ttest2(X,Y)` 对来自 X 和 Y 的两个独立随机样本进行假设检验,默认情况下零假设为两者具有相同的总体均值。返回 p 值表示拒绝原假设的概率[^5]。 #### 输入参数 - **X**: 第一组数据向量。 - **Y**: 第二组数据向量。 #### 输出参数 - **h**: 测试决策的结果。当 h=1 表明拒绝原假设;当 h=0 则表明无法拒绝原假设。 - **p**: 返回的 p 值,即观察到的数据与原假设一致的可能性大小。 - **ci**: 差异均值的置信区间。 - **stats**: 包含统计信息的对象,例如标准误差等。 #### 示例代码 下面是一个简单的例子展示如何利用 MATLAB 执行双样本 t 检验: ```matlab % 定义两组数据 data1 = [78, 82, 84, 90, 76]; data2 = [80, 85, 88, 92, 79]; % 进行双样本 t 检验 [h,pvalue,ci,stats] = ttest2(data1,data2); % 显示结果 disp(['Test Decision: ', num2str(h)]); disp(['P-value: ', num2str(pvalue)]); disp(['Confidence Interval of the Difference Between Means: ', mat2str(ci)]); disp('Statistics:'); disp(stats); ``` 上述代码定义了两组测试分数并调用了 `ttest2` 来评估它们之间是否存在显著性差异[^5]。 #### 解读输出 通过运行以上脚本可以获得四个主要部分的信息: - 是否应该拒绝原假设(由变量 h 提供) - 数据集间存在实际区别的概率度量——p 值 - 总体均值差的一个估计范围——置信区间 ci - 关键统计数据集合 stats,比如自由度 df 和 t 统计量本身 valueT 这种类型的分析非常适合用来判断两种不同条件下获得的一系列测量结果是否真的有所不同[^5]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值