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

时间:2011-08-25 09:23:58

标签: matlab statistics

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

在R中我会这样做:

data.pValue_adjusted = p.adjust(data.pValue, method='bonferroni')

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

6 个答案:

答案 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)

答案 5 :(得分:0)

R的p.adjust函数的MATLAB / Octave实现可用here。可以使用以下方法对多个比较执行p值调整,这些方法等效于它们的R对等物:

  • 霍姆
  • 霍克伯格
  • Hommel
  • 邦费罗尼
  • BH
  • BY
  • fdr
  • Sidak(此功能在R函数中不可用)

免责声明:我是该软件包的作者。