lme_mass_FDR, fast_fdrthresh, and MRISfdr2vwth should give basically the same result if the mask is the same. Note that there is mri_fdr which should also give the same result. One place where they might give different results is if no vertex survives, but that does not look like the case. My guess is that MRISfdr2vwth (in mrisutils.c) is using the whole surface. lme_mass_FDR and fast_fdrthresh only differ in the case that no vertex survives. lme_mass_FDR2 is a different algorithm that I am not familiar with, but it says it gives tighter control so maybe it is better.
On 05/30/2017 03:56 PM, Mihaela Stefan wrote:
Dear FreeSurfers,
I have a ROI that I want to correct with FDR. I found that FreeSurfer has different implementations of FDR correction and all of them give different results.
My ROI has 4205 vertices with p values between -5.0366 and 1.1673.
When I set FDR in tksurfer (MRISfdr2vwth), I get p threshold 3.8765.
According to a post in the mail archive ( https://www.mail-archive.com/search?l=freesurfer@nmr.mgh.harvard.edu&q=s... ) I should get the same results using fast_fdrthresh matlab function in the fsfast toolbox. However, I get 4.0911.
If I use lme_mass_FDR, I get 5.0911, while lme_mass_FDR2 gives 1.9501.
Where can I find MRISfdr2vwth and why MRISfdr2vwth and fast_fdrthresh don't give me the same results? Could it be that MRISfdr2vwth seems to use all the vertices in sig.map?
MRISfdr2vwth(): np = 163842, nv = 163842, fdr = 0.05, vwth=3.8765 MRISfdr2vwth(rate=0.050000, sign=0, 1, only_marked=0) = 3.876498 surfer: MRISfdr2vwth with rate 0.05 and sign 0 returned threshold 3.876498
I used this command in matlab: pthreshFS=fast_fdrthresh(p(maskvtx),0.05), where maskvtx=4205.
Which FDR implementation should I use? Based on other posts, lme_mass_FDR2 seems to be preferred. I am just trying to understand these functions and use them appropriately.
Thank you! Mihaela
Freesurfer mailing list Freesurfer@nmr.mgh.harvard.edu https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer