Я пытаюсь скорректировать p-значения для списка p-значений, но функция p.adjust
дает мне неожиданные значения.
CRISPR_gene_BH <- with(CRISPR_gene, data.frame(Transcript_Cluster_ID, Gene_Symbol, Fold_Change, ANOVA_p.value,
Adjusted_p.value = p.adjust(CRISPR_gene$ANOVA_p.value, method = "BH"))
> head(CRISPR_gene_BH)
Transcript_Cluster_ID Gene_Symbol Fold_Change ANOVA_p.value Adjusted_p.value
1 16845410 ETV4 14.44 8.06e-07 0.02385276
2 17055354 ETV1 4.89 9.20e-05 0.99969993
3 17065367 FAM90A20P -1.11 1.08e-04 0.99969993
4 16962380 ETV5 4.89 1.93e-04 0.99969993
5 16817824 CORO1A 1.29 2.10e-04 0.99969993
6 16912114 RNU1-23P -1.42 2.85e-04 0.99969993
Точно такие же команды на отдельном наборе данных (с одинаковым количеством зондов, т.е. строк) дают мне это:
> tail(ZFN_hits)
Transcript_Cluster_ID Gene_Symbol Fold_Change ANOVA_p.value Adjusted_p.value
546 16890067 CREB1 -1.39 0.001823 0.09868273
547 16913095 CEP250 -1.13 0.001824 0.09868273
548 16891152 ZFAND2B -1.13 0.001828 0.09871867
549 16914791 SNAI1 1.22 0.001833 0.09880838
550 16979024 PITX2 -1.18 0.001837 0.09884396
551 16872760 ERF -1.33 0.001850 0.09936279
Я использовал tail
, чтобы показать, что в этом случае более высокие p-значения имеют более низкие скорректированные p-значения по сравнению с приведенным выше, даже если два набора данных имеют одинаковую длину. Кроме того, если это имеет значение (я читал противоречивые отчеты), p-значения уже были отсортированы в CRISPR_gene
. Кто-нибудь может сказать мне, почему это происходит? Я просто не понимаю, как на самом деле работает регулировка BH, или я делаю что-то не так?
Заранее спасибо,
Вероник