[R-sig-ME] adding a kinship matrix to a GLMM

mhorton at uchicago.edu mhorton at uchicago.edu
Thu Jan 26 17:10:45 CET 2012


Thanks David. I'll see if I can fit a kinship matrix using the other packages you show. 
It would also be great to setup the same test case to see how quickly any of this will 
actually run. I can't do that immediately, but I will try to post the results next week.

---- Original message ----
>Date: Thu, 26 Jan 2012 10:33:21 +1000 (EST)
>From: "David Duffy" <David.Duffy at qimr.edu.au>  
>Subject: Re: [R-sig-ME] adding a kinship matrix to a GLMM  
>To: <mhorton at uchicago.edu>
>Cc: <r-sig-mixed-models at r-project.org>
>
>On Tue, 24 Jan 2012, mhorton at uchicago.edu wrote:
>
>> I'm trying this with MASS' glmmPQL, which seems to
>> allow the user to provide an "an optional correlation structure".
>>
>> There are a few classes that extend corStruct, but if I try corSymm, things seem
>> to work with:
>>
>> I'm writing to ask is this the best model formulation?
>> Also, if I add a co-factor 'block', which has 6 levels (subjects do not occur in all
>> blocks), I get a lot of NA errors:
>> test <- glmmPQL( response ~ snps_i + as.factor(block)+ offset(log(offset)),
>>          random=~1|subject,correlation=cs.K, family="quasipoisson" );
>> iteration 1
>> iteration 2
>> iteration 3
>> Error in na.fail.default(list(subject = c(1L, 1L, 1L, 2L, 2L, 2L, 3L,  :
>>  missing values in object
>>
>> Again, is there a better model formula?  Is corSymm even doing what I think it is
>> doing here?
>
>I think so.  That error might be arising from incomplete data, as it says 
>(do debug(lme) to see where, as this is what glmmPQL calls).  PQL might 
>not be giving brilliant estimates of the random effects, but I presume you 
>are most interested in snps_1.  Here is one result from a simulation of 
>mine for a binomial trait, using R GLMM packages, augmented by your 
>PQL
>
>head(x)
>   ped id fa mo sex trait locus
>1   1  1 NA NA   m  <NA>   1/2
>2   1  2 NA NA   f  <NA>   1/2
>3   1  3  1  2   f     n   1/2
>4   1  4  1  2   f     y   1/1
>5   1  5  1  2   f     n   1/1
>6   2  6 NA NA   f  <NA>   1/2
>
>
>library(pedigreemm)
>ped <- pedigree(x$fa, x$mo, x$id)
>pedigreemm(trait=="y" ~ (1|id), pedigree=list(id=ped), family=binomial(), 
>data=x)
>pedigreemm(trait=="y" ~ (1|id), pedigree=list(id=ped), 
>family=binomial(link=probit), data=x)
>
>library(AnimalINLA)
>ped2 <- x[,2:4]
>ped2[is.na(ped2)] <- 0
>Ainv <- compute.Ainverse(ped2)
>pheno <- data.frame(id=x$id, trait=(x$trait=="y"), Individual=x$id)
>pheno <- pheno[complete.cases(pheno$trait),]
>m1 <- animal.inla("trait", genetic="id", Ainverse=Ainv, data=pheno, 
>type.data = "binomial")
>summary(m1)
>
>library(MASS)
>library(kinship)
>K <- kinship(x$id, x$fa, x$mo)
>observed <- !is.na(x$trait)
>K <- K[observed, observed]
>cs.K <- corSymm(2*K[lower.tri(K)],fixed=T)
>id <- as.matrix(as.factor(x$id[observed]))
>colnames(id) <- "id"
>cs.K <- Initialize(cs.K,data=id)
>pql1 <- glmmPQL(trait ~ 1, random=~1|id,
>                 correlation=cs.K,
>                 data=x[observed,], family="binomial
>summary(pql1)
>
>library(MCMCglmm)
>pheno <- data.frame(animal=x$id, sire=x$fa, dam=x$mo, y=(x$trait=="y"))
>g1 <- MCMCglmm(y~1, random=~animal, pedigree=pheno[,1:3],
>                family="categorical", data=pheno, verbose=FALSE)
>summary(g1)
>g2 <- MCMCglmm(y~1, random=~animal, pedigree=pheno[,1:3],
>                family="ordinal", data=pheno, verbose=FALSE)
>summary(g2)
>
>-----------------------------
>logistic-normal
>                  RE SD
>pedigreemm       0.847
>AnimalINLA       0.671
>glmmPQL          1.185
>MCMCglmm         1.389
>
>
>-- 
>| David Duffy (MBBS PhD)                                         ,-_|\
>| email: davidD at qimr.edu.au  ph: INT+61+7+3362-0217 fax: -0101  /     *
>| Epidemiology Unit, Queensland Institute of Medical Research   \_,-._/
>| 300 Herston Rd, Brisbane, Queensland 4029, Australia  GPG 4D0B994A v




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