我有一个p值的单元格数组,必须针对多个比较进行调整。我怎么能在Matlab中做到这一点?我找不到内置函数。
在R中我会这样做:
data.pValue_adjusted = p.adjust(data.pValue, method='bonferroni')
Matlab有类似的功能吗?理想情况下,执行不同的调整方法(Bonferroni,Benjamini-Hochberg,FDR ......)?
答案 0 :(得分:5)
如果您有Bioinformatics Toolbox,您可以使用MAFDR函数计算由错误发现率调整的p值。
答案 1 :(得分:1)
对于没有Bioinformatics Toolbox的人,FDR(错误发现率)方法也很好地描述here,它还提供了一个fdr脚本的链接。
答案 2 :(得分:0)
查看Matlab文件交换中的T-test with Bonferroni Correction及相关文件。
我希望这会有所帮助。
答案 3 :(得分:0)
This submission可能就是你要找的东西,但它只实现了Bonferroni-Holm方法。 您必须在FEX中搜索与其他校正方法类似的解决方案。
那就是说统计工具箱有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');
答案 4 :(得分:0)
另见http://uk.mathworks.com/matlabcentral/fileexchange/28303-bonferroni-holm-correction-for-multiple-comparisons和 https://en.wikipedia.org/wiki/Holm%E2%80%93Bonferroni_method为背景。
答案 5 :(得分:0)
R的p.adjust
函数的MATLAB / Octave实现可用here。可以使用以下方法对多个比较执行p值调整,这些方法等效于它们的R对等物:
免责声明:我是该软件包的作者。