首页 > 解决方案 > 在格中绘制选定的随机效应观测值

问题描述

我试图仅从我的随机效应模型中绘制某些观察结果(因为实际数据集有很多观察结果)。

下面是一个分析示例:

# 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))

情节如下所示:

在此处输入图像描述

如果我只想绘制主题 337、310、333 和 349 的结果怎么办?

我已经尝试保存ranef()结果,选择感兴趣的主题,然后从那里构建一个情节,但这不会奏效,因为我会丢失错误栏。

标签: rlatticemixed-models

解决方案


我们需要操纵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"

等等,我们终于可以绘制出我们想要的选择了。

dotplot(r.int)

产量 在此处输入图像描述


推荐阅读