Google Summer of Code 2015 is coming to an end. During this summer, I have learned too many things to list here about statistical modeling, Ruby and software development in general, and I had a lot of fun in the process!
(EDIT: I have also written a more theoretical blog post on the topic.)
The following shows an application of class
LMM from the Ruby gem
mixed_models to SNP data (single-nucleotide polymorphism) with known pedigree structures. The family information is prior knowledge that we can model in the random effects of a linear mixed effects model.
A few days ago I started working on hypotheses tests and confidence intervals for my project
mixed_models, and I got pretty surprised by certain things.
I made some more progress on my Google Summer of Code project MixedModels. The linear mixed models fitting method is now capable of handling non-numeric (i.e., categorical) predictor variables, as well as interaction effects. Moreover, I gave the method a user friendly R-formula-like interface. I will present these new capabilities of the Ruby gem with an example. Then I will briefly describe their implementation.
During the last two weeks I made some progress on my Google Summer of Code project.
The Ruby gem is now capable of fitting linear mixed models. In this short blog post I want to give an example, and compare the results I get in Ruby to those obtained by
lme4 in R.
This is the final part of my analysis of the function
lmer, which is used to fit linear mixed models in the R package
lme4. In two previous blog posts, we have seen the general layout of the function
lmer, the dealings with the R model formula, and the setting up of the objective function for the optimization (see part 1 and part 2).
Last time I started to analyze the function
lmer that is used to fit linear mixed models in the R package
lme4. I have delineated the general steps taken by
lmer, and looked at the employed formula module in more detail. The formula module evaluates the provided R model formula to model matrices, vectors and parameters. The next step is to use these to define the objective function that needs to be minimized, which is the profiled deviance or the profiled REML criterion in this case. The objective function is returned by the function
mkLmerDevfun which is dissected in what follows.
This blog posts marks the start of my Google Summer of Code project with the Ruby Science Foundation, where I will develop mixed linear models software for Ruby. As a preparation for my GSoC project, I will dedicate a couple of blog posts to a meticulous analysis of
lme4 code (so that I can steal all the ideas from it!).