nuno-agostinho / psichomics

Interactive R package to quantify, analyse and visualise alternative splicing
http://nuno-agostinho.github.io/psichomics/
Other
35 stars 11 forks source link

No significant event #419

Open ghost opened 3 years ago

ghost commented 3 years ago

Dear Nuno,

I run psichomics on data that I have previously analyzed with VAST-TOOLS and SUPPA. Both these methods found significant splicing events in my data, several of which I validated by RT-PCR. To merge the results obtained with these tools I considered to use psichomics for its ability to merge annotation from difference sources. However the diffAnalyses command give me a list of events that, although show different inclusion, do not result significant according to the Wilcoxon p-value (BH adjusted) < 0.01 parameter. Also the other statistics included don´t seem to report any event as significant. How is that possible? Do you have any suggestion on how to proceed? I compared 2 conditions with 3 biological replicate each.

Thanks a lot!

nuno-agostinho commented 3 years ago

Hello, @Lilly88!

As PSI values do not follow a normal distribution, we recommend using non-parametric tests (i.e. statistical tests that don't assume any data distribution), such as a Wilcoxon test. Although non-parametric tests allow to analyse any kind of data regardless of their distribution, comparing a really small number of samples (such as 3 against 3) may not return statistically significant differences compared to tests that assume normally-distributed data.

For psichomics, we are working on a method to identify differently spliced events assuming PSI values follow a beta distribution and we have been applying it for small sample sizes. This will be available in a future update.

In the meantime, you can try to:

  1. Relax the threshold for differently spliced events depending on your statistical results (e.g. consider an adjusted p-value < 0.05)
  2. Manually transform your PSI values so they get closer to a normal distribution (e.g. via logit-transformation, but look out for PSI values of 0 and 1!) and then apply a t-test. I think this might be as easy as doing either of the following methods:
# Method 1: scale values between 0 and 1 to 0.0001 and 0.9999, logit-transform and apply t-test
psiLogit <- car::logit(psi, adjust=1E-4)
diffAnalyses(psiLogit, groups, method="ttest")
# Method 2: discard PSI values of 0 or 1, logit-transform and apply t-test
psiWithout0or1 <- psi
psiWithout0or1[psi == 1 | psi == 0] <- NA # Discard PSI values of 0 and 1
psiLogit <- car::logit(psiWithout0or1)
diffAnalyses(psiLogit, groups, method="ttest")

If you have any doubts, feel free to contact me. Cheers! :)