RNAseq: Fisher-exact test with Benjamini-Hochberg multiple-testing correction using R
1
0
Entering edit mode
5.5 years ago
Ankit ▴ 500

Hi everyone,

I would like to use R for performing statistical analysis on RNA-seq data. I have Deseq2 normalized count matrix. I want to perform Fisher-exact test with Benjamini-Hochberg multiple-testing correction to calculate p-values for each genes with respect to different conditions. In that way I want to to check if each genes have significant expression across two different condition WT vs KO.

For examples this table:

Gene    WT_allele1      WT_allele2      KO_allele1  KO_allele2  **Fisher_Exact_Test(two-sided)** 

Xkr4    1      0    0   0   **1**

Gm1992  0   1   0   0   **1**

Rp1 0   0   1   0   **1**

Sox17   1   1   0   2   **1**

Mrpl15  93  94  127 147 **0.506745441**

Lypla1  92  48  87  59  **0.328408209**

Tcea1   290 158 225 149 **0.192618917**

Gm6104  9   21  15  36  **1**

Rgs20   2   1   3   0   **1**

.   .   .   .   .   .

.   .   .   .   .   .

.   .   .   .   .   .

so on

I know tools like edgeR, DEseq2, NOIseq and others perform differential expression and provide statistical values. But is it possible if I use fisher exact test and Benjamini–Hochberg multiple correction to get statistical values for them using R manually? Am I thinking correctly or not? I appreciate any suggestions.

Thanks

RNA-Seq Fisher exact test Deseq2 • 5.0k views
ADD COMMENT
0
Entering edit mode

Ankit, may I ask why do you want to use Fisher's instead of those tools?

ADD REPLY
1
Entering edit mode

It is mainly because previously we have performed Fisher for our old RNAseq data (not using R). I just wanted to understand that if I can derive same values by using Rscripts/functions.

I would also like to implement the same for my new data. It is mostly for the comparison purposes.

It will be very helpful if I will get the bit of guidance on this.

ADD REPLY
0
Entering edit mode

I understand. However, DESeq, edgeR, or limma should give you more robust results than Fisher's exact test from my understanding. My suggestion is: Perform the Fisher's exact test > correct its p values as @Jean-Karim said below; Compare your significant (FDR < 0.05?) genes with those that com up from DESeq

ADD REPLY
0
Entering edit mode

Thanks. Fisher.test gives only one p-value for contingency table. How will I get gene-wise p-values (as show in the table above or as obtained from DESeq2 normalisation)?

ADD REPLY
1
Entering edit mode
5.5 years ago

I think the function you're looking for is p.adjust().

ADD COMMENT
0
Entering edit mode

Thanks for the response.

This function will work on p-values as input.

As in manual:

Given a set of p-values, returns p-values adjusted using one of several methods.

I have DEseq2 normalized count matrix. How should I proceed in that case?

ADD REPLY
0
Entering edit mode

It seems you can start the DESeq2 analysis pipeline from a count matrix.

EDIT: You may want to check if this works with normalized counts.

ADD REPLY
0
Entering edit mode

Hi,

Thank you for the suggestion.

Using p.value provided by Deseq2, I recalculated padj (using p.adjust(p.val, method ="BH")).It matched with p.adj value provided by Deseq2.

But

Can I apply fisher.test function on raw/normalized count matrix to get p.value gene-wise?

Later I can apply the function p.adjust() with BH method to get my adjusted p.value.

Please suggest

ADD REPLY

Login before adding your answer.

Traffic: 2060 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6