在Matlab中调整p值以进行多重比较

Mar*_*sse 8 statistics matlab

我有一个p值的单元格数组,必须进行调整以进行多次比较.我怎么能在Matlab中做到这一点?我找不到内置功能.

RI会做:

data.pValue_adjusted = p.adjust(data.pValue, method='bonferroni')
Run Code Online (Sandbox Code Playgroud)

Matlab有类似的功能吗?理想情况下,执行不同的调整方法(Bonferroni,Benjamini-Hochberg,FDR ...)?

yuk*_*yuk 5

如果您有Bioinformatics Toolbox,则可以使用MAFDR函数计算由False Discovery Rate调整的p值.


Amr*_*mro 0

此提交可能正是您正在寻找的内容,但它仅实现了 Bonferroni-Holm 方法。您必须在 FEX 中搜索与其他校正方法类似的解决方案。

也就是说,Statistics Toolbox 具有MULTCOMPARE方法,该方法专为多重比较测试而设计,尽管它不返回更正的 p 值。这是一个例子:

load fisheriris
[pVal tbl stats] = kruskalwallis(meas(:,1), species)   %# Kruskal-Wallis or ANOVA
title('Sepal Length'), xlabel('Groups'), ylabel('Value')

[c,m] = multcompare(stats, 'ctype','bonferroni', 'display','on');
Run Code Online (Sandbox Code Playgroud)

  • Bonferroni*(FWER/家庭明智错误率)和 ​​Benjamini*(FDR/错误发现率)之间存在重要区别。非常粗略地说,FWER 中的显着性(又名 alpha)是检验错误地拒绝原假设一次的概率。在 FDR 中,重要性是不正确的拒绝(发现)的比例。因此,如果 40 个在 95% 的水平上显着,则在 FWER 下,这意味着 1 场比赛出错的可能性为 20 分之一。而对于 FDR 来说,这意味着 1/20 是错误的 - 所以平均有 2 人是错误的。 (2认同)