寻求帮助为我从相互移植实验中收集的数据创建模型:我有 2 个鱼群(A 和 B)和 2 个相互交叉的温度状态(温暖和寒冷)(= 4 个治疗组 - A :暖,A:冷,B:暖,B:冷)。每个处理组由两个重复罐(总共 8 个罐)组成。每个鱼缸里有 100 条鱼。感兴趣的响应变量是增长率,我记录了 800 条鱼中每条鱼的增长率。我想测试人口和温度的影响及其相互作用。我还想包括坦克效果。我认为我应该在交互效果中嵌套坦克效果(Pop:Temp,相当于治疗组)并将嵌套效果作为随机效果包含在内。所以我应该在 Pop:Temp 的交互中嵌套 Population(固定效果)和 Temp(固定效果)和 Tank 效果(随机效果)。是否可以创建嵌套在固定效果交互中的随机效果?如果是这样,我该如何在 R 中做到这一点?
随机效应嵌套在R中的固定效应模型下
机器算法验证
r
随机效应模型
2022-03-29 12:56:44
3个回答
将 tank 作为随机效果和将 tank 嵌套在 pop/temp 固定效果中是没有意义的。您只需要其中之一,具体取决于坦克的编码方式。
如果坦克编码为1-8,则只需要坦克随机效果。将其嵌套在 pop/temp 固定效果中会产生相同的 8 个单位,因此没有必要。
如果 tank 编码为 1-2(即,它是哪个代表),您只需要将 tank 嵌套在 pop/temp 固定效果中,因为这会为您提供 8 个独特的 tank。仅当先将坦克分为两组然后随机分配治疗时,才需要包括坦克随机效应;如果八个坦克完全随机接受治疗,这是没有必要的。
您可以使用基于可能性的解决方案来做到这一点,nlme但lme4如果一切都是平衡的,使用传统的 ANOVA 方法可能更简单aov。
创建一些示例数据:
set.seed(5)
d <- within(expand.grid(pop=factor(c("A","B")),
temp=factor(c("warm", "cold")),
rep=1:2,
fish=1:100), {
tank <- factor(paste(pop, temp, rep, sep="."))
tanke <- round(rnorm(nlevels(tank))[unclass(tank)],1)
e <- round(rnorm(length(pop)),1)
m <- 10 + 2*as.numeric(pop)*as.numeric(temp)
growth <- m + tanke + e
})
像这样使用aov:
a0 <- aov(growth ~ pop*temp + Error(tank), data=d)
summary(a0)
或lme像这样:
library(nlme)
m1 <- lme(growth ~ pop*temp, random=~1|tank, data=d)
anova(m1)
因为处理(pop * temp)在随机效应(tank)的级别内没有变化,所以这是一个简单的嵌套设计(我认为)。除非您对罐之间的变化量特别感兴趣,否则将数据聚合到罐的水平然后运行一个简单的(非混合)线性模型会容易得多——统计推断应该与上述混合方差分析中的固定效应检验。
使用上面的示例数据(我确信有一种更简单的方法来进行聚合):
d2 <- rename(cast(subset(d,select=c(pop,tank,temp,growth)),
pop+temp+tank~.,fun.agg=mean,value="growth"),
c("(all)"="meangrowth"))
m1 <- lm(meangrowth~pop*temp,data=d2)
summary(m1)
参见 Murtaugh (2007)“生态数据分析中的简单性和复杂性”,生态学,88(1),2007,第 56-62 页。
你试过了吗: lmer(growth~1+treatment+(1|tank)+(0+treatment|tank))
其它你可能感兴趣的问题