Построить выборочные наблюдения случайных эффектов в решетке - PullRequest
1 голос
/ 18 марта 2019

Я пытаюсь построить только некоторые наблюдения из моей модели случайных эффектов (так как фактический набор данных имеет много наблюдений).

Вот пример анализа:

# Load packages

library(lme4)
library(lattice)

# Load sleep data

data(sleepstudy) 

# Model

fit <- lmer(Reaction ~ Days + (1 + Days|Subject), data = sleepstudy)

# Plot random effects

dotplot(ranef(fit, condVar = T))

Сюжет выглядит так:

enter image description here

Что если бы я хотел построить результаты только для предметов 337, 310, 333 и 349?

Я пытался сохранить результаты ranef(), выбрать интересующие объекты, а затем построить график оттуда, но это не сработает, так как я потеряю панели ошибок.

1 Ответ

1 голос
/ 18 марта 2019

Нам нужно манипулировать объектом ranef.mer.

library(lme4)
library(lattice)
data(sleepstudy) 
fit <- lmer(Reaction ~ Days + (1 + Days|Subject), data=sleepstudy)

Во-первых, мы храним его.

r.int <- ranef(fit, condVar=TRUE)

Во-вторых, мы создаем вектор желаемых подмножеств номеров строк.

s <- c(337, 310, 333, 349)

В-третьих, внутри функции lapply мы подгруппируем оба в списке, data.frame и, что важно, атрибуты, где отклонения скрыты в массиве.

r.int <- lapply(r.int, function(x) {
  s2 <- which(rownames(x) %in% s)
  x <- x[s2, ]
  attributes(x)$postVar <- attributes(x)$postVar[, , s2]
  return(x)
})

В-четвертых, мы взломали требуемый ярлык класса.

class(r.int) <- "ranef.mer"

Et voilà, мы наконец можем построить желаемый выбор.

dotplot(r.int)

Урожайность enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...