在Matlab中调整多重比较的p值
我有一个p值的单元格数组,需要进行多次比较。如何在Matlab中实现这一点?我找不到内置函数 在R中,我会:在Matlab中调整多重比较的p值,matlab,statistics,Matlab,Statistics,我有一个p值的单元格数组,需要进行多次比较。如何在Matlab中实现这一点?我找不到内置函数 在R中,我会: data.pValue_adjusted = p.adjust(data.pValue, method='bonferroni') Matlab有类似的函数吗?理想情况下,执行不同调整方法的方法(Bonferroni、Benjamini Hochberg、FDR…)查看Matlab文件交换中的文件和相关文件 我希望这有帮助 可能是您正在寻找的,但它只实现了Bonferroni Holm
data.pValue_adjusted = p.adjust(data.pValue, method='bonferroni')
Matlab有类似的函数吗?理想情况下,执行不同调整方法的方法(Bonferroni、Benjamini Hochberg、FDR…)查看Matlab文件交换中的文件和相关文件
我希望这有帮助 可能是您正在寻找的,但它只实现了Bonferroni Holm方法。
您必须在FEX中搜索与其他校正方法类似的解决方案
也就是说,统计工具箱中的方法是为多个比较测试而设计的,尽管它不会返回正确的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');
如果您有生物信息学工具箱,您可以使用函数计算由错误发现率调整的p值。对于没有生物信息学工具箱的人,FDR(错误发现率)方法也有很好的描述,它还提供了一个与FDR脚本的链接。另请参见和
作为背景。R的
p.adjust
函数的MATLAB/Octave实现可用。它可以使用以下方法对多重比较进行p值调整,相当于它们的R对应方法:
- 霍姆
- 霍希伯格
- 霍梅尔
- 邦费罗尼
- 波黑
- 借
- 罗斯福
- Sidak(此选项在R函数中不可用)
免责声明:我是这个软件包的作者。我认为Bonferroni Holm已经足够好了。无论如何,我不明白细节;)快速阅读文档表明,multompare仅适用于anova类测量(似乎使用t检验临界值-参见bonferroni的描述-而不是调整p值)。bonferroni*(FWER/家庭错误率)和Benjamini*(FDR/错误发现率)之间存在重要差异。非常粗略地说,FWER中的显著性(aka alpha)是测试错误地拒绝无效假设的概率,即使是一次。在FDR中,意义是不正确的拒绝(发现)的比例。所以,如果40分在95%的水平上是显著的,那么在FWER下,这意味着有20分之一的几率1场比赛是错误的。而对于罗斯福来说,这意味着1/20是错误的,所以平均2个是错误的。@Eponymous:谢谢你的解释。我认为关于
multcompare
,您是对的,因为它的输入是stats
结构,它只包含t值而不包含p值。。。如下文所示,解决方案是使用TTET2
计算多个测试的原始p值,然后从生物信息学工具箱调用mafdr
,根据Benjamini&Hochberg(FDR)方法获得调整后的p值。我可能应该提到,我不是一名统计学家,这不是我的专业领域:)对于那些无法使用生物信息学工具箱的人来说,Benjamini&Hochberg和Benjamini&Yekutieli在。虽然不是一个替代品,但它可以代替MAFDR。@Eponymous值得注意的是,官方的MAFDR
实现默认使用Storey(2002)方法,该方法通常比原始的Benjamini Hochberg版本更强大。文档。虽然链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能会无效。该链接中的有用说明功能强大!谢谢分享