The following script is to determine is a channel (or voxel) survives the FDR corrected threshold. Assume you have 48 channels and you already calculated the (uncorrected) p-value of each channel. You put it into an array called p. Now you want to know which channel will survive if you do a FDR correction at q=0.05. You may simply use
fdr0(p, 0.05)
The output is an array of 48 numbers, with 1s in the channel where it survives the FDR threshold.
function y = fdr0(p, q) % y = fdr0(p, q) % % to calculate whether a pvalue survive FDR corrected q % % p: an array of p values. (e.g. p values for each channel) % q: desired FDR threshold (typically 0.05) % y: an array of the same size with p with only two possible values. 0 % means this position (channel) does not survive the threshold, 1 mean it % survives % % Ref: % Genovese et al. (2002). Thresholding statistical maps in functional % neuroimaging using the false discovery rate. Neuroimage, 15:722-786. % % Example: % y = fdr0(rand(10,1),0.5); % % Xu Cui % 2016/3/14 % pvalue = p; y = 0 * p; [sortedpvalue, sortedposition] = sort(pvalue); v = length(sortedposition); for ii=1:v if q*ii/v >= sortedpvalue(ii) y(sortedposition(ii)) = 1; end end return;