我一直试图弄清楚如何制定混合效果模型并在R中编码一段时间。我一直在阅读很多关于混合模型的内容,但我找不到一个与我的相似的例子。我的主管最近建议我向在线社区寻求帮助。我是这个论坛的新手,所以如果这不是一个正确的地方或者是否缺少信息,请告诉我。 以下是我的实验设置方式。我正在研究不同的落叶处理和冠层类型对田间试验中苔藓生长的影响。我们选择了三个区域(区块A,B,C),其中我们确定了相邻的云杉和桦树林(森林类型处理,6个林分)。在每个展位中,我们设置了5个地块(30个地块),其中我们放置了4个苔藓移植物(这是我的采样单位,n = 120)。每次移植被分配到4个叶凋落物处理中的1个(编码为ADD,AMB,CON,EXC)。我在每个移植物中标记了10个单独的苔藓芽,然后在2013年,2014年和2015年测量它们的大小。我将每次移植的平均苔藓芽大小作为我的反应变量。我期待叶凋落物处理将与森林类型相互作用,并且每个主效应的影响程度和苔藓大小的相互作用将在三个采样时间内变化(例如,仅2013年森林类型的影响,两个主要影响在2014年,然后在2015年的互动)。 这是数据的样子。
df=data.frame(Year = as.ordered(rep(2013:2015, each=120)),
ForestType = as.factor(rep(rep(c('Spruce', 'Birch'), each=60), 3)),
Block=as.factor(rep(rep(c('A','B','C'), each=20), 6)),
Plot=as.factor(rep(rep(1:5, each=4),18)),
Treatment=as.factor(rep(c('ADD', 'AMB', 'CON', 'EXC'), 90)))
# Create unique IDs for each of the 30 plots and 120 moss transplants
cols <- c('ForestType', 'Block', 'Plot')
cols2 <- c('ForestType', 'Block', 'Plot', 'Treatment')
df$plot.id <- as.factor(do.call(paste, c(df[cols], sep=".")))
df$transplant.id <- as.factor(do.call(paste, c(df[cols2], sep=".")))
# Created a variable with a similar structure to the original one
df$MossSize=c(1.5 , 1.4 , 1.2 , 1.6 , 1.5 , 1.4 , 1.9 , 1.7 , 2.2 , 1.6 , 1.7 , 2.3 , 1.6 , 1.7 , 1.4 , 2.0 , 2.1 , 3.3 , 2.7 , 1.1 , 3.1 , 2.2 , 2.7 , 2.3 , 2.4 , 2.0 , 2.1 , 2.6 , 2.6 , 2.1 , 2.8 , 1.7 , 2.1 , 2.2 , 3.6 , 1.8 , 2.7 , 2.5 , 3.1 , 2.9 , 3.5 ,2.2 , 1.5 , 2.3 , 2.0 , 1.4 , 1.9 , 1.8 , 2.8 , 2.9 , 2.5 , 2.6 , 2.1 , 2.0 , 1.6 , 2.3 , 3.0 , 3.9 , 2.4 , 3.6 , 3.2 , 2.3 , 4.5 , 2.7 , 2.1 , 2.1 , 2.2 , 1.7 , 1.8 , 2.0 , 2.3 , 2.3 , 2.2 , 3.5 , 3.7 , 2.4 , 2.1 , 2.3 , 2.9 , 2.0 , 2.6 , 2.5 , 3.4 , 3.3 , 2.5 , 2.8 , 4.1 , 3.5 , 2.9 , 3.2 , 2.5 , 3.2 , 2.7 , 2.7 , 3.8 , 3.6 , 3.0 , 3.3 , 2.9 , 1.8 , 3.3 , 2.8 , 4.8 , 3.8 , 2.5 , 2.5 , 3.9 , 3.0 , 4.5 , 3.0 , 3.1 , 3.0 , 2.7 , 3.5 , 3.6 , 2.9 , 2.9 , 3.6 , 2.6 , 3.0 , 3.3 , 3.2 , 2.9 , 3.5 , 2.3 , 2.1 , 3.8 , 3.9 , 4.3 , 2.4 , 3.6 , 6.6 , 1.7 , 6.2 , 4.7 , 4.0 , 3.1 , 4.0 , 5.9 , 2.7 , 4.7 , 5.9 , 6.5 , 5.0 , 5.1 , 5.7 , 7.1 , 6.2 , 4.2 , 3.4 , 4.9 , 4.7 , 3.1, 2.7 , 6.8 , 4.0 , 4.2 , 3.9 , 5.9 , 7.1 , 5.3 , 4.6 , 3.7 , 4.2 , 3.2 , 2.2 , 5.8 , 5.2 , 4.8 , 3.9 , 5.4 , 7.3 , 4.7 , 4.5 , 5.3 , 5.8 , 5.9 , 3.8 , 6.5 , 8.3 , 7.2 , 5.9 , 9.9 , 5.9 , 3.4 ,3.4 , 3.8 , 3.3 , 4.6 , 3.0 , 3.6 , 4.1 , 2.6 , 8.0 , 9.1 , 6.3 , 4.1 , 6.7 , 9.0 , 5.1 , 4.4 , 6.9 , 6.9 , 8.2 , 3.8 , 6.1 , 8.8 , 8.8 , 5.3 , 8.9 , 7.5 , 7.0 , 4.7 ,6.7 , 8.9 , 11.3 , 6.0, 7.2 , 6.3 , 4.7 , 6.8 , 8.1 , 9.1 , 10.2, 4.5 , 5.8 , 5.9 , 7.1 , 13.0, 7.2 , 9.1 , 9.0 , 6.0 , 7.9 , 9.3 , 3.8 , 5.8 , 9.0 , 7.7 , 6.3 , 3.4 , 4.9 , 6.4 , 7.5 , 3.8 , 3.1 , 10.4 , 5.8 , 5.5 , 2.9 , 9.0 , 10.4 , 1.6 , 5.4 , 6.6 , 6.2 , 4.6 , 8.7 , 10.0 , 4.7 , 5.2 , 12.4 , 10.4 , 8.6 , 7.9 , 10.5 , 14.9 , 10.3 , 4.7 , 4.8 , 9.7 , 6.6 , 2.8 , 2.4 , 9.5 , 5.6 , 5.1 , 4.9 , 11.5 , 9.8 , 6.8 , 6.8 , 5.5 , 7.5 , 3.1 , 3.2 , 8.7 , 7.4 , 5.8 , 4.5 , 10.9 , 11.1 , 4.6 , 6.5 , 7.5 , 10.3 , 8.3 , 6.1 , 9.3 , 11.6 , 9.5 , 10.2 , 16.1 , 10.4, 4.4 , 4.5 , 6.9 , 4.6 , 4.5 , 4.1 , 6.1 , 5.0 , 4.2 , 9.3 , 15.4 , 8.6 , 3.9 , 11.7 , 13.3 , 9.2 , 6.3 , 9.7 , 11.8 , 14.6 , 4.9 , 9.4 , 15.4 , 17.6 , 6.8 , 16.7 , 9.3 , 11.8 , 4.8 , 10.5 , 13.2 , 15.2 , 5.9 , 12.6 , 13.1 , 9.3 , 9.9 , 13.4 , 10.7 , 18.9 , 5.5 , 8.7 , 14.0 , 16.3 , 12.3 , 16.7, 14.0 , 15.0 , 6.2 , 17.9 , 18.2 , 8.3 , 8.7 , 17.8 , 12.5 , 9.9)
df$logMossSize=log(MossSize+1)
head(df)
我计划使用lme4或nlme。这就是我认为我在lme4中编码的方式。
# Tentative model -
fit=lmer(logMossSize~ForestType*Treatment*Year+(1|Block/ForestType/plot.id/transplant.id), data=df)
anova(fit)
summary(fit)
我不确定这是否正确,或者是处理重复措施的好方法。由于森林类型只有2个级别,我也不确定将其包含为随机效果是否正确。如果我对混合模型的理解是正确的,则允许随机截取,但不允许随机斜率。任何帮助或建议都将受到极大的赞赏!