I understand that afni_proc censors the data using 3dTproject. The default mode seems to be KILL (is it?), which removes time points from dataset. However, I read this post from Bob Cox (https://neurostars.org/t/despiking-vs-scrubbing/2157/10) in which he wrote that adding a regression matrix column with zeros and ones (ZERO mode) and deleting the row (KILL mode) are equivalent. Or am I misunderstanding his post?
Yes, they are equivalent. The censoring regressors, where each only includes one value of 1 at the time point to censor and the rest of values to zero, can perfectly model signal at that time point. For instance, if the value of the time series is X, the weight of the corresponding censoring regressor will also be X so that the fit is perfect (i.e. no residual). In addition, “killing” time points will reduce the number of degrees of freedom in the very same number as adding an equivalent number of censoring regressors.
Hope this helps,
Thank you Cesar, that was very helpful. However why are these two options offered in afni if the two modes are equivalent?
Also I’m assuming that what Bob is referring to when he says “censoring-via-regression” is the ZERO mode in 3dTproject.
In your opinion do you think censoring-via-regression is still the best approach to deal with motion outliers?
Either way (ZERO or KILL), 3dTproject is just projecting out all of the components you are asking it to. But when censoring, there are 3 choices for how the output is constructed. Assume there are 200 time points initially, and 25 are being censored out. Then:
ZERO: the output will still have 200 time points, and the time points that were censored will be exactly 0
(note: this is the effect of running 3dDeconvolve and using errts as the projected result)
KILL: the output will have 175 time points, where the censored points are actually removed
NTRP (interpolation): the output will have 200 time points, where the censored data gets created via interpolation of the temporal neighbors
If afni_proc.py is used in resting state analysis, it uses ZERO, both to mimic 3dDeconvolve, and to keep the input and outputs the same lengths. Note that all-zero volumes in the result would not affect correlations.
Thanks Rick. Just to be clear, when you say that the time points censored out will be exactly 0, do you mean that the entire volume is converted to zeros? To me the NTRP seems to be the best option since voxel values would be closer to their neighboring volume voxels, is there a particular reason why NTRP isn’t the default mode in afni_proc?
Yes, censoring with ZERO leaves them as all-zero volumes.
Censoring is done so that unreliable time points do not affect the results. When running a correlation analysis on those residuals, all-zero volumes would still not affect the results.
Inserting artificial data does not seem preferable. That would likely add artificial weight to the time points neighboring censored ones, and would not add any information to the data. Note that we do not interpolate data in the standard linear regression, we simply censor, depriving those time points of impact. The same can be done in a correlation analysis.
Thanks Rick, that makes sense.