[R-sig-ME] [R] understanding I() in lmer formula

Don Cohen don-r-help at isis.cs3-inc.com
Sat Jun 17 05:48:41 CEST 2017

(Probably I should change the subject line and admit that this is no
longer about I().)

Emmanuel Curis writes:
 > L = \prod_{i=1}^n \prod_{,j=1}^{n_i} F'(Yij=y_ij|Ai=ai,Bi=bi) G'(Ai=ai, Bi=Bi)
 > where F' is the density of a Gaussian of mean ai + bi * days_{i,j} and
 > variance sigma (the variance of epsilon, the residual) and G' the
 > joint density of a binormal Gaussian vector of expectation (uA, uB)
 > and of covariance matrix Sigma = ( (f, g ), ( g, h ) ) and you
 > minimize -log L. i the subject index, j the measure index within the subject.
 > Once you wrote it, you can use dnorm to compute it, and use the logLik
 > function to check the results.

I'm trying to do this and things are not working out quite as I hoped.
Starting with the result of lmer on my sample data:
  > summary(xm) 
  Linear mixed model fit by maximum likelihood  ['lmerMod'] 
  Formula: xout ~ xin + (xin | xid) 
     Data: xd 

       AIC      BIC   logLik deviance df.resid  
     -16.2    -15.7     14.1    -28.2        2  

  Scaled residuals:  
       Min       1Q   Median       3Q      Max  
  -0.89383 -0.29515  0.05005  0.33286  0.80360  

  Random effects: 
   Groups   Name        Variance  Std.Dev. Corr  
   xid      (Intercept) 2.814e-03 0.053051       
            xin         6.583e-03 0.081134 -0.03 
   Residual             4.917e-05 0.007012       
  Number of obs: 8, groups:  xid, 3 

  Fixed effects: 
              Estimate Std. Error t value 
  (Intercept)  0.06061    0.03172   1.911 
  xin          1.00397    0.04713  21.301 

  Correlation of Fixed Effects: 
  xin -0.058 

  > coef(xm) 
    (Intercept)      xin 
  a  0.09870105 1.100632 
  b -0.01183068 1.008098 
  c  0.09496031 0.903172 

The good news is that I seem to be correctly computing the predicted
values, e.g., 0.09870105 + 1.100632 * xin for a data point in
group "a" gives a value which differs from its xout value by the same
amount as the corresponding value of xm at resp$wtres (which I surmise
is a vector of the residues).
So I expect that F' will be 
 dnorm(xm at resp$wtres ...)
The mean should be zero, by design ...
  > mean(xm at resp$wtres) 
  [1] -2.775558e-17 
as expected, essentially zero

The sd to pass to dnorm should be what?  Is that the .007012 from 
this line above?
   Residual             4.917e-05 0.007012       
That's not very close to what I see in the actual residuals:
  > var(xm at resp$wtres) 
  [1] 1.566477e-05 
  > sd(xm at resp$wtres) 
  [1] 0.003957874 
And I'd expect the value to be at least close to the actual SD of
the residuals.  If the correct value is neither of the two above,
please tell me what it is (or how to find it).

Then for G, I'm even less certain.  I suspect I'm supposed to use
The first argument would be one of the lines from the coef output above,
such as c(0.09870105, 1.100632), right?
The second (mean) would be the estimates of the fixed effects,
 c(0.06061,1.00397), right?
And the third, is supposed to be the variance-covariance matrix.
That would be your 
 f g
 g h
where f and h, are the two variances shown under:
  Random effects: 
   Groups   Name        Variance  Std.Dev. Corr  
   xid      (Intercept) 2.814e-03 0.053051       
            xin         6.583e-03 0.081134 -0.03 
   Residual             4.917e-05 0.007012       
so f = 2.814e-03, h = 6.583e-03
and g, I *think* would be the product of the two SD's and the Corr,
or 0.053051 * 0.081134 * -0.03
Is that all correct?

I hope you can see some errors above, since this doesn't look like
it's going to end up computing anything like the logLik of 14.1 !

Also, I have the feeling that all of this output is rounded, and that
I'd get better results (or at least results that agree with the other
results computed in the model) if I could find these data in the model
rather than copying them from the output.  I've found some of it, like
the residues (at least that's what I think wtres is!), but other data
above, such f,g,h I have not yet found.  If you can tell me how to find
(or compute) them, that would be helpful.

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