[R-sig-ME] adding a kinship matrix as a random covariate

Federico Calboli f.calboli at imperial.ac.uk
Mon Nov 11 21:02:12 CET 2013


[This email might, or might have not, bounced, so I'm sending it a second time.  Apologies if you receive multiple copies]

Hi All,

I am possibly not up to date on using R mixed models when my random covariate is a Kinship matrix (from genetic data, not pedigree).

I have a data frame (called my.data), with m rows and 126 columns.  The columns are the phenotypes (quantitative) and a number of covariates, plus the genotype (coded as x/y, where y and y are microsatellite lengths).  Independently I have a m by m matrix of kinship values, derived from the genetic data.

All looks like:

> my.data

  id temp     bw    bl dt        rbw       rbl  sex  MSA  MSB  MSC  MSD  MDE  MSF  MSG  MSH
1   1   16 0.8707 16.66 54 0.01612407 0.3085185    m 240/256 162/166 256/256 123/123    <NA> 120/156 331/335 115/115
2   2   16 0.8644 16.91 54 0.01600741 0.3131481    m 268/270 162/162 256/256 123/123 361/373 120/156    <NA> 115/119
3   3   16 0.8464 17.25 54 0.01567407 0.3194444    m 240/268 162/162 272/272 123/123 353/361 120/120    <NA> 115/115
4   4   16 0.9077 18.16 54 0.01680926 0.3362963 <NA> 256/270 162/162    <NA> 123/123 353/361 120/120    <NA> 115/119
5   5   16 0.9075 18.05 53 0.01712264 0.3405660    f    <NA>    <NA>    <NA> 111/115 353/361 120/120    <NA> 115/115
6   6   16 0.8296 17.36 53 0.01565283 0.3275472    f 268/270 162/162    <NA> 111/123 353/361 120/156    <NA> 115/119
7   7   16 0.8354 17.74 51 0.01638039 0.3478431    f    <NA>    <NA>    <NA> 115/123    <NA> 120/156    <NA> 115/119
8   8   16 0.8614 16.84 53 0.01625283 0.3177358    f    <NA> 162/162 256/256 123/123    <NA> 120/156    <NA> 115/119
9   9   16 0.7756 18.22 54 0.01436296 0.3374074    f 268/270    <NA> 272/272 115/123    <NA> 120/120    <NA> 115/115
10 10   16 0.8076 16.37 53 0.01523774 0.3088679    f    <NA> 162/172    <NA> 115/123 361/373 120/120    <NA> 115/115

and the kinship matrix:

> Kinship[1:6, 1:6]
         [,1]      [,2]      [,3]      [,4]      [,5]      [,6]
[1,] 0.5438596 0.4035088 0.3750000 0.3618421 0.3728070 0.3771930
[2,] 0.4035088 0.5614035 0.3903509 0.4298246 0.3925439 0.3925439
[3,] 0.3750000 0.3903509 0.5438596 0.3399123 0.3179825 0.3991228
[4,] 0.3618421 0.4298246 0.3399123 0.5219298 0.3771930 0.3662281
[5,] 0.3728070 0.3925439 0.3179825 0.3771930 0.5175439 0.3662281
[6,] 0.3771930 0.3925439 0.3991228 0.3662281 0.3662281 0.5833333

I tried in lme4 the following:

lmer(all$bw ~ all$MSA + all$temp + all$sex + all$dt + (1|Kinship))

returns

Error in `[[<-.data.frame`(`*tmp*`, i, value = c(233L, 174L, 161L, 162L,  : 
 replacement has 384120 rows, data has 485


I tried in nlme this:

lme(all$bw ~ all$MSA + all$temp + all$sex + all$dt, random = ~ 1|Kinship, na.action = na.omit)
Error in eval(expr, envir, enclos) : object 'bw' not found

If I put the kinship in my.data

> my.data$K = Kinship

lme(bw ~ MSA + temp + sex + dt, random = ~ 1|K, data = my.data, na.action =  na.omit)
Error in `row.names<-.data.frame`(`*tmp*`, value = origOrder) : 
 invalid 'row.names' length

Obviously using a m by m matrix is not a good way of specifying a random effect.  Given my data, which is not going to change, is there a way of using the K matrix as a random covariate?  alternatively, which packages would allow me to do so?  Finally, I will admit it openly, from the start.  I am after a p-value, ideally from an anova, to see if the different genotypes at each locus have an effect or not.  

Best

F



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