使用随机效应模型检验变异

机器算法验证 r 随机效应模型
2022-04-03 16:22:53

我认为可以分析仅具有随机效应的模型,但我不确定,因为我从未这样做过。我正在寻找有关它是否合适、我需要注意哪些假设以及如何正确执行的指导。

来自我对昆虫的研究;

  • 我有一个响应变量(死亡年龄,“年龄”)
  • 两个处理(“Treat1”和“Treat2”),都有两个级别(Treat1 有“A”和“B”,Treat2 有“P”和“Q”)
  • 还有40个基因型(1-40)
  • 每个基因型/Treat1/Treat2 组合的四个重复(w、x、y、z)
  • 每个重复包含 50 个人

简而言之,我的数据看起来像这样的 32000 行:

Treat1  Treat2  Genotype  Block  Individual   Age   
A       P       1         w      1            23
A       P       1         w      2            35
A       P       1         w      3            44
.       .       .         .      .            .
.       .       .         .      .            .
.       .       .         .      .            .
B       Q       40        z      50           76     

我想知道 Treat1 和 Treat2 的每种组合(AP、AQ、BP、BQ)是否具有遗传遗传变异 - 即每种治疗组合中我的 40 种基因型之间是否存在变异?

我想我需要为每个 AP、AQ、BP 和 BQ 建立一个模型,大致如下:

Age ~ Genotype [ Treat1 == "A" & Treat2 == "P"] * Block [ Treat1 == "A" & Treat2 == "P"]

其中基因型和块是随机效应。我听说 Gamma 分布更适合用于寿命(至死亡时间)模型。

我的问题是:

一个。这是显示我的基因型是否有变异的合适方法吗?

湾。我可以构建上面定义的四个模型还是这样做真的很糟糕?

C。如果可能,我应该在 R 中使用哪些函数(lm、glm、lmer ... & summary、summary.lm、aov、anova ...)?

d。如果伽玛比高斯更适合,我应该期待什么时候比较plot(model)伽玛与高斯比较?


这是目前我的模型...

AP= df$Treat1=="A" & df$Treat2=="P"
apmodel<- lmer(df$Age[AP]~(1|df$Genotype[AP])+(1|df$Block[AP]))
summary(apmodel)

我认为这是正确的,但我不确定如何处理输出..

> summary(apmodel)
Linear mixed model fit by REML 
Formula: df$Age[AP] ~ (1 | df$Genotype[AP]) + (1 | df$Block[AP]) 
       AIC   BIC logLik deviance REMLdev
     57343 57371 -28667    57336   57335
    Random effects:
     Groups           Name        Variance Std.Dev.
     df$Genotype[AP]  (Intercept) 17.23798 4.15186 
     df$Block[AP]     (Intercept)  0.15416 0.39263 
     Residual                     93.18777 9.65338 
    Number of obs: 7757, groups: df$line[AP], 40; df$Block[AP], 4

Fixed effects:
            Estimate Std. Error t value
(Intercept)  49.9948     0.6939   72.05

有遗传变异吗??

1个回答

您可以做几件事来测试是否存在遗传变异。

但是,首先,我想知道为什么要为“Treat1 和 Treat2 的每个组合(AP、AQ、BP、BQ)”使用单独的模型?我对这里的实质性应用领域一无所知,我可能会误解你的数据,但我认为你可以在这里有 5 种不同的截距/随机效应:Block、Genotype、Treat1、Treat2 和 Treat1.Treat2——您创建并添加到数据集的交互项。一个模型适用于一切。

无论如何,回到你的问题。

首先,可以通过使用 ML(使用 REML = FALSE)运行此模型来进行正式的显着性检验:

apmodel1 <- lmer(Age ~ (1|Genotype) + (1|Block), df, REML = FALSE)

然后运行没有基因型效应的模型:

apmodel2 <- lmer(Age ~ (1|Block), df, REML = FALSE)

并执行似然比检验:

anova(apmodel2, apmodel)

其次,更非正式地,您可以计算诸如类内相关系数 (ICC) 之类的统计数据,以衡量 Genotype 对方差的影响程度。尝试库中的ICC.lme功能psychometric

最后,最有趣的方法是生成预测效果图,以及每个基因型、治疗等的相应不确定性估计。这里的重点从作为一个因素的基因型转移到作为(建模/变化)的基因型的每个级别影响。