对p值进行fdr校正计算步骤
时间: 2024-01-29 14:03:48 浏览: 127
进行FDR(False Discovery Rate)校正是为了控制多重假设检验中的错误发现率。以下是一种常用的FDR校正方法,称为Benjamini-Hochberg方法:
1. 收集所有需要进行FDR校正的原始p值。
2. 对这些原始p值进行升序排序,得到排序后的p值列表。
3. 对于每个排序后的p值(设为Pi),计算调整后的阈值(设为qi):
- 首先,计算调整因子m,其中m为排序后的p值总数。
- 然后,对于第i个排序后的p值(Pi),计算qi = (Pi * m) / i。
4. 对于每个排序后的p值(Pi),比较其与对应的qi:
- 如果Pi小于等于qi,则将该p值视为显著。
- 如果Pi大于qi,则将该p值视为不显著。
5. 使用以上步骤确定显著性水平,并进一步分析或报告显著结果。
需要注意的是,以上步骤仅适用于独立和相互独立的假设检验。如果你的假设检验之间存在依赖关系,例如多组对比或重复测量设计,你可能需要考虑其他FDR校正方法,如Benjamini-Yekutieli方法。
通过按照上述步骤对p值进行FDR校正,你可以控制多重假设检验中的错误发现率,并获得更可靠的显著性结果。
相关问题
t检验中对p值进行fdr校正的步骤
在进行t检验后,如果你希望对p值进行FDR(False Discovery Rate)校正,可以按照以下步骤进行:
1. 收集t检验的所有p值。
2. 将这些p值按升序进行排序。
3. 计算每个p值对应的FDR校正后的阈值,可以使用Benjamini-Hochberg方法来计算。具体计算步骤如下:
- 首先,确定你希望的期望错误发现率(FDR阈值),通常为0.05。
- 然后,计算每个p值对应的调整后的阈值,使用以下公式:调整的阈值 = (i / n) * FDR阈值 / c
其中,i是排序后的p值的位置(从1开始),n是总的p值数量,c是排序后的p值的位置与p值的乘积的总和。
- 注意:如果计算得到的调整阈值大于1,则将其设置为1。
4. 比较每个p值与其对应的调整阈值。如果某个p值小于等于其对应的调整阈值,则认为该结果是显著的。
5. 对于通过FDR校正显著的结果,你可以标记它们或进一步分析。
通过这些步骤,你可以对t检验的p值进行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校正。