2011-08-25 27 views
8

我有一個p值的單元數組,必須針對多重比較進行調整。我怎麼能在Matlab中做到這一點?我找不到內置函數。在Matlab中調整多個比較的p值

在R I會做:

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

是否有Matlab的一個類似的功能?理想情況下,執行不同調整方法的人(Bonferroni,Benjamini-Hochberg,FDR ...)?

回答

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'); 
+0

我認爲Bonferroni-Holm已經足夠了。我不明白細節;) –

+0

快速閱讀文檔表明,multompare僅適用於類似於anova的測量(它似乎使用t檢驗臨界值 - 請參閱bonferroni的描述 - 而不是調整p值) – Eponymous

+2

Bonferroni *(FWER /家族智慧錯誤率)與Benjamini *(FDR /錯誤發現率)之間存在重要差異。非常非常粗略地說,FWER中的重要性(又名α)是即使一次測試錯誤地拒絕零假設的概率。在FDR中,意義在於拒絕(發現)的比例不正確。所以,如果40%在95%的水平上顯着,那麼在FWER下,這意味着有1比20的機會出現1場比賽是錯誤的。而對於FDR,這意味着1/20是錯誤的 - 所以平均有2個是錯誤的。 – Eponymous

5

如果你有生物信息工具箱,你可以使用MAFDR函數來計算錯誤發現率調整的p值。

+0

好主意,謝謝! –

+1

對於那些無法訪問生物信息學工具箱的人來說,Benjamini&Hochberg和Benjamini&Yekutieli的實現在[matlab central](http://www.mathworks.com/matlabcentral/fileexchange/27418-benjamini-hochbergyekutieli-procedure-用於控制假髮現率)。雖然不是替代品,但它可以用來代替MAFDR。 – Eponymous

+1

@同名值得注意的是,默認的官方mafdr實現使用了Storey(2002)的方法,該方法通常比原始的Benjamini-Hochberg版本更強大。文檔[這裏](http://www.mathworks.com/help/bioinfo/ref/mafdr.html)。 – Matt

1

對於沒有生物信息學工具箱的人來說,FDR(False Discovery Rate)方法也很好地被描述爲here,它還提供了與fdr腳本的鏈接。

+0

該鏈接中的有用解釋 – Leo