fdr在Excel中怎么做
时间: 2024-04-18 17:32:23 浏览: 594
在Excel中,可以使用以下步骤计算假发现率(False Discovery Rate, FDR):
1. 首先,将所有的原始p值按从小到大的顺序排列。
2. 计算每个p值对应的阈值,即根据FDR控制的目标α(通常为0.05)和总体假阳性比例(或称为预期的假阳性发现率)m/m0(其中m表示总共的p值数量,m0表示实际为真的假设数量)计算。阈值计算公式为:阈值 = α * i / m,其中i表示当前p值的排序位置(从1开始)。
3. 找到第一个满足p值小于等于对应阈值的位置k。
4. 将所有排序位置小于等于k的p值都标记为通过FDR控制。
在Excel中,可以使用以下公式和函数进行计算:
1. 假设原始p值存储在A列,从A2开始,将第一行留空。
2. 在B2单元格中输入公式:`=RANK(A2,$A$2:$A$N)`,其中N是p值所在列的最后一行。
3. 在C2单元格中输入公式:`=B2/COUNT($A$2:$A$N)*α`,其中α是目标FDR控制水平。
4. 在D2单元格中输入公式:`=IF(A2<=C2,"Pass","Fail")`,用于判断是否通过FDR控制。
5. 将B2:D2的公式拖填至下方的所有对应单元格。
这样,D列中的结果就表示每个p值是否通过FDR控制。"Pass"表示通过FDR控制,"Fail"表示未通过FDR控制。
请注意,这种方法仅提供了一种在Excel中近似计算FDR的方式,实际上,FDR的计算可能需要更复杂的统计方法和工具。
相关问题
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 校正。下面是一个简单的示例代码:
```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。
阅读全文