function is_effect(dir) % FORMAT is_effect(dir) % % Calculate p values for probability of any effect in an % F map for a given analysis (as defined by SPM files) % using Worsley's average F test % % Matthew Brett 10/10/98 - copied from code by Tom Nichols if nargin < 1 dir = spm_get(-1, [], 'Select directory containing analysis'); end load([dir '/SPM']); fprintf('Loading SPMF... ') load([dir '/SPMF']); fprintf('Done.\n\n'); if length(SPMF)~= S error('Not all voxels were saved, cannot calculate p value') end % Volume, resels and smoothness %------------------------------------------------------------------------ D = length(W); % dimension of SPM FWHM = sqrt(8*log(2))*W.*V(([1:length(W)] + 3))'; RESELS= S*prod(V([1:D] + 3))/prod(FWHM); % RESELS d = RESELS*(4*log(2)/pi)^(D/2); % effect. spatial df % df h = Fdf(1); % df for effects of interest nu = Fdf(2); % df due to error, whole model % average F mF = mean(SPMF); % Global F-stat %----------------------------------------------------------- Fdf = [d*h, d*nu-(d-1)*(4*h+2*nu)/(h+2)]; Fstat = (nu-2)/nu*Fdf(2)/(Fdf(2)-2)*mF; pFstat = 1-spm_Fcdf(Fstat,round(Fdf)); % Report on the terminal %----------------------------------------------------------- fprintf('F test for any effect in F image\n'); fprintf('Analysis in %s\n', dir); fprintf('df (EoI): %.2f, df (error): %0.2f\n', h, nu); fprintf('Mean F: %9.2f, F: %9.2f, p: %0.6f\n', mF, Fstat, pFstat);