random effect variance per treatment group in lmer
"Douglas Bates" <bates at stat.wisc.edu> on Friday, July 13, 2007 at 12:16 PM -0500 wrote:
I'm afraid I don't understand what the expression rep(1:n.timepoints, n.subj.per.tx*2)*drug would mean. It seems that the variable drug is a factor and it doesn't make sense to multiply a factor by an integer variable.
rep(1:n.timepoints, n.subj.per.tx*2) was a cheesy way of turning time back into a quantitative predictor. Since rep(1:n.timepoints, n.subj.per.tx*2)*drug wasn't wrapped in I(), this expression in the context of a model formula indicates that there's a fixed linear effect of time, a main effect of drug, and an interaction term (in other words letting the fixed effect of time be different for the "D" condition than it is for the "P" condition).
"Douglas Bates" <bates at stat.wisc.edu> on Friday, July 13, 2007 at 12:16 PM -0500 wrote:
The easiest way out is to add variables to the dat.new data frame. Say dat.new$Dind <- as.numeric(dat.new$drug == "D") dat.new$Pind <- as.numeric(dat.new$drug == "P") (fm.het <- lmer(dv ~ ... + (0+Dind|Patient)+(0+Pind|Patient))
Yes, that would be clearer! As would adding a variable to the data frame for quantitative time! This would allow a fairly simple lmer call like fm.het <- lmer( dv ~ time.num*drug + (0+Dind|Patient) + (0+Pind|Patient), ... ) for a parameterization in terms of an interaction or fm.het <- lmer( dv ~ drug/time.num + (0+Dind|Patient) + (0+Pind|Patient), ... ) for a parameterization in terms of the time course being nested within level of drug
On 7/13/07, Afshartous, David <afshart at exchange.sba.miami.edu> wrote:
Alan,
Thanks for the suggestion. I noticed the following error msg for that lmer call:
( fm.het <- lmer( dv ~ rep(1:n.timepoints, n.subj.per.tx*2)*drug + ( 0
+ as.numeric(drug=="D") | Patient ) + ( 0 + as.numeric(drug=="P") | Patient ), data=dat.new ) ) Error: length(term) == 3 is not TRUE
I expect that the problem is due to "AsIs" terms in the model frame not being identified correctly in later function calls that build model matrices. Parsing model formulas and building the model frame and model matrices in general settings is a bit of a black art. The easiest way out is to add variables to the dat.new data frame. Say dat.new$Dind <- as.numeric(dat.new$drug == "D") dat.new$Pind <- as.numeric(dat.new$drug == "P") (fm.het <- lmer(dv ~ ... + (0+Dind|Patient)+(0+Pind|Patient)) I'm afraid I don't understand what the expression rep(1:n.timepoints, n.subj.per.tx*2)*drug would mean. It seems that the variable drug is a factor and it doesn't make sense to multiply a factor by an integer variable. I hope this helps, Doug Bates
I tried a few changes to the model but the error still exists; I'll keep checking. I assume the rationale for the structure of your lmer call, where you use as.numeric as opposed to just drug above, is to insure that you do not introduce a random effect for drug into the model? Regards, Dave
-----Original Message-----
From: Alan Cobo-Lewis [mailto:alanc at umit.maine.edu]
Sent: Wednesday, July 11, 2007 6:40 PM
To: r-sig-mixed-models at r-project.org
Cc: " "Afshartous at basalt.its.maine.edu; Afshartous, David;
Andrew Robinson
Subject: Re: random effect variance per treatment group in lmer
Dave,
How about using stratifying variance on level of drug using (
0 + as.numeric(drug=="D") | Patient ) + ( 0 +
as.numeric(drug=="P") | Patient ) Here's some code (whose sim
also builds in a fixed effect of time that applies only to
the Drug condition).
set.seed(500)
n.timepoints <- 8
n.subj.per.tx <- 20
sd.d <- 5; sd.p <- 2; sd.res <- 1.3
drug <- factor(rep(c("D", "P"), each = n.timepoints, times =
n.subj.per.tx)) drug.baseline <- rep( c(0,5),
each=n.timepoints, times=n.subj.per.tx ) Patient <-
rep(1:(n.subj.per.tx*2), each = n.timepoints)
Patient.baseline <- rep( rnorm( n.subj.per.tx*2, sd=c(sd.d,
sd.p) ), each=n.timepoints ) time <- factor(paste("Time-",
rep(1:n.timepoints, n.subj.per.tx*2), sep="")) time.baseline
<- rep(1:n.timepoints,n.subj.per.tx*2)*as.numeric(drug=="D")
dv <- rnorm( n.subj.per.tx*n.timepoints*2,
mean=time.baseline+Patient.baseline+drug.baseline, sd=sd.res
) dat.new <- data.frame(time, drug, dv, Patient) xyplot(
dv~time|drug, group=Patient, type="l", data=dat.new ) # fit
model treats time as a quantitative predictor ( fm.het <-
lmer( dv ~ rep(1:n.timepoints, n.subj.per.tx*2)*drug + ( 0 +
as.numeric(drug=="D") | Patient ) + ( 0 +
as.numeric(drug=="P") | Patient ), data=dat.new ) )
HTH,
alan
From: "Afshartous, David" <afshart at exchange.sba.miami.edu>
asked:
All, I didn't receive a response to the query below sent to the general R-help mailing list so figured I'd try this mailing list.
Apologies in
advance if this is an overly simplistic question for this
list; I just
started w/ lmer after not using lme for awhile. Cheers, Dave
__________________________________________________________ All, How does one specify a model in lmer such that say the random effect for the intercept has a different variance per treatment group? Thus, in the model equation, we'd have say b_ij represent the random effect for patient j in treatment group i, with variance
depending on
i, i.e, var(b_ij) = tau_i. Didn't see this in the docs or Pinherio & Bates (section 5.2 is specific for modelling within group errors). Sample
repeated measures
code below is for a single random effect variance, where the random
effect corresponds to patient.
cheers,
dave
z <- rnorm(24, mean=0, sd=1)
time <- factor(paste("Time-", rep(1:6, 4), sep="")) Patient
<- rep(1:4,
each = 6) drug <- factor(rep(c("D", "P"), each = 6, times =
2)) ## P =
placebo, D = Drug dat.new <- data.frame(time, drug, z,
Patient) fm =
lmer(z ~ drug + time + (1 | Patient), data = dat.new )
-- Alan B. Cobo-Lewis, Ph.D. (207) 581-3840 tel Department of Psychology (207) 581-6128 fax University of Maine Orono, ME 04469-5742 alanc at maine.edu http://www.umaine.edu/visualperception
_______________________________________________ R-sig-mixed-models at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
-- Alan B. Cobo-Lewis, Ph.D. (207) 581-3840 tel Department of Psychology (207) 581-6128 fax University of Maine Orono, ME 04469-5742 alanc at maine.edu http://www.umaine.edu/visualperception