incorrect weights type in lmer
On 5/22/07, Sundar Dorai-Raj <sundar.dorai-raj at pdf.com> wrote:
Hi, all,
I'm receiving an error I don't understand regarding a weights argument
to lmer. Here's an example:
library(lme4)
set.seed(1)
tmp.df <- expand.grid(A = factor(1:3), B = 1:3, C = 1:10)
tmp.df$w <- as.integer(rpois(nrow(tmp.df), 50))
tmp.df$p <- 0.5 + with(tmp.df, ifelse(B%%2, -0.1, 0.1))
tmp.df$p <- with(tmp.df, p + ifelse(B%%2 & C%%2, -0.1, 0.1))
tmp.df$y <- rbinom(nrow(tmp.df), tmp.df$w, tmp.df$p)/tmp.df$w
tmp.df[2:3] <- lapply(tmp.df[2:3], factor)
fit <- lmer(y ~ A + (1 | B) + (1 | B:C), tmp.df, binomial, weights = w)
Error in lmer(y ~ A + (1 | B) + (1 | B:C), tmp.df, binomial, weights = w) :
object `weights' of incorrect type
What sort of object is lmer expecting for weights?
Thanks for pointing out the problem, Sundar. Although this is not documented the weights need to be double precision and you are using integers. Your example works with weights = as.double(w) or weights = as.numeric(w). Most of the time R will quietly coerce integers to numeric as needed but not in this case.