[R-sig-ME] contextual effects in 3-level models

Ben Bolker bbo|ker @end|ng |rom gm@||@com
Thu Sep 9 17:56:08 CEST 2021


   I haven't looked at this carefully but I wonder if this is relevant:

van de Pol, M., and J. Wright. “A Simple Method for Distinguishing 
Within-versus between-Subject Effects Using Mixed Models.” Animal 
Behaviour 77, no. 3 (2009): 753–58.


On 9/9/21 11:53 AM, Thierry Onkelinx via R-sig-mixed-models wrote:
> Dear Timothy,
> 
> This won't work as your averaged X's will be highly correlated with each
> other and with the original X.
> 
> I often find it easier to reason on a mathematical model. How would you
> translate your 'contextual' effects into an equation? Or at least
> clarify what a 'contextual' effect is.
> 
> Best regards,
> 
> ir. Thierry Onkelinx
> Statisticus / Statistician
> 
> Vlaamse Overheid / Government of Flanders
> INSTITUUT VOOR NATUUR- EN BOSONDERZOEK / RESEARCH INSTITUTE FOR NATURE AND
> FOREST
> Team Biometrie & Kwaliteitszorg / Team Biometrics & Quality Assurance
> thierry.onkelinx using inbo.be
> Havenlaan 88 bus 73, 1000 Brussel
> www.inbo.be
> 
> ///////////////////////////////////////////////////////////////////////////////////////////
> To call in the statistician after the experiment is done may be no more
> than asking him to perform a post-mortem examination: he may be able to say
> what the experiment died of. ~ Sir Ronald Aylmer Fisher
> The plural of anecdote is not data. ~ Roger Brinner
> The combination of some data and an aching desire for an answer does not
> ensure that a reasonable answer can be extracted from a given body of data.
> ~ John Tukey
> ///////////////////////////////////////////////////////////////////////////////////////////
> 
> <https://www.inbo.be>
> 
> 
> Op do 9 sep. 2021 om 17:38 schreef Timothy MacKenzie <fswfswt using gmail.com>:
> 
>> Dear Colleagues,
>>
>> I'm revising my question for better clarity. Suppose we have two
>> nested grouping variables (ID1 and ID2). The data structure looks like
>> below.
>>
>> To obtain the contextual effects for ID1 and ID2, I wonder which
>> option is appropriate?
>>
>> #-- Option 1: Create mean of X across ID1 (X_ave_ID1) and mean of X
>> across ID2 *ignoring* ID1 (X_ave_ID2)
>> #-- Option 2: Create mean of X across ID1 (X_ave_ID1) and mean of X
>> across ID2    *within*  ID1 (X_ave_ID2)
>>
>> For both options, then, I will fit (in lme4::lmer()):
>>
>> y ~ X + X_ave_ID1 + X_ave_ID2 + (1 | ID1 / ID2)
>>
>> Thank you,
>> Tim
>>
>> #------ DATA  STRUCTURE AND R CODE:
>>
>> ID1    ID2                   X                      y
>> 1       1                       0.474111397    1.9534671
>> 1       1                      -0.712228120   0.9355230
>> 1       2                      -0.009957293   1.1088756
>> 1       2                      -1.237918646   0.8675550
>> 2       1                      -0.554944765   2.7831133
>> 2       1                      -0.320668268   0.1479290
>> 2       2                       1.066993108   0.1688187
>> 2       2                     -1.084870417    1.0536264
>>
>> library(dplyr)
>>
>> #-- Option 1:
>>      data %>%
>>      group_by(ID1) %>%
>>      mutate(X_ave_ID1 = mean(X)) %>%
>>      group_by(ID2) %>%
>>      mutate(X_ave_ID2 = mean(X))
>>
>> #-- Option 2:
>>    data %>%
>>    group_by(ID1) %>%
>>    mutate(X_ave_ID1 = mean(X)) %>%
>>    group_by(ID2, .add = TRUE) %>%
>>    mutate(X_ave_ID2 = mean(X))
>>
>> On Mon, Sep 6, 2021 at 1:31 PM Timothy MacKenzie <fswfswt using gmail.com>
>> wrote:
>>>
>>> Dear All,
>>>
>>> Suppose X is a continuous predictor that can vary within and between
>>> two nested grouping variables in a 3-level linear mixed model:
>>>
>>> effect.size ~ X + (1 | studies/outcomes)
>>>
>>> How can I obtain the within effect of X, contextual effect of X at
>>> level 2, and contextual effect of X at level 3?
>>>
>>> I can think of two options but wonder which one makes more sense
>>> (below)?   For both options, I will fit:
>>>
>>> effect.size ~ X + X_ave_study + X_ave_outcome + (1 | studies/outcomes)
>>>
>>> Thank you,
>>> Tim
>>>
>>> library(dplyr)
>>>
>>> #-- Option 1:
>>>      data %>%
>>>      group_by(study) %>%
>>>      mutate(X_ave_study = mean(X)) %>%
>>>      group_by(outcome) %>%                         ## Here mean of
>>> outcome *ignoring* studies is computed
>>>      mutate(X_ave_outcome = mean(X))
>>>
>>> #-- Option 2:
>>>    data %>%
>>>    group_by(study) %>%
>>>    mutate(X_ave_study = mean(X)) %>%
>>>    group_by(outcome, .add = TRUE) %>%     ## Here mean of outcome
>>> *within* each study is computed
>>>    mutate(X_ave_outcome = mean(X))
>>
>> _______________________________________________
>> R-sig-mixed-models using r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
>>
> 
> 	[[alternative HTML version deleted]]
> 
> _______________________________________________
> R-sig-mixed-models using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> 

-- 
Dr. Benjamin Bolker
Professor, Mathematics & Statistics and Biology, McMaster University
Director, School of Computational Science and Engineering
Graduate chair, Mathematics & Statistics



More information about the R-sig-mixed-models mailing list