I have a quite complex psychophysiological data dependant of different nested data in a repeated measures experiment.
The first nested structure comes from the data collection were there are several blocks containing several trials with 3 repetitions per trial. The second comes from grouping as we are measuring the adjustment in a particular task between a pair of participants in this repetitions of the same trial.
I'd like to do various measurements within pair of subjects but I always end up having the same constraint with the nested data.
The result of not having a good structured data makes the models I try to fit have enormous amounts of df wich consequently make me having irrelevant models (that explain only a ridiculous amount of variability).
Logic tells me it should be nested by random effects twice:
(1|CoupleID/SubjectID) <- Regarding the nesting of the subjects (1|Block/Trial/TrialRep) <- Regarding at what point in the experiment was the response data collected
Therefore, this would be some of the models I would be interested in to be served as an example, so I can relate a particular response to a behavioural measurement:
1. lmer(electrode_response~TrialRep) 2. lmer(electrode_response~divergence_withinparticipants) 3. lmer(electrode_response~participant_adjustment)
The random effects term I am trying looks like this:
Which a priori could look like it gives a good explanation:
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest'] Formula: electrode_response ~ TrialRep + (TrialRep | SubjectID) + (1 | CoupleID/SubjectID) + (1 | Block/Trial/TrialRep) Data: finaldb Control: lmerControl(optimizer = "optimx", optCtrl = list(method = "nlminb")) REML criterion at convergence: 80726 Scaled residuals: Min 1Q Median 3Q Max -5.3489 -0.5861 0.0203 0.6204 6.7150 Random effects: Groups Name Variance Std.Dev. Corr TrialRep:(Trial:Block) (Intercept) 0.82127 0.9062 Trial:Block (Intercept) 0.05282 0.2298 SubjectID:CoupleID (Intercept) 9.21819 3.0361 SubjectID (Intercept) 19.82985 4.4531 TrialRep 3.16028 1.7777 -1.00 CoupleID (Intercept) 2.03290 1.4258 Block (Intercept) 0.08479 0.2912 Residual 100.53917 10.0269 Number of obs: 10800, groups: TrialRep:(Trial:Block), 300; Trial:Block, 100; SubjectID:CoupleID, 36; SubjectID, 36; CoupleID, 18; Block, 4 Fixed effects: Estimate Std. Error df t value Pr(>|t|) (Intercept) 8.5483 0.9857 24.1529 8.672 6.98e-09 *** TrialRep -1.8157 0.3254 37.6691 -5.581 2.20e-06 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Correlation of Fixed Effects: (Intr)
As you can see I'm using an optimizer, but even with this I often, in the data collected in some electrodes, can find the subsequent warnings, even though I use the same nesting structure in the data:
boundary (singular) fit: see ?isSingular Warning message: In optwrap(optimizer, devfun, getStart(start, rho$lower, rho$pp), : convergence code 1 from optimx
Warning messages: 1: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : unable to evaluate scaled gradient 2: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : Model failed to converge: degenerate Hessian with 1 negative eigenvalues 3: Model failed to converge with 1 negative eigenvalue: -7.8e-01
Wich I fail to comprehend. Also, the Rsq I get with
MuMIn package tells me not a lot is explained by my model.
> r.squaredGLMM(electrode_response) R2m R2c [1,] 0.01769641 0.1905829
I would really appreciate some feedback on this matter, I have gone out of ideas.