Percent Change Threshold

The Percent Change Threshold (PCT) is a way to characterize the variability and sensitivity of functional neuroimaging data. PCT is the minimum significant percent change for an effect of interest, and is just a scalar multiple of the coefficient of variation (standard deviation divided by mean). While its definition is trivial, constructing PCT images from linear models requires carefully scaled predictors and contrasts.

Below there is code (as an add-in to SPM99) for creating PCT images and a draft describing the use of PCT images. The gzipped-tar file will create a PCT directory; if you place this in your spm99/toolbox directory, you should get a PCT option on the toolbox plugin.

Please send me feedback on the paper and the software.

Software: PCT for SPM

Download: spm_pct.tgz (21KB)


  • PCT.m
  • PCTcalc.m 
    These functions create PCT images.
  • spm_antimode.m
  • spm_histvol.m
  • spm_iqr.m
  • spm_mode.m
  • spm_orthviews.m
  • spm_prctile.m
  • spm_prctile_vol.m
  • spm_project_vol.m
  • spm_grand_mean.m
  • betacore.m
    These function support the creation of PCT images.
  • Important: If you downloaded the PCT software before December 19th, please get the current version. An error was causing most contrasts (those expressing differences) to have PCT images with 1/2 the correct intensity.

    (More documentation soon!)

    Tech Note: Visualizing Variance with Percent Change Threshold Images

    Download: PCT.pdf

    Supporting Software

    The above tech report relied heavily on a modified spm_orthviews, as given above. A brief overview of the features are given here. To use, just make sure that the PCT directory is in your matlab search path before spm99, and then just use 'Display', 'CheckReg' or 'Results->Overlays->Sections' as usual.

  • Image name.
    The image name is now displayed atop the 3-views.

  • Current voxel value.
    In the lower right of the 3-view display is shown the value of the current voxel.

  • Easy colorbars.
    To add color bars, just type spm_orthviews('addcolorbar') (Note American spelling :)

  • Easy windowing of colorbars.
    Once you have added colorbars to your orthogonal viewer, you can right click on the color bar to change the intensity window. To pick a value to be the new maximal intensity, put the cursor over that intensity, right click, and then select 'Set max'; same for 'Set min'. You can also type a value manually ('Manual'). You can also set the same intensity window set for all views by using the lower set of menu options.

    (Note that this will not work with the hot-metal colorbar seen in the results window overlay sections orthoview. This colorbar isn't placed by spm_orthviews and hence doesn't have this dynamic windowing option).

  • Crosshair gap.
    In order to better see the current voxel the cross hairs do not meet at an "X". You can change the magnitude of the gap with spm_orthviews('xhairsgap',p), where p is the gap size in fraction of the crosshair (default is 0.05).

  • Viewing Maximum Intensity Projections (MIPs)
    Instead of orthogonal slices, you can view a MIP of an image. Bring up whatever images you like and then use the command spm_orthviews('mipify',hdl), where hdl is the image number. It will take a moment, but you will have the MIP of the image instead of slices. (Of course, clicking around on a MIP is quicker than clicking around orthogonal slices, since the image data only needs to be loaded once). To go back to the normal viewer just issue the mipify command again.

    Note, unlike the MIP's in the results window, this shows you the MIP of everything, not just the voxels that survived the various intensity and cluster thresholds.

  • Dual colorbar labeling.
    You can add a second scale to an existing colorbar with the command spm_orthviews('colorbar2',hdl,x), where hdl is the image number (1 if using 'Display', or the image number in English reading order if using 'CheckReg') and x is the scale factor. You will then get two values displayed in the lower right, the lower value corresponding to the second scale.

    This is very useful for PCT. Say you create a PCT for uncorrected alpha=0.05 (threshold, say, 1.96), and you happen to know that your corrected threshold (Bonferroni/FDR/RFT, whatever) is, say, 4.2. You add a colorbar which will show you the uncorrected PCT. To get a corrected color axis you just need to know what the ratio between the corrected and uncorrected threshold. Here the ratio (the value x above) would be 4.2/1.96 = 2.14.

  • Last modified: Tue Nov 9 20:28:07 EST 2004

    Tom Nichols
    UM Biostatistics