I am looking for a simple way to extract (and construct) the least squares of the means of the indicated combinations of levels of one factor for each level of another factor.
Sample data:
set.seed(1) model.data <- data.frame(time = factor(paste0("day", rep(1:8, each = 16))), animal = factor(rep(1:16, each = 8)), tissue = factor(c("blood", "liver", "kidney", "brain")), value = runif(128) )
Setting custom contrasts for the time factor:
library("phia") custom.contrasts <- as.data.frame(contrastCoefficients( time ~ (day1+day2+day3)/3 - (day4+day5+day6)/3, time ~ (day1+day2+day3)/3 - (day7+day8)/2, time ~ (day4+day5+day6)/3 - (day7+day8)/2, data = model.data, normalize = FALSE)) colnames(custom.contrasts) <- c("early - late", "early - very late", "late - very late") custom.contrasts.lsmc <- function(...) return(custom.contrasts)
Setting the model and calculating the least squares means:
library("lme4") tissue.model <- lmer(value ~ time * tissue + (1|animal), model.data) library("lsmeans") tissue.lsm <- lsmeans(tissue.model, custom.contrasts ~ time | tissue)
Drawing:
plot(tissue.lsm$lsmeans) dev.new() plot(tissue.lsm$contrasts)
Now the second chart has the combinations that I want, but it shows the difference between the combined tools, and not the tools themselves.
I can get individual values ββfrom tissue.lsm$lsmeans and figure out the combined remedies myself, but I have a nagging feeling that there is an easier way that I just donβt see. All data must be in lsmobj , after all.
early.mean.liver = mean(model.data$value[model.data$tissue == "liver" & model.data$time %in% c("day1", "day2", "day3")]) late.mean.liver = mean(model.data$value[model.data$tissue == "liver" & model.data$time %in% c("day4", "day5", "day6")]) vlate.mean.liver = mean(model.data$value[model.data$tissue == "liver" & model.data$time %in% c("day7", "day8")])
I look forward to your comments or suggestions. Thanks!