Error in using 3dRegAna command

Dear all,

I am trying to use 3dRegAna command for multiple linear regression according to an online doc wrote by B. Douglas Ward in 2006, here is the script:

[b]3dRegAna [/b]
-rows 134
-cols 1
-xydata 90.0 NC_002_S_0295_ROI_z+tlrc
-xydata 81.5 NC_002_S_0413_ROI_z+tlrc
-xydata 94.7 NC_002_S_0685_ROI_z+tlrc
-xydata 75.1 NC_002_S_1280_ROI_z+tlrc
-xydata 72.9 NC_002_S_4262_ROI_z+tlrc
-xydata 74.2 NC_002_S_4264_ROI_z+tlrc
-xydata 74.7 NC_002_S_4270_ROI_z+tlrc
-xydata 73.5 NC_002_S_5230_ROI_z+tlrc
-xydata 70.5 NC_002_S_5256_ROI_z+tlrc
-xydata 80.0 NC_006_S_0498_ROI_z+tlrc
-xydata 78.9 NC_006_S_0731_ROI_z+tlrc
-xydata 74.0 NC_006_S_4150_ROI_z+tlrc
-xydata 73.8 NC_006_S_4357_ROI_z+tlrc
-xydata 73.4 NC_006_S_4485_ROI_z+tlrc
-xydata 73.6 NC_012_S_4026_ROI_z+tlrc
-xydata 67.4 NC_012_S_4545_ROI_z+tlrc
-xydata 65.2 NC_012_S_4643_ROI_z+tlrc
-xydata 65.6 NC_012_S_5157_ROI_z+tlrc
-xydata 65.2 NC_012_S_5195_ROI_z+tlrc
-xydata 69.8 NC_013_S_4580_ROI_z+tlrc
-xydata 82.8 NC_013_S_4731_ROI_z+tlrc
-xydata 79.0 NC_013_S_5137_ROI_z+tlrc
-xydata 72.9 NC_013_S_5171_ROI_z+tlrc
-xydata 79.0 NC_018_S_4257_ROI_z+tlrc
-xydata 77.2 NC_018_S_4313_ROI_z+tlrc
-xydata 71.5 NC_018_S_4349_ROI_z+tlrc
-xydata 78.0 NC_018_S_4399_ROI_z+tlrc
-xydata 71.2 NC_018_S_4400_ROI_z+tlrc
-xydata 74.0 NC_018_S_5250_ROI_z+tlrc
-xydata 73.6 NC_018_S_5262_ROI_z+tlrc
-xydata 65.2 NC_019_S_4367_ROI_z+tlrc
-xydata 70.3 NC_031_S_4032_ROI_z+tlrc
-xydata 80.8 NC_031_S_4218_ROI_z+tlrc
-xydata 85.7 NC_031_S_4474_ROI_z+tlrc
-xydata 69.3 NC_053_S_4578_ROI_z+tlrc
-xydata 65.7 NC_053_S_5202_ROI_z+tlrc
-xydata 70.0 NC_053_S_5272_ROI_z+tlrc
-xydata 79.0 NC_053_S_5287_ROI_z+tlrc
-xydata 69.3 NC_053_S_5296_ROI_z+tlrc
-xydata 66.2 NC_100_S_4469_ROI_z+tlrc
-xydata 83.1 NC_100_S_5075_ROI_z+tlrc
-xydata 66.6 NC_100_S_5102_ROI_z+tlrc
-xydata 65.6 NC_100_S_5246_ROI_z+tlrc
-xydata 67.6 NC_100_S_5280_ROI_z+tlrc
-xydata 69.1 NC_129_S_4369_ROI_z+tlrc
-xydata 79.5 NC_129_S_4396_ROI_z+tlrc
-xydata 71.5 NC_129_S_4422_ROI_z+tlrc
-xydata 79.7 NC_130_S_4343_ROI_z+tlrc
-xydata 83.7 NC_130_S_4352_ROI_z+tlrc
-xydata 76.4 NC_130_S_5142_ROI_z+tlrc
-xydata 79.6 NC_130_S_5175_ROI_z+tlrc
-xydata 87.2 NC_136_S_0186_ROI_z+tlrc
-xydata 72.0 NC_136_S_4726_ROI_z+tlrc
-xydata 73.1 NC_136_S_4727_ROI_z+tlrc
-xydata 69.4 MCI_002_S_4171_ROI_z+tlrc
-xydata 66.4 MCI_002_S_4229_ROI_z+tlrc
-xydata 81.0 MCI_002_S_4237_ROI_z+tlrc
-xydata 72.0 MCI_002_S_4251_ROI_z+tlrc
-xydata 71.3 MCI_006_S_4346_ROI_z+tlrc
-xydata 73.6 MCI_006_S_4363_ROI_z+tlrc
-xydata 74.7 MCI_006_S_4515_ROI_z+tlrc
-xydata 56.7 MCI_010_S_4135_ROI_z+tlrc
-xydata 69.2 MCI_012_S_4012_ROI_z+tlrc
-xydata 60.1 MCI_012_S_4094_ROI_z+tlrc
-xydata 77.3 MCI_012_S_4188_ROI_z+tlrc
-xydata 66.0 MCI_012_S_4849_ROI_z+tlrc
-xydata 57.0 MCI_013_S_2324_ROI_z+tlrc
-xydata 58.6 MCI_013_S_2389_ROI_z+tlrc
-xydata 58.2 MCI_013_S_4236_ROI_z+tlrc
-xydata 63.7 MCI_013_S_4268_ROI_z+tlrc
-xydata 72.5 MCI_013_S_4395_ROI_z+tlrc
-xydata 76.7 MCI_013_S_4595_ROI_z+tlrc
-xydata 68.0 MCI_013_S_4791_ROI_z+tlrc
-xydata 75.0 MCI_013_S_4917_ROI_z+tlrc
-xydata 63.4 MCI_018_S_2133_ROI_z+tlrc
-xydata 69.6 MCI_018_S_2155_ROI_z+tlrc
-xydata 68.5 MCI_018_S_4597_ROI_z+tlrc
-xydata 77.2 MCI_018_S_4868_ROI_z+tlrc
-xydata 75.7 MCI_018_S_4889_ROI_z+tlrc
-xydata 69.8 MCI_019_S_4293_ROI_z+tlrc
-xydata 84.9 MCI_019_S_4548_ROI_z+tlrc
-xydata 63.5 MCI_019_S_4680_ROI_z+tlrc
-xydata 77.1 MCI_031_S_2018_ROI_z+tlrc
-xydata 61.1 MCI_031_S_4029_ROI_z+tlrc
-xydata 57.3 MCI_031_S_4042_ROI_z+tlrc
-xydata 73.4 MCI_031_S_4149_ROI_z+tlrc
-xydata 74.5 MCI_031_S_4203_ROI_z+tlrc
-xydata 82.8 MCI_031_S_4218_ROI_z+tlrc
-xydata 88.7 MCI_031_S_4476_ROI_z+tlrc
-xydata 60.3 MCI_031_S_4590_ROI_z+tlrc
-xydata 85.5 MCI_031_S_4721_ROI_z+tlrc
-xydata 74.6 MCI_031_S_4947_ROI_z+tlrc
-xydata 68.7 MCI_053_S_0919_ROI_z+tlrc
-xydata 72.3 MCI_053_S_2357_ROI_z+tlrc
-xydata 73.8 MCI_053_S_4661_ROI_z+tlrc
-xydata 87.4 MCI_100_S_0296_ROI_z+tlrc
-xydata 88.3 MCI_100_S_2351_ROI_z+tlrc
-xydata 79.6 MCI_130_S_2373_ROI_z+tlrc
-xydata 79.8 MCI_130_S_2403_ROI_z+tlrc
-xydata 75.4 MCI_130_S_4294_ROI_z+tlrc
-xydata 71.6 MCI_130_S_4405_ROI_z+tlrc
-xydata 75.3 MCI_130_S_4415_ROI_z+tlrc
-xydata 74.5 MCI_130_S_4417_ROI_z+tlrc
-xydata 79.4 MCI_130_S_4542_ROI_z+tlrc
-xydata 60.7 MCI_130_S_4817_ROI_z+tlrc
-xydata 75.1 MCI_130_S_4925_ROI_z+tlrc
-xydata 67.4 MCI_136_S_0107_ROI_z+tlrc
-xydata 70.5 MCI_136_S_4517_ROI_z+tlrc
-xydata 76.5 MCI_136_S_4836_ROI_z+tlrc
-xydata 74.2 MCI_136_S_4848_ROI_z+tlrc
-xydata 78.7 MCI_136_S_4932_ROI_z+tlrc
-xydata 81.5 Dementia_006_S_4153_ROI_z+tlrc
-xydata 84.4 Dementia_006_S_4192_ROI_z+tlrc
-xydata 75.7 Dementia_006_S_4867_ROI_z+tlrc
-xydata 66.6 Dementia_010_S_5163_ROI_z+tlrc
-xydata 75.1 Dementia_018_S_4696_ROI_z+tlrc
-xydata 74.9 Dementia_018_S_5074_ROI_z+tlrc
-xydata 62.8 Dementia_018_S_5240_ROI_z+tlrc
-xydata 88.7 Dementia_019_S_4252_ROI_z+tlrc
-xydata 80.0 Dementia_019_S_4549_ROI_z+tlrc
-xydata 65.5 Dementia_019_S_4680_ROI_z+tlrc
-xydata 77.4 Dementia_019_S_5012_ROI_z+tlrc
-xydata 57.0 Dementia_031_S_4024_ROI_z+tlrc
-xydata 74.3 Dementia_100_S_5106_ROI_z+tlrc
-xydata 80.4 Dementia_130_S_4542_ROI_z+tlrc
-xydata 75.9 Dementia_130_S_4589_ROI_z+tlrc
-xydata 82.2 Dementia_130_S_4730_ROI_z+tlrc
-xydata 77.1 Dementia_130_S_4971_ROI_z+tlrc
-xydata 74.2 Dementia_130_S_4984_ROI_z+tlrc
-xydata 60.7 Dementia_130_S_4997_ROI_z+tlrc
-xydata 69.4 Dementia_130_S_5006_ROI_z+tlrc
-xydata 72.8 Dementia_130_S_5059_ROI_z+tlrc
-xydata 60.9 Dementia_131_S_5138_ROI_z+tlrc
-xydata 75.4 Dementia_136_S_4189_ROI_z+tlrc
-diskspace
-rmsmin 1.0
-fdisp 10
-model 1 : 0
-bucket 0 result

It prints out warnings like this, and all the subbricks are zeros, I found one similar question in the message board, which fixed the problem with changing categorical values to continuous values, while it is not applicable to my situation.
should it be the problem of my script or the datasets themselves,? would you mind giving me some advise? :

++ 3dRegAna: AFNI version=AFNI_19.3.11 (Nov 1 2019) [64-bit]
++ Authored by: B. Douglas Ward
Data set dimensions: nx = 71 ny = 71 nz = 53 nxyz = 267173
num_pieces = 1 piece_size = 267173

This problem requires approximately 7 MB of free disk space.
Summary of available disk space:

Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/centos-home 2529684220 2024404728 505279492 81% /home

Do you wish to proceed? y

X matrix:
1 90
1 81.5
1 94.7
1 75.1
1 72.9
1 74.2
1 74.7
1 73.5
1 70.5
1 80
1 78.9
1 74
1 73.8
1 73.4
1 73.6
1 67.4
1 65.2
1 65.6
1 65.2
1 69.8
1 82.8
1 79
1 72.9
1 79
1 77.2
1 71.5
1 78
1 71.2
1 74
1 73.6
1 65.2
1 70.3
1 80.8
1 85.7
1 69.3
1 65.7
1 70
1 79
1 69.3
1 66.2
1 83.1
1 66.6
1 65.6
1 67.6
1 69.1
1 79.5
1 71.5
1 79.7
1 83.7
1 76.4
1 79.6
1 87.2
1 72
1 73.1
1 69.4
1 66.4
1 81
1 72
1 71.3
1 73.6
1 74.7
1 56.7
1 69.2
1 60.1
1 77.3
1 66
1 57
1 58.6
1 58.2
1 63.7
1 72.5
1 76.7
1 68
1 75
1 63.4
1 69.6
1 68.5
1 77.2
1 75.7
1 69.8
1 84.9
1 63.5
1 77.1
1 61.1
1 57.3
1 73.4
1 74.5
1 82.8
1 88.7
1 60.3
1 85.5
1 74.6
1 68.7
1 72.3
1 73.8
1 87.4
1 88.3
1 79.6
1 79.8
1 75.4
1 71.6
1 75.3
1 74.5
1 79.4
1 60.7
1 75.1
1 67.4
1 70.5
1 76.5
1 74.2
1 78.7
1 81.5
1 84.4
1 75.7
1 66.6
1 75.1
1 74.9
1 62.8
1 88.7
1 80
1 65.5
1 77.4
1 57
1 74.3
1 80.4
1 75.9
1 82.2
1 77.1
1 74.2
1 60.7
1 69.4
1 72.8
1 60.9
1 75.4

piece = 0
[b]++ Writing bucket dataset: ./result+tlrc.BRIK
*+ WARNING: mri_fdrize: will not process only 0 values (min=20)
++ Smallest FDR q [1 Coef #0 t-stat] = 0
*+ WARNING: mri_fdrize: will not process only 0 values (min=20)
++ Smallest FDR q [3 Coef #1 t-stat] = 0
*+ WARNING: mri_fdrize: will not process only 0 values (min=20)
++ Smallest FDR q [4 F-stat Regression] = 0

  • created 3 FDR curves in header[/b]

3dRegAna is quite outdated and is no longer maintained. Since you have a simple regression model, I suggest that you use 3dttest++.

Dear Gang,

Thanks for your immediate reply, as far as i know, 3dttest++ is usually used for one sample or two sample ttest, which takes Group into GLM model and shows if Group effect is significant, while i am not quite clear how to conduct correlation with the behavior test score (can also be implemented by GLM), which is a continuous variable, would you mind giving me some instructions?

Best wishes,
Peng

Hi Peng,

You can follow this blog post for some guidance on how to do brain behavior correlation.

You’re running a 1-sample t-test with covariate file and then converting the t-stat to an R-squared and taking the square root.

-Peter

Dear Peter,

Great thanks for this helpful instruction, i found there is no voxel-wise output option for DF of t-test, which is needed in this conversion.
would you mind giving me further instructions?

Best wishes,
Peng

3dinfo should give you the DF for the t-test in the results.

Dear Peter,

Thanks for your kind reply, just follow what you’ve suggested, i check the information of the result of following code, while i get a little trouble in finding the DF information, would you mind helping me with that?

3dttest++ -prefix corr_result
-setA allSubs
Sub1 CA3-DG_P3_1_z_left+orig
Sub2 CA3-DG_P3_2_z_left+orig
Sub3 CA3-DG_P3_3_z_left+orig
Sub4 CA3-DG_P3_4_z_left+orig
Sub5 CA3-DG_P3_5_z_left+orig
Sub6 CA3-DG_P6_1_z_left+orig
Sub7 CA3-DG_P6_2_z_left+orig
Sub8 CA3-DG_P6_3_z_left+orig
-covariates covariates.1D

b [rp@localhost prot]$ 3dinfo corr_result+orig[/b]
++ 3dinfo: AFNI version=AFNI_19.3.11 (Nov 1 2019) [64-bit]
Dataset File: corr_result+orig
Identifier Code: XYZ_RHBtc-LqAfMZ2Xekm3pOxA Creation Date: Tue Nov 19 10:32:28 2019
Template Space: ORIG
Dataset Type: Func-Bucket (-fbuc)
Byte Order: LSB_FIRST [this CPU native = LSB_FIRST]
Storage Mode: BRIK
Storage Space: 1,835,008 (1.8 million) bytes
Geometry String: “MATRIX(0.3125,0,0,-10,0,-0.3125,0,10.27441,0,0,0.4,-4.17828):64,64,28”
Data Axes Tilt: Plumb
Data Axes Orientation:
first (x) = Right-to-Left
second (y) = Posterior-to-Anterior
third (z) = Inferior-to-Superior [-orient RPI]
R-to-L extent: -10.000 [R] -to- 9.688 [L] -step- 0.312 mm [ 64 voxels]
A-to-P extent: -9.413 [A] -to- 10.274 [P] -step- 0.312 mm [ 64 voxels]
I-to-S extent: -4.178 [I] -to- 6.622 [S] -step- 0.400 mm [ 28 voxels]
Number of values stored at each pixel = 4
– At sub-brick #0 ‘allSubs_mean’ datum type is float: -0.135973 to 0.760704
– At sub-brick #1 ‘allSubs_Tstat’ datum type is float: -10.6224 to 62.319
statcode = fitt; statpar = 6
– At sub-brick #2 ‘allSubs_Score’ datum type is float: -0.00896952 to 0.0134939
– At sub-brick #3 ‘allSubs_Score_Tstat’ datum type is float: -5.27929 to 10.0023
statcode = fitt; statpar = 6

The output says you have 6 degrees of freedom (statpar = 6). I’m curious what is in your covariates.1D file, and if it includes the intercept, which would be unnecessary, and be eating one of your DFs.

Dear Peter,

Here is what’s in the covariates.1D file, i think there is no intercept, right? And also, do you mean that df should be the same across voxels?

Subject Score
Sub1 74.7
Sub2 57.0
Sub3 58.6
Sub4 58.2
Sub5 72.5
Sub6 68.0
Sub7 74.9
Sub8 65.5

Best wishes,
Peng

Hi Peng,

Oh good, just checking. I was feeling a bit decaffeinated this morning and didn’t dig into it originally. You lose one degree of freedom for the intercept and one for your covariate. Yes, the DF is consistent across voxels. You could allow DFs to vary across voxels with options in 3dttest++, but then my ability to guide you in the process of interpreting the results requires incantations and a deck of tarot cards. Best to stick to tried and true.

Worth noting that you can also find this correlation using other methods (though I prefer 3dttest++), outlined here.

-Peter

Dear Peter,

HaHa, you are so great and you will be magician after having coffee, Let me try 3dttest++ first and ask more questions if there is some problems, after you becoming a magician.

Best wishes,
Peng