# zval in @ROI_Corr_Mat

Hello,

I am using @ROI_Corr_Mat to compute the correlations between time series of different regions of interest. @ROI_Corr_Mat gives an option to compute zscore values using ‘-zval’ option. I would like to know how are the zvals computed for a given correlation matrix please. Assuming that Fisher z transforms are computed, the zval for correlation value = 1 should be infinity. However, this is not the result when ‘-zval’ option is used.

Please let me know what formula of zscore is implemented in @ROI_Corr_Mat.

Thanks much for your time!

The Fisher-transformed values of r are first multiplied by “sqrt(N-3)”, where N is the number of time points, and then that value is ceilinged at 15; note that since the @ROI* script uses the log-form of the Fisher-Z, it also puts doesn’t let the denominator be zero, having a tiny perturbation away from r being too close to unity. The 3dcalc-like expression is (here, the correlation value is represented by ‘a’):
-expr “min(0.5*log((1+a)/max(1-a,0.00001))*sqrt(\${N}-3),15)”

The “sqrt(N-3)” factor is the inverse of the standard error of the transformed variable (i.e, the standard error is “1/sqrt(N-3)”, where N is technically degrees of freedom, which would be less than the number of time points if you have processed/regressed stuff out). See the discussion thread here for more:
https://afni.nimh.nih.gov/afni/community/board/read.php?1,152974,152974#msg-152974
I don’t know that it would be generally desirable to multiply by this factor, actually.

If you want just the standard Fisher-transformed Z-score, perhaps, "3dNetCorr -fish_z … " would be the way to go. Note that the Z-score values there are presently ceilinged at 4 (corresponding to r=0.999329; in older versions, it was higher, but it shouldn’t matter for time series, where the correlation is typically muuuuuuch lower than even Z=4).

–pt