Dear Gianluca
Apologies for the trouble you’ve had with this – in the current SPM release there does seem to be an issue with spm_dcm_peb_fit with certain of the EEG/MEG models (related to the definition of the leadfield parameters). Can I suggest, for now, you set the priors or starting values to the group average, and then re-estimate all subjects, without using spm_dcm_peb_fit.m.
You can calculate the group average parameters, avgEp, using:
BPA = spm_dcm_bpa(GCM,true);
avgEp = BPA.Ep;
You can then update the starting values for the estimation, or priors for the DCMs using those average parameters. To set the starting values it will be something like:
for i = 1:nsubjects
GCM{i}.M.P=avgEp;
end
I am CC'ing my colleague Amir, @Amir - please could you let Gianluca know whether I've got that code right for EEG DCMs?
Best
P
-----Original Message-----
Dear all,
While running
DCM = spm_dcm_peb_fit (GCM);
I got this error message:
Error using *
Inner matrix dimensions must agree
Error in spm_log_evidence_reduce (line 49)
rE = U'*spm_vec(rE);
Error in spm_dcm_reduce (line 29)
[F,sE,sC] = spm_log_evidence_reduce(qE,qC,pE,pC,rE,rC);
Error in spm_dcm_reduce (line 15)
DCM{i} = spm_dcm_reduce(DCM{i},rE,rC);
Error in spm_dcm_peb_fit (line 182)
DCM = spm_dcm_reduce(DCM,rE,rC);
I am using DCM for CSD with EEG data.
Can someone please explain what happened?
Thanks in advance,
Gianluca.
-----Original Message-----
From: Gianluca <[log in to unmask]>
Sent: 09 June 2020 11:47
To: Zeidman, Peter <[log in to unmask]>
Cc: [log in to unmask]
Subject: Re: [SPM] Empirical Bayes using spm_dcm_peb_fit
Dear Peter,
Thanks for your quick reply!
I forgot to mention that I am using EEG data.
On my very first attempt the fitting of single-subject models went terribly wrong, due to the local maxima problem I suppose ( early convergence after 5/10 steps and parameter values very close to zero).
I tried to solve this problem applying the empirical Bayes group inversion approach ( spm_dcm_peb_fit ).
Since then, the early convergence problem seems to be disappeared and the explained variance is very good I think ( greater than 85% for all the subjects).
In my previous message I reported my code, that consists of standard steps I think.. At this point I feel a bit confused.
What else may I check ?
Thanks in advance,
Gianluca.
> Il giorno 9 giu 2020, alle ore 11:58, Zeidman, Peter <[log in to unmask]> ha scritto:
>
> Dear Gianluca
> The early convergence of the PEB estimation suggests that the DCM connectivity parameters you have given it don't accord with the PEB model's priors. In other words, they were not sampled from a normal distribution over subjects with a mean and variance in the right range. This, in turn, suggests something went wrong at the individual subject level. I suggest using the function:
>
> spm_dcm_fmri_check(DCMs);
>
> Take a look at the explained variance and parameter estimates of your models. If the explained variance is generally very low, and the parameters are close to zero, it suggests the model fits needs addressing before moving on to the group level analysis.
>
> Best
> Peter
>
> On 09/06/2020, 10:20, "SPM (Statistical Parametric Mapping) on behalf of Gianluca" <[log in to unmask] on behalf of [log in to unmask]> wrote:
>
> Dear SPM community,
>
> I have a problem with the inversion of the second-level parameters in my DCM study.
>
> Specifically, here’s what I’ve done :
>
> DCMs = spm_dcm_peb_fit ( GCM );
>
> M = struct();
>
> M.Q = 'all';
>
> Nsubj = 21;
>
> M.X = ones(Nsubj,1);
>
> field = {'A{1}’};
>
> PEB = spm_dcm_peb(GCM,M,field);
>
> [BMA,BMR] = spm_dcm_peb_bmc(PEB);
>
>
> So, after the first-level analysis, I perform a post-hoc search over the group parameters.
> The problem manifests when I call spm_dcm_peb : it converges after very few steps (9 steps) and the PEB model results in only ONE free parameter (here I report the output displayed in the command window).
> I searched in the code of the function for a plausible reason and I think this may be due to the prior covariances of the first-level parameters, that I realized to be zero or, for some of them, very close to.
>
> spm_dcm_peb output:
> VL Iteration 1 : F = 300896.78 dF: 0.0000 [-3.75]
> VL Iteration 2 : F = 300898.48 dF: 1.6991 [-3.50]
> VL Iteration 3 : F = 300899.40 dF: 0.9244 [-3.25]
> VL Iteration 4 : F = 300899.40 dF: 0.0008 [-3.00]
> VL Iteration 5 : F = 300899.40 dF: 0.0010 [-2.75]
> VL Iteration 6 : F = 300899.86 dF: 0.4574 [-2.50]
> VL Iteration 7 : F = 300899.90 dF: 0.0410 [-2.25]
> VL Iteration 8 : F = 300899.90 dF: 0.0410 [-3.25]
> VL Iteration 9 : F = 300899.90 dF: 0.0410 [-4.00]
> VL Iteration 9 : F = 300899.90 dF: 0.0410 [-4.00]
>
> spm_dcm_peb_bmc output:
> 0 out of 1 free parameters removed
>
> 1 models in Occams window:
> Model 1, p(m|Y)=1.00
> Averaging models in Occams window...
>
> Can someone help me to understand what did I do wrong ?
>
>
> Thanks in advance,
>
> Gianluca.
>
>
|