Skip to content
Back to formatted view

Raw Message

Message-ID: <loom.20131009T191009-198@post.gmane.org>
Date: 2013-10-09T17:45:19Z
From: Ben Bolker
Subject: plot log transformed variable with Effects package

<John.Morrongiello at ...> writes:

> 
> Hi list
> 
> I'm having trouble plotting a mixed model that includes log transformed
(or any transformed) terms.
> 
library(lme4)
library(effects)
data(cake, package="lme4")
> 
> ###this works
fm1 <- lmer(angle ~ recipe * temperature
 + (1|recipe:replicate), 
  cake, REML = FALSE)

plot(Effect(c('recipe','temperature'), fm1))
##but this doesn't (log transformed angle)

fm2 <- lmer(log(angle) ~ recipe * temperature + (1|recipe:replicate), 
 cake, REML = FALSE)

plot(Effect(c('recipe','temperature'), fm2))
> 
> ###returns the error:
 
> Error in plot(Effect(c("recipe", "temperature"), fm2)) :
> 
> error in evaluating the argument 'x' in selecting a method for function
> 'plot': Error in eval(expr, envir,
> enclos) : object 'angle' not found
> 
> However, including log-transformed terms works for a simple linear model
> 
> mod <- lm(log(prestige) ~ income*type, data=Prestige)
> 
> plot(Effect(c("income","type"), mod))
 
> Including a function in a model (e.g. fm2) used to work in an older
> version of the 'effects' package (sorry can't version) but obviously
> not anymore. Any thoughts on how to get fm2 to work without having
> to transform variables beforehand, if it is indeed still possible?

  This is probably something to take up with the maintainer of
the 'effects' package, who in turn might have to consult the lme4
maintainers.  The proximal problem occurs in 

  plot -> Effect -> Effect.merMod -> Effect.mer -> Effect ->
mer.to.glm

  There is a 'data' object that appears to be coming from the
model.frame() of the original object, but I haven't tracked its
source down yet -- but the problem is that it has log(angle) rather
than angle as a column ...