# [R] nlme fixed effects specification

ivo welch ivowel at gmail.com
Fri May 4 22:08:54 CEST 2007

```hi doug:  yikes.  could I have done better?  Oh dear.  I tried to make
my example clearer half-way through, but made it worse.  I meant

set.seed(1);
fe = as.factor( as.integer( runif(100)*10 ) ); y=rnorm(100); x=rnorm(100);
print(summary(lm( y ~ x + fe)))
<deleted>
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept)   0.1128     0.3680    0.31     0.76
x             0.0232     0.0960    0.24     0.81
fe1          -0.6628     0.5467   -1.21     0.23
<deleted more fe's>
Residual standard error: 0.949 on 89 degrees of freedom
Multiple R-Squared: 0.0838,     Adjusted R-squared: -0.0192
F-statistic: 0.814 on 10 and 89 DF,  p-value: 0.616

I really am interested only in this linear specification, the
coefficient on x (0.0232) and the R^2 of 8.38% (adjusted -1.92%).  If
I did not have so much data in my real application, I would never have
to look at nlme or nlme4.  I really only want to be able to run this
specification through lm with far more observations (100,000) and
groups (10,000), and be done with my problem.

now, with a few IQ points more, I would have looked at the lme
function instead of the nlme function in library(nlme).    [then
again, I could understand stats a lot better with a few more IQ
points.]  I am reading the lme description now, but I still don't
understand how to specify that I want to have dummies in my
specification, plus the x variable, and that's it.  I think I am not
understanding the integration of fixed and random effects in the same
R functions.

thanks for pointing me at your lme4 library.  on linux, version 2.5.0, I did
R CMD INSTALL matrix*.tar.gz
R CMD INSTALL lme4*.tar.gz
and it installed painlessly.  (I guess R install packages don't have
knowledge of what they rely on;  lme4 requires matrix, which the docs
state, but having gotten this wrong, I didn't get an error.  no big
deal.  I guess I am too used to automatic resolution of dependencies
from linux installers these days that I did not expect this.)

> library(lme4)
> lmer(y~x+(1|fe))
Linear mixed-effects model fit by REML
Formula: y ~ x + (1 | fe)
AIC BIC logLik MLdeviance REMLdeviance
282 290   -138        270          276
Random effects:
Groups   Name        Variance       Std.Dev.
fe       (Intercept) 0.000000000445 0.0000211
Residual             0.889548532468 0.9431588
number of obs: 100, groups: fe, 10

Fixed effects:
Estimate Std. Error t value
(Intercept)  -0.0188     0.0943  -0.199
x             0.0528     0.0904   0.585

Correlation of Fixed Effects:
(Intr)
x -0.022
Warning messages:
1: Estimated variance for factor 'fe' is effectively zero
in: `LMEoptimize<-`(`*tmp*`, value = list(maxIter = 200L, tolerance =
0.0000000149011611938477,
2: \$ operator not defined for this S4 class, returning NULL in: x\$symbolic.cor

Without being a statistician, I can still determine that this is not
the model I would like to work with.  The coefficient is 0.0528, not
0.0232.  (I am also not sure why I am getting these warning messages
on my system, either, but I don't think it matters.)

is there a simple way to get the equivalent specification for my smple
model, using lmer or lme, which does not choke on huge data sets?

regards,

/ivo

```