Skip to content

Bivariate random regression model in MCMCglmm to estimate selection on reaction norm slopes

2 messages · Phillip Gienapp, Jarrod Hadfield

#
Dear all,

First a bit of background: I currently work on an anlysis of phenotypic 
plasticity of avian phenology in response to temperature. Using a random 
regression model I found that individual reaction norms (defined by 
slope and intercept) vary among individuals, i.e. some individuals 
change their phenology more strongly in response to temperatures than 
others and also that some individuals have a consistently earlier 
phenology than others.

I now want to test whether there is selection on reaction norm slopes, 
i.e. whether individuals with steeper/shallower slope have a 
higher/lower fitness. This means I have to fit a bivariate random 
regression model but only one trait (phenology) should be regressed 
against temperature. For the random effects part this should give me a 
3x3 covariance matrix with variation in slopes, intercepts, fitness plus 
all the covariances and then the covariance between slope and fitness 
indicates selection on reaction norm slopes.

I figured how to regress only phenology and not fitness against 
temperature for the fixed effects part but am still struggling with the 
syntax for the random effects part.


The univariate random regression model (omitting obvious syntax parts) is:

phenology~age + temp, random=~us(1+temp):individual


For the multivariate model I came up with:

cbind(phenology,fitness)~trait:age + at.level(trait,1):temp, 
random=~us(at.level(trait,1):(1+mt2):at.level(trait,2):1):individual, 
rcov=~us(trait):units

but curiously this fits only a single variance for individual and not 
the desired 3x3 matrix...

I hope I managed to explain my problem clearly enough (maybe there was 
too much non-technical detail...). Any ideas to fit the desired model 
are highly welcome!


Best,
Phillip
9 days later
#
Hi Phillip,

The correct syntax (assuming fitness is an annual measure so you have  
repeat records?) is:


us(trait+at.level(trait,1):mt2):individual

Cheers,

Jarrod


Quoting Phillip Gienapp <phillip.gienapp at helsinki.fi> on Wed, 18 Mar  
2015 11:25:07 +0100: