Print

Print


Dear Alex,

Yes, you are correct - the current code cannot handle multiple sessions.

Solution 1
------------

You can do Bayesian inference at the second level without doing it at the first level. So, this is probably the most computationally efficient way to go here. Just take the con images from a classical (maximum likelihood) analysis (this will accommodate multiple sessions) and enter them e.g. into a two-sample t-test/other design at the second. Estimate the second level model using classical, and then Bayesian. If you then enter what would be an F-contrast, SPM will make a map of evidence against the null. Or you can make posterior probability maps testing for effects bigger than a specified size (what would otherwise be t-tests).

Solution 2
------------

There may be a benefit of doing a Bayesian analysis at both levels, but the improvement could be marginal. And it may not warrant the very large increase in computer time if you are doing a whole brain analysis. If you're doing analysis on selected brain regions (e.g. using explicit masking) then the overhead will not be so bad. You will have to do it separately for each session and then use imcalc to average over sessions. You can then put these images into a second level analysis. I notice you are saying 'Yes' to model evidence maps. This is quite computationally demanding and unless you are doing model comparisons I would select 'no' - this will save a lot of time.

Best wishes,

Will.







________________________________________
From: SPM (Statistical Parametric Mapping) <[log in to unmask]> on behalf of Alexander Taylor <[log in to unmask]>
Sent: 23 September 2015 10:19
To: [log in to unmask]
Subject: [SPM] Bayesian model estimation for multiple sessions

Hello,

I am running an experiment with 3 runs/sessions for a task based fMRI. I would like to run bayesian model estimation at the 1st level instead of classical modelling. And then subsequently second level bayesian as well.

I am running the analysis from script and have set up the script with 3 different EPIs with appropriate timing .mat files. I have the following selection for my bayesian part of the script:

matlabbatch{2}.spm.stats.fmri_est.spmmat = {[IMAGE_DIR, 'SPM.mat']};
matlabbatch{2}.spm.stats.fmri_est.write_residuals = 0;
matlabbatch{2}.spm.stats.fmri_est.method.Bayesian.space.volume.block_type = 'Slices';
matlabbatch{2}.spm.stats.fmri_est.method.Bayesian.signal = 'UGL';
matlabbatch{2}.spm.stats.fmri_est.method.Bayesian.ARP = 3;
matlabbatch{2}.spm.stats.fmri_est.method.Bayesian.noise.UGL = 1;
matlabbatch{2}.spm.stats.fmri_est.method.Bayesian.LogEv = 'Yes';
matlabbatch{2}.spm.stats.fmri_est.method.Bayesian.anova.first = 'Yes';
matlabbatch{2}.spm.stats.fmri_est.method.Bayesian.anova.second = 'No';
matlabbatch{2}.spm.stats.fmri_est.method.Bayesian.gcon(1).name = 'Condition1';
matlabbatch{2}.spm.stats.fmri_est.method.Bayesian.gcon(1).convec = [0.5 0 0 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0 0 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0 0 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ];

matlabbatch{2}.spm.stats.fmri_est.method.Bayesian.gcon(2).name =  'Condition2';
matlabbatch{2}.spm.stats.fmri_est.method.Bayesian.gcon(2).convec = [1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ];

matlabbatch{2}.spm.stats.fmri_est.method.Bayesian.gcon(3).name =  'Condition3';
matlabbatch{2}.spm.stats.fmri_est.method.Bayesian.gcon(3).convec = [0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ];

etc......

After running the script I get the following error:
----------
Warning: spm_vb_ppm_anova only works for single session data.
Failed  'Model estimation'
Improper index matrix reference.
In file "/Applications/spm12b_5918/spm_vb_models.m" (v1143), function "spm_vb_models" at line 23.
In file "/Applications/spm12b_5918/spm_vb_ppm_anova.m" (v4489), function "spm_vb_ppm_anova" at line 37.
In file "/Applications/spm12b_5918/config/spm_run_fmri_est.m" (v5809), function "spm_run_fmri_est" at line 289.

The following modules did not run:
Failed: Model estimation
----------

If I understand this correctly I cannot run this model set up using Bayesian at the 1st level, due to there being more than one session in the design matrix.

My question therefore, is there a way to run 1st level bayesian model estimation with more than one session/run simultaneously? Or is there an alternative way to achieve this, possibly by averaging the bayesian estimation 1st level analysis from 3 different sessions/runs?

Yours Gratefully
A. Taylor