matlab做fdr的代码
时间: 2023-08-24 12:19:41 浏览: 273
MATLAB 中可以使用 `mafdr` 函数来进行 FDR 校正。下面是一个简单的示例代码:
```matlab
% 生成一些假设检验的 p 值
p = rand(1, 100);
% 对 p 值进行 FDR 校正
[q, crit_p] = mafdr(p, 'BHFDR', true);
% 打印校正后的 p 值和拒绝阈值
disp('FDR-adjusted p-values:');
disp(q);
disp('FDR-corrected critical p-value:');
disp(crit_p);
```
在这个示例中,我们生成了一个长度为 100 的随机 p 值向量,然后使用 `mafdr` 函数对其进行 FDR 校正。校正后的 p 值和拒绝阈值分别存储在 `q` 和 `crit_p` 变量中,并通过 `disp` 函数进行输出。需要注意的是,在使用 `mafdr` 函数之前,需要确保 MATLAB 安装了 Statistics and Machine Learning Toolbox。
相关问题
matlab做FDR矫正
FDR(False Discovery Rate)矫正是一种常用的多重比较校正方法,用于控制在多次假设检验中产生的假阳性率。在MATLAB中,您可以使用以下步骤执行FDR校正:
1. 首先,您需要进行多个假设检验并计算每个检验的p值。
2. 然后,将p值按升序排序,并计算每个p值的门槛值(或阈值)。这可以通过将p值乘以总测试数除以该p值的排名来完成。
3. 接下来,将门槛值与每个p值进行比较。如果p值小于或等于门槛值,则将其视为显着性发现,否则将其视为非显着性发现。
在MATLAB中,您可以使用fdr_bh函数执行FDR矫正。该函数需要一个包含未校正p值的向量,并返回一个包含经过FDR校正的调整p值的向量。
以下是一个使用fdr_bh函数执行FDR校正的示例代码:
```
% 生成一些随机的未校正p值
p_values = rand(1,100);
% 使用fdr_bh函数执行FDR校正
[~, adjusted_p_values] = fdr_bh(p_values);
% 打印未校正和已校正的p值
disp('未校正的p值:');
disp(p_values);
disp('已校正的p值:');
disp(adjusted_p_values);
```
请注意,fdr_bh函数还可以接受一个可选参数alpha,该参数指定期望的FDR水平。如果未指定此参数,则默认为0.05。
matlab实现FDR校正
在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>