Possible Bug: Default behavior in 3dclusterize vs. afni GUI

Hi everyone,

I have analyses that were done in 3dMVM, which give me f statistics. I am trying to write a script that thresholds these maps using a p-value and a minimum cluster size, using the 3dclusterize command. I was always under the impression that I should use a 2-sided test for these f-values, because the underlying contrast could be bi-directional (i.e. exp > control or control > exp). Is this standard practice?

2-tailed seems to be the default in the afni GUI (e.g. F(1,27) = 13.61; p = 001). However, if I try to replicate this behavior in 3dclusterize by using a 2-sided test, I get the following error:

** FATAL ERROR: You are asking for multisided clustering on a single-sided stat!

Other than using a 1-sided test with p=p/2, is there a way to override this error?


Hi Nick,

The F-test is indeed a 1-tailed test. In the afni GUI, an F-stat result looks the same when viewed as a 1- or 2-sided test, rather than forcing an explicit change by the user, say. 3dClusterize is being more picky than the afni GUI because the user is already forced to specify the sidedness.

However the F-stat corresponds to a 2-sided t-test, because both positive and negative results, if applicable, would be shown in the F-test. To put it another way, the F-test for a simple contrast could not possibly show a 1-sided result of the betas, e.g., positive only, even though it is a 1-tailed test. The positive and negative betas could not be separated with an F-test.

For reference, it might be nice to verify some of the numbers. In doing so, we must keep in mind that the cdf program views F as 1-sided, and t as 2-sided. No options.

In your case, since the F-stat comes from a simple contrast, t=sqrt(F).

F(1,27) = 13.61 @ p=0.001. But p.0.001 corresponds to t(27)=sqrt(13.61) as a 2 sided test. And sqrt(13.61) = 3.689173.

cdf -t2p fift 13.61 1 27
p = 0.00100109

cdf -t2p fitt 3.689173 27
p = 0.00100109

To really do a 1-tailed t-test, the threshold would have to be different, because ‘cdf’ assumes 2-sided testing for the t-stat. The 2-sided conversion from p=0.001 shows the above t:

cdf -p2t fitt 0.001 27
t = 3.68959

However for a 1-sided test, ‘cdf’ should be fooled by using 2*p:

cdf -p2t fitt 0.002 27
t = 3.42103

Verify this in the afni GUI:

  1. threshold on the t-stat in the afni GUI

  2. right-click on the “Thr” text above the threshold slider bar, and “Set p-value” to 0.001
    ==> this should set the threshold to 3.68959

  3. now right-click again, and change “Sign” to “Pos only”
    ==> the p should change to 0.002

  4. repeat step 2: right-click and set p=0.001
    ==> this should set the t-stat threshold to 3.42103

The result of step 4 should match the faked 1-sided p-to-t conversion with cdf.

Anyway, that might be extra babbling, but it hopefully clarifies things.

  • rick