matlab实现FDR校正
时间: 2023-11-02 13:24:11 浏览: 280
在Matlab中,可以使用自带的mafdr函数来实现FDR(False Discovery Rate)校正。当进行的t-test数量较多时,可以直接使用[FDR, Q] = mafdr(P)来进行校正。其中,P是原始的p值。这种情况下,会采用Storey procedure进行校正。但是需要注意的是,当p值的数量少于1000个时,Storey procedure可能会崩溃。在这种情况下,可以改用BH FDR方法来进行校正,即使用mafdr(P, 'BHFDR', true)。这种方法对于少量的t-test更加稳健,但是相对保守一些。因此,根据实际情况选择合适的FDR校正方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
相关问题
matlab fdr校正
FDR(False Discovery Rate)校正是一种统计方法,用于控制多重假阳性的错误率。在MATLAB中,可以使用`mafdr`函数来执行FDR校正。
`mafdr`函数的语法如下:
```matlab
[q, pi0 = mafdr(pvals)
```
其中,`pvals`是一个包含原始p-value的向量,`q`是经过FDR校正后的p-value向量,`pi0`是一个估计的零分布概率。
通过调用`mafdr`函数,你可以将原始的p-value向量转换为经过FDR校正的p-value向量。这样做可以帮助你在多个假设检验中控制错误率。
请注意,使用FDR校正时,你必须先进行多个假设检验,然后再对其进行校正。
使用MATLAB进行上述FDR校正
在MATLAB中,可以使用`mafdr`函数进行FDR校正。该函数的基本用法如下:
```
[fdr_q, fdr_p] = mafdr(p_values);
```
其中,`p_values`是原始的p值向量,`fdr_q`是校正后的q值向量,`fdr_p`是校正后的p值向量。
默认情况下,`mafdr`函数使用Benjamini-Hochberg方法进行FDR校正,并将校正后的p值和q值都返回。如果您只需要q值,可以设置第二个输出参数为0:
```
fdr_q = mafdr(p_values, 'BHFDR', 'true');
```
在这个示例中,我们显式指定使用Benjamini-Hochberg方法进行FDR校正,然后只返回校正后的q值。
如果您需要设置FDR阈值,可以使用`mafdr`函数的第三个输入参数,即期望的FDR阈值。例如,如果您需要将FDR阈值设置为0.05,可以这样使用`mafdr`函数:
```
fdr_q = mafdr(p_values, 'BHFDR', 'true', 'lambda', 0.05);
```
在这个示例中,我们将期望的FDR阈值设置为0.05,并使用默认的Benjamini-Hochberg方法进行FDR校正。
阅读全文