patch for pedigremm
Hi David:
Yes, you can overwrite my version (if you install them) by reinstalling both
lme4 and pedigreemm from the CRAN website.
I will send you a copy for both lme4 and pedigreemm in a separate e-mail so
that they won't flood the mailing list. Note that they are tested in Linux
only so far.
Installation instruction: Put the two files in your home directory in Linux,
start R in Linux and execute the following lines:
install.packages(c("Rcpp", "RcppEigen", "minqa"));
install.packages("~/lme4-svn-1786b.tar.gz", repo=NULL, type="source");
install.packages("~/pedigreemm-0.2c.tar.gz", repo=NULL, type="source");
Hope this helps,
Roby Joehanes
On 7/17/12 8:05 PM, "David Aguirre-Davies" <d.aguirre at uq.edu.au> wrote:
Hi Roby, Thank you for the reply. Yes the model is exactly as you describe it (i.e., length(unique(dat$id)) == nrow(dat)). If I install your versions of lme4 and pedigreemm, and in doing so overwrite the existing versions, can I then overwrite your versions (should I need the old versions for some reason) by reinstalling lme4 from the cran web site? If this is the case, could you please send me your pre-patched versions of lme4 and pedigreemm and some instructions on how to get them going? Thank again for your help Regards David Aguirre -----Original Message----- From: Joehanes, Roby (NIH/NHLBI) [F] [mailto:roby.joehanes at nih.gov] Sent: Wednesday, 18 July 2012 1:09 AM To: David Aguirre-Davies Cc: r-sig-mixed-models at r-project.org Subject: Re: patch for pedigremm Hi David: I apologize for the late reply. The patch is meant to be implemented at the source code, not at R console. That is, you need to download the source from the code tracker and retrieve the correct revision number. Then, you can apply the patch. You will need to patch both your lme4 and your pedigreemm to make it work. I have a pre-patched versions, let me know if you want them. Note that if you install my version of lme4 and pedigreemm, your version of these packages will be overwritten. Also, I only tested them in Linux. I am not aware of whether they would work on Windows or Mac. What the patch is doing is actually to enable 1 observation per subject, which otherwise not available in the regular pedigreemm. In addition, I incorporated the latest advances of lme4 as the pedigreemm's back end. That being said, if the matrix A you mentioned is the relationship matrix, it should always be square regardless of the length of the IDs (or the discrepancies thereof). In pedigreemm, the matrix A will be constructed automatically from the pedigree (i.e., Ped.0) in a function called "relfactor". This same function will subset the matrix A automatically to match the IDs that appear in your data. So, there is no need of extra work or even my patch for this type of problem (i.e., length(dat$id) != length(id)). The way you specified the ID discrepancies (i.e., length(dat$id) = dim(A)[1] & length(id) = dim(A)[2]) is a bit unclear to me, and I take it to mean as (length(dat$id) != length(id)). Looking at the error message that you presented, however, it seems that there is one ID per observation (i.e., length(unique(dat$id)) == nrow(dat)). That is the use case scenario where you would need my patch. Hope this helps, Roby On 6/26/12 11:50 PM, "David Aguirre-Davies" <d.aguirre at uq.edu.au> wrote: Hi Roby, Sorry for my incompetence, but running patches on packages is beyond my R knowledge at this stage. I would like to run the following model using pedigreemm and I get the error message below,
fm1 <-pedigreemm(value.p ~ gen + (1|id), data=dat, pedigree = list(id=Ped.0))
Error in function (fr, FL, start, REML, verbose) : Number of levels of a grouping factor for the random effects must be less than the number of observations I have followed the clues on the web, and I have attempted to implement the patch you have provide (https://r-forge.r-project.org/tracker/index.php?func=detail&aid=1928&group_id =60&atid=300), but unfortunately I have been unsuccessful. So my question is, how can I implement the patch you provide to run an animal model where length(dat$id) = dim(A)[1] & length(id) = dim(A)[2]? Is there are trick to implementing the patch as cut and paste into the R console doesn't seem to work for me. Any assistance would be much appreciated. Regards David Aguirre
Roby Joehanes Research Associate Roby.Joehanes at nih.gov Building 12A, Room 2007 National Institutes of Health (NIH) Bethesda, MD 20892 P: (301) 402-8702 F: (301) 480-0028 or (301) 402-2867