Я ищу простой способ извлечения (и построения) наименьших квадратов средств указанных комбинаций уровней одного фактора для каждого уровня другого фактора.Пункты наименьших квадратов для групп факторов уровня
Пример данных:
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)
)
Настройка пользовательских контрасты для фактора "времени":
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)
Установка модели и вычисление наименьших квадратов означает:
library("lme4")
tissue.model <- lmer(value ~ time * tissue + (1|animal), model.data)
library("lsmeans")
tissue.lsm <- lsmeans(tissue.model, custom.contrasts ~ time | tissue)
черчения :
plot(tissue.lsm$lsmeans)
dev.new()
plot(tissue.lsm$contrasts)
Теперь у второго участка есть комбинации, которые я хочу, но это показывает разницу между комбинированными средствами, а не средствами.
Я могу получить индивидуальные значения от tissue.lsm$lsmeans
и рассчитать комбинированные средства самостоятельно, но у меня есть ощущение нытье, что есть более простой способ, которого я просто не вижу. В конце концов, все данные должны быть в lsmobj
.
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")])
# ... for each level of "tissue"
#compare to tissue.lsm$contrasts
early.mean.liver - late.mean.liver
early.mean.liver - vlate.mean.liver
late.mean.liver - vlate.mean.liver
Я с нетерпением жду ваших замечаний или предложений. Благодаря!
Может просто создать второй коэффициенты матрицы, чтобы получить комбинированные средства, представляющие интерес для каждой ткани? – aosmith
Благодарим вас за предложение @aosmith! Я не знаю, как это сделать, хотя, можете ли вы привести мне пример, пожалуйста? – tractorjack