Extracting beta, standard error and confidence intervals for a coordinate
It is sometimes useful to pull out the parameter estimates and measures of dispersion from a location in the SPM results viewer. You could click through the GUI and get the data from the 'contrasts' struct that appears in your workspace (do plot > Contrast estimates and 90% CI. > Which contrast?), but this function is faster.
Do [beta,sterr,ci] = extractSPMData(xSPM,SPM) to get data for your current location. To pull data from another location (in mm), try [beta,sterr,ci] = extractSPMData(xSPM,SPM,[48 -67 28]).
All code is adapted from spm_graph.
% This function extracts beta, st error and 90% CI % for the voxel at the current location in the SPM % results viewer (or at a location specified in % the third argument). % [beta,sterr,ci90] = extractSPMData(xSPM,SPM,[coords]); % 11/6/2010 J Carlin function [cbeta,SE,CI] = extractSPMData(xSPM,SPM,coords); hReg = findobj('Tag','hReg'); % get results figure handle % Use current coordinates, if none were provided if ~exist('coords','var') coords = spm_XYZreg('GetCoords',hReg); end % This is mostly pulled out of spm_graph [xyz,i] = spm_XYZreg('NearestXYZ',coords,xSPM.XYZmm); spm_XYZreg('SetCoords',xyz,hReg); XYZ = xSPM.XYZ(:,i); % coordinates %-Parameter estimates: beta = xX.pKX*xX.K*y; %-Residual mean square: ResMS = sum(R.^2)/xX.trRV %---------------------------------------------------------------------- beta = spm_get_data(SPM.Vbeta, XYZ); ResMS = spm_get_data(SPM.VResMS,XYZ); Bcov = ResMS*SPM.xX.Bcov; CI = 1.6449; % compute contrast of parameter estimates and 90% C.I. %------------------------------------------------------------------ Ic = xSPM.Ic; % Use current contrast cbeta = SPM.xCon(Ic).c'*beta; SE = sqrt(diag(SPM.xCon(Ic).c'*Bcov*SPM.xCon(Ic).c)); CI = CI*SE;