如何在 R 中分析这种不完整的块设计?

机器算法验证 实验设计 lme4-nlme 混合模式 阻塞
2022-03-27 08:04:08

我只是想知道你是否能指出我正确的方向。我有一个数据集,在 10 个不同的地点种植了 5 个树克隆,即相同的克隆在不同的地点复制了两次。

  Site Clone  
    1     A    
    2     A  
    3     B  
    4     B  
    5     C  
    6     C  
    7     D  
    8     D  
    9     E  
   10     E

在每个站点,每个克隆都被复制多次。理想情况下,我想知道克隆对我的因变量 y 的影响以及是否存在站点效应。对我来说,它看起来像是一个不完整的块设计,其中克隆作为固定效果,站点作为随机效果(和块)。使用 R 中 lme4 包中的 lmer ,我将指定模型如下:

lmer(y~clone + (1|site), data=mydata)    

这是分析此数据集的正确方法吗?我还可以通过克隆站点并消除站点来进行平均。但是这样我会丢失关于是否存在站点效应的潜在重要信息。

任何指针表示赞赏!

1个回答

我认为你完全正确。

像您的示例一样设置数据:

d <- expand.grid(Site=factor(1:10),rep=1:5)
d <- transform(d,Clone=factor(LETTERS[(as.numeric(Site)+1) %/% 2]))
library(lme4)
## could use development version of lme4 to simulate, but will do
## it by hand
beta <- c(2,1,3,-2,2)  ## clone effects (intercept + differences)
X <- model.matrix(~Clone,d)
set.seed(1)
u.site <- rnorm(length(levels(d$Site)),sd=1)
    d$y <- rnorm(nrow(d),
       mean=X %*% beta + u.site[d$Site],
       sd=2)

现在分析:

m1 <- lmer(y~Clone+(1|Site),data=d)
round(fixef(m1),3)
## (Intercept)      CloneB      CloneC      CloneD      CloneE 
##       2.624      -0.034       2.504      -2.297       2.396

VarCorr(m1)
##  Groups   Name        Std.Dev.
##  Site     (Intercept) 0.0000  
##  Residual             1.6108

我认为实际上没有任何问题,但我使用了相当大的残差方差,因此在这种情况下(可能仅在重复的子集上),lmer估计站点间变异为零。