[R] lmer(): nested and non-nested factors in logistic regression

Andrew Gelman gelman at stat.columbia.edu
Tue Jan 10 20:29:00 CET 2006


Thanks to some help by Doug Bates (and the updated version of the Matrix 
package), I've refined my question about fitting nested and non-nested 
factors in lmer().  I can get it to work in linear regression but it 
crashes in logistic regression.  Here's my example:

# set up the predictors

n.age <- 4
n.edu <- 4
n.rep <- 100
n.state <- 50
n <- n.age*n.edu*n.rep
age.id <- rep (1:n.age, each=n.edu*n.rep)
edu.id <- rep (1:n.edu, n.age, each=n.rep)
age.edu.id <- n.edu*(age.id - 1) + edu.id
state.id <- sample (1:n.state, n, replace=TRUE)

# simulate the varying parameters

a.age <- rnorm (n.age, 1, 2)
a.edu <- rnorm (n.edu, 3, 4)
a.age.edu <- rnorm (n.age*n.edu, 0, 5)
a.state <- rnorm (n.state, 0, 6)

# simulate the data and print to check that i did it right

y.hat <- a.age[age.id] + a.edu[edu.id] + a.age.edu[age.edu.id] + 
a.state[state.id]
y <- rnorm (n, y.hat, 1)
print (cbind (age.id, edu.id, age.edu.id, state.id, y.hat, y))

# this model (and simpler versions) work fine:

fit.1 <- lmer (y ~ 1 + (1 | age.id) + (1 | edu.id) + (1 | age.edu.id) + 
(1 | state.id))

# now go to logistic regression

ypos <- ifelse (y > mean(y), 1, 0)

# these work fine:

fit.2 <- lmer (ypos ~ 1 + (1 | age.id) + (1 | edu.id) + (1 | 
age.edu.id), family=binomial(link="logit"))
fit.3 <- lmer (ypos ~ 1 + (1 | age.id) + (1 | edu.id) + (1 | state.id), 
family=binomial(link="logit"))

# this one causes R to crash!!!!!!!

fit.4 <- lmer (ypos ~ 1 + (1 | age.id) + (1 | edu.id) + (1 | age.edu.id) 
+ (1 | state.id), family=binomial(link="logit"))

--

All help appreciated.  This is for our book on regression and multilevel 
models, and it would be great if people could get started fitting these 
models in R before having to do the more elaborate modeling in Bugs.

Andrew

-- 
Andrew Gelman
Professor, Department of Statistics
Professor, Department of Political Science
gelman at stat.columbia.edu
www.stat.columbia.edu/~gelman

Tues, Wed, Thurs:  
  Social Work Bldg (Amsterdam Ave at 122 St), Room 1016
  212-851-2142
Mon, Fri:
  International Affairs Bldg (Amsterdam Ave at 118 St), Room 711
  212-854-7075

Mailing address:
  1255 Amsterdam Ave, Room 1016
  Columbia University
  New York, NY 10027-5904
  212-851-2142
  (fax) 212-851-2164




More information about the R-help mailing list