繁体   English   中英

如何在二项式 GLMM(lme4)中确定正确的混合效应结构?

[英]How to determine the correct mixed effects structure in a binomial GLMM (lme4)?

有人可以帮我在 lme4 中的二项式 GLMM 中确定正确的随机变量结构吗?

我将首先尽可能地解释我的数据。 我有被吃掉(1)或没有被吃掉(0)的幼苗的二项式数据,以及植被覆盖的数据。 我试图弄清楚植被覆盖与树被吃掉的概率之间是否存在关系,因为其他植被是一种食物来源,可以将食草动物吸引到某个森林斑块。

9 年来,这些数据是在分散在国家公园的约 90 个地块中收集的。 有些测量了所有年份,有些只测量了几年(销毁/新添加的地块)。 原始数据集分为 2 个(落叶树与针叶树),均包含约 55.000 个条目。 根据 plot 每次测量大约 100 棵树苗,因此两个单独的数据集可能包含每个 plot 大约 50 棵树(尽管情况并非总是如此,因为 decid:conif 比率并不总是相等)。 每个 plot 由 4 个子图组成。 我知道由于 plot 放置可能存在空间自相关,但我们不会对此进行纠正。

每年在同一时期对植被进行调查。 植被覆盖在地块级别估计,单个树木(二元)在子地块级别测量。 所有树木都经过测量,因此随着森林自然再生,每个子样地的响应量在子样地和年份之间会有所不同。

不幸的是,我无法分享我的原始数据,但我尝试创建一个捕获要点的示例:

#set seed for whole procedure
addTaskCallback(function(...) {set.seed(453);TRUE})
# Generate vector containing individual vegetation covers (in %) 
cover1vec <- c(sample(0:100,10, replace = TRUE)) #the ',number' is amount of covers generated

# Create dataset
DT <- data.frame(
                 eaten = sample(c(0,1), 80, replace = TRUE),
                 plot = as.factor(rep(c(1:5), each = 16)), 
                 subplot = as.factor(rep(c(1:4), each = 2)),
                 year = as.factor(rep(c(2012,2013), each = 8)),
                 cover1 = rep(cover1vec, each = 8)
)

这将生成这个数据集:

>DT
   eaten plot subplot year cover1
1      0    1       1 2012      4
2      0    1       1 2012      4
3      1    1       2 2012      4
4      1    1       2 2012      4
5      0    1       3 2012      4
6      1    1       3 2012      4
7      0    1       4 2012      4
8      1    1       4 2012      4
9      1    1       1 2013     77
10     0    1       1 2013     77
11     0    1       2 2013     77
12     1    1       2 2013     77
13     1    1       3 2013     77
14     0    1       3 2013     77
15     1    1       4 2013     77
16     0    1       4 2013     77
17     0    2       1 2012     46
18     0    2       1 2012     46
19     0    2       2 2012     46
20     1    2       2 2012     46
....etc....
80     0    5       4 2013     82    

注意 1:再次澄清,在这个例子中,每个 subplot:year 组合的响应数量是相同的,使得数据平衡,而原始数据集中的情况并非如此。 注意2:此示例不能在 GLMM 中运行,因为我收到奇点警告并且我的所有随机效应测量值都为零。 显然我的示例不适合实际使用(因为使用 sample() 导致 0 和 1 的数量太均匀而无法产生足够大的效果?)。

从示例中可以看出,每个 plot:year 组合的封面数据都是相同的。 绘图是多年测量的(示例中只有 2012 年和 2013 年),因此存在重复测量 此外,考虑到我们有例如更干燥/更潮湿的年份这一事实,可能会产生年份效应

首先我想到了下面的 model 结构:

library(lme4)
mod1 <- glmer(eaten ~ cover1 + (1 | year) + (1 | plot), data = DT, family = binomial)
summary(mod1)

其中 (1 | year) 应纠正年份之间的差异, (1 | plot) 应纠正重复测量。

但后来我开始思考:在 plot 1 中测量的所有树木,在 2012 年将比与来自 plot 1 的(部分相同的)树木在 2013 年进行比较时更加相似。所以,我怀疑这个随机model 结构将在 plot 时间效应中对此进行纠正。

所以我最好的猜测是添加另一个随机变量,其中考虑了这种“交互”。 我知道两种可能实现这一目标的方法:

方法一、添加随机变量“+ (1 | year:plot)”

方法 2.添加随机变量“+ (1 | year/plot)”

从其他人告诉我的情况来看,我仍然不知道两者之间的区别。 我看到Method 2Method 1相比添加了一个额外的随机变量(year.1),但我不知道如何解释这个额外的随机变量。

例如,我使用方法 2添加了随机效应摘要(由于我的示例数据的奇异性问题而为零):

Random effects:
 Groups    Name        Variance Std.Dev.
 plot.year (Intercept) 0        0       
 plot      (Intercept) 0        0       
 year      (Intercept) 0        0       
 year.1    (Intercept) 0        0       
Number of obs: 80, groups:  plot:year, 10; plot, 5; year, 2

有人可以解释一下方法 1方法 2之间的实际区别吗? 我试图了解正在发生的事情,但无法掌握它。

我已经尝试从一位同事那里获得建议,他提到根据 plot:year 组合使用 cbind(success, failure) 可能更合适。 通过这个站点,我发现当Ntrails > 1时,cbind 用于二项式模型,我认为考虑到我们的抽样程序,情况确实如此。

我想知道,如果 cbind 已经用于 plot:year 组合,我是否需要添加 plot:year 随机变量? 使用 cbind 时,示例数据如下所示:

>DT3
   plot year cover1 Eaten_suc Eaten_fail
8     1 2012      4         4          4
16    1 2013     77         4          4
24    2 2012     46         2          6
32    2 2013     26         6          2
40    3 2012     91         2          6
48    3 2013     40         3          5
56    4 2012     61         5          3
64    4 2013     19         2          6
72    5 2012     19         5          3
80    5 2013     82         2          6

什么是正确的随机 model 结构,为什么? 我在想:

可能性 A

mod4 <- glmer(cbind(Eaten_suc, Eaten_fail) ~ cover1 + (1 | year) + (1 | plot), 
              data = DT3, family = binomial)

可能性 B

mod5 <- glmer(cbind(Eaten_suc, Eaten_fail) ~ cover1 + (1 | year) + (1 | plot) + (1 | year:plot), 
              data = DT3, family = binomial)

但是 cbind(success, failure) 对这一年是否已经正确:plot 依赖?

可能性 C

mod6 <- glmer(cbind(Eaten_suc, Eaten_fail) ~ cover1 + (1 | year) + (1 | plot) + (1 | year/plot), 
              data = DT3, family = binomial)

因为我还不明白 year:plot 和 year/plot 之间的区别

因此:使用 cbind 方法确实比原始二进制数据更合适吗? 为了防止伪复制和其他依赖关系,需要什么随机 model 结构?

提前感谢您的时间和投入!

编辑 7/12/20:我添加了一些关于原始数据的额外信息

你在你的问题中问了很多问题。 我将尝试涵盖所有内容,但我建议阅读来自lme4的文档和小插图以及glmmFAQ页面以获取更多信息。 此外,我强烈建议您在 google 学者上搜索这些主题,因为它们的覆盖面相当广。

我将从简单的地方开始

注2(为什么我的model是单数?)

您的 model 非常单一,因为您模拟数据的方式并不表明数据本身之间存在任何依赖关系。 如果您想模拟二项式 model 您将使用g(eta) = X %*% beta来模拟您的线性预测器,从而模拟成功的概率。 然后可以使用此概率来模拟您的二元结果。 因此,这将是一个两步过程,首先使用一些已知的X或随机模拟的X ,给定我们选择的一些先验分布。 在第二步中,我们将使用rbinom来模拟二进制结果,同时保持它依赖于我们的预测变量X

在您的示例中,您正在模拟独立的X和 a y ,其中概率也与X无关。 因此,当我们查看结果y时,对于某个常数c ,所有子组的成功概率等于p=c

有人可以解释一下方法 1 和方法 2 之间的实际区别吗? (1| year:plot)(1|year/plot)

package 小插图拟合线性混合效果模型与第 7 页表中的 lme4 对此进行了解释。

  1. (1|year/plot)表示我们有 2 个混合截距效应yearplotplot嵌套在year内。
  2. (1|year:plot)表示单个混合截距效应, plot嵌套在year内。 例如。 我们不包括year的主效应。 这有点类似于没有拦截的 model (虽然不那么激烈,并且解释没有被破坏)。

第一个比第二个更常见,但我们可以将第一个写成第二个(1|year) + (1|year:plot)的 function 。

因此:使用 cbind 方法确实比原始二进制数据更合适吗?

公式中的cbind用于二项式数据(或多变量分析),而对于二进制数据,我们使用原始向量或0/1表示成功/失败,例如。 聚合二进制数据(类似于我们使用glm的方式)。 如果您对子图的随机/固定效应不感兴趣,您也许可以跨图聚合数据,然后这可能是有意义的。 否则,请与您保持0/1结果向量,指示成功或失败。

什么是正确的随机 model 结构,为什么?

这是一个很难给出明确答案的话题,并且仍在积极研究中。 根据您的统计范式,意见差异很大。

方法一:经典方法

经典混合建模基于您正在使用的数据的知识。 一般来说,选择这些参数有几个“经验法则”。 我在这里的回答中经历了一些。 一般来说,如果您对系统效应“不感兴趣”并且可以将其视为某些人群的随机样本,那么它可能是随机效应。 如果是人口,例如。 如果重复该过程,样本不会改变,那么它可能不应该改变。

这种方法通常会为那些不熟悉混合效应模型的人提供“体面”的选择,但受到倾向于使用类似于我们在非混合模型中使用的方法的作者的高度批评(例如,可视化以作为我们选择和测试的基础意义)。

方法2:使用可视化

如果您能够将数据分成独立的子组并保持固定效应结构,则检查潜在随机效应的合理方法是跨这些子组估计边际模型(例如使用glm )并查看固定效应是否“正态分布”在这些观察之间。 function lmList (在lme4中)专为这种特定方法而设计。 在线性模型中,我们确实希望这些是正态分布的,因此我们可以得到一个指示,一个特定的分组“可能”是一个有效的随机效应结构。 我相信在广义线性模型的情况下也是如此,但我缺乏参考资料。 我知道 Ben Bolker 在我在论文中使用的他之前的一篇文章(下面的第一个参考资料)中提倡这种方法。 然而,这只是对严格可分数据的有效方法,并且在因子水平未在所有组之间共享的情况下,实施并不稳健。

简而言之:如果您拥有正确的数据,这种方法简单、快速且看似高度可靠。

方法 3:基于 AIC 或 AICc(或 p 值检验或替代指标)拟合最大/最小模型并减小/扩展 model

最后是使用类似“逐步”程序的替代方案。 有人提倡从最大模型和最小模型开始(我确信下面的参考文献中至少有一篇谈到了两者的问题,否则请查看 glmmFAQ),然后测试您的随机效应的有效性。 就像经典回归一样,这在某种程度上是一把双刃剑。 原因既非常容易理解,又非常复杂。

要使此方法成功,您必须执行交叉验证或样本外验证以避免像标准模型一样的选择偏差,但与标准模型不同,抽样变得复杂,因为:

  1. 固定效应取决于随机结构。
  2. 您将需要您的训练和测试样本是独立的
  3. 由于这取决于您的随机结构,并且这是逐步选择的,因此很难避免某些模型中的信息泄漏。
  4. 此处避免问题的唯一确定方法是根据最严格的 model 定义来定义您将要测试和选择样本的空间。

接下来,我们在评估指标的选择上也遇到了问题。 如果对随机效应感兴趣,则使用 AICc(条件模型的 AIC 估计)是有意义的,而对于固定效应,优化 AIC(边际模型的 AIC 估计)可能更有意义。 我建议在 glmmFAQ 上检查对 AIC 和 AICc 的引用,并且要小心,因为在一组非常严格的混合模型(即“足够的独立样本超过随机效应”)之外,这些的大样本结果可能是不确定的。

这里的另一种方法是使用 p 值而不是过程的某些度量。 但人们可能对随机效应的测试更加谨慎。 即使使用贝叶斯方法或以难以置信的大量重采样进行引导,有时这些也不是很好。 同样,我们需要“足够多的独立样本而不是随机效应”来确保准确性。

DHARMA为可能更适合的混合效果提供了一些非常有趣的测试方法。 当我在该领域工作时,作者仍在(似乎)开发一篇文章,记录他们选择的方法的有效性。 即使不使用它进行初始选择,我也只能建议检查一下并决定是否相信他们的方法。 这是迄今为止最简单的视觉测试方法,具有简单的解释(例如,解释图几乎不需要先验知识)。

因此,关于这种方法的最后一点是:这确实是一种方法,但我个人推荐这种方法。 它需要非常小心或作者接受对 model 假设的无知。

结论

混合效果参数选择是一件困难的事情。 我的经验告诉我,主要使用方法 1 和 2 的组合,而方法 3 似乎主要由较新的作者使用,这些往往忽略样本外错误(根据用于训练的数据测量 model 指标) ),在拟合随机效应时忽略样本的独立性问题或限制自己仅使用此方法测试固定效应参数。 然而,所有 3 个都具有一定的有效性。 我自己往往属于第一组,我的决定基于我在该领域的“经验”、经验法则和我的数据限制。

你的具体问题。

鉴于您的具体问题,我假设(1|year/plot/subplot)的混合效应结构将是正确的结构。 如果添加自回归(时间-空间)效应year可能会消失。 这种结构的原因是在地块的地理分析和分析中,经典方法是包括每个 plot 的影响。 如果每个 plot 可以进一步被索引到子图中,那么很自然地认为“子图”嵌套在“图”中。 假设您没有 model 自回归效应,我会认为time是随机的,原因您已经说过。 有些年份我们的天气会比其他年份更干燥、更热。 由于测量的地块必须存在于给定的年份,因此这些地块将嵌套在年份中。

这就是我所说的maximal model ,根据您的数据量,它可能不可行。 在这种情况下,我会尝试使用(1|time) + (1|plot/subplot) 如果两者都可行,我会比较这些模型,使用自举方法或近似 LRT 测试。

注意: (1|time/plot/subplot)似乎不太可能导致“个体水平效应”。 例如,数据中每行 1 个随机效应。 由于我早已忘记(但一旦阅读)的原因,在二元混合模型中具有个体(也称为主题级别)效果是不合理的。 在这种情况下,使用替代方法或测试您的subplot假设在从随机效应中保留子图时是否保持不变也可能有意义。

下面我添加了一些有用的参考资料,其中一些与问题直接相关。 此外,请查看 Ben Bolker 的 glmmFAQ 网站等。

参考

  1. Bolker, B. 等人。 (2009 年)。 “广义线性混合模型:生态学和进化的实用指南”。 在:生态与进化趋势 24.3,p. 127–135。
  2. Bolker, B. 等人。 (2011)。 “GLMMs in action:基因与环境的相互作用在拟南芥野生种群果实总产量中的作用”。 在:修订版,第 1 部分 1,p。 127–135。
  3. 渴望,C。 og J.罗伊(2017)。 “混合效果模型有时很糟糕”。 在:arXiv 预印本 arXiv:1701.04858。 url: https://arxiv.org/abs/1701.04858 (最后一次出现在 19.09.2019)。
  4. 冯,辛迪等人。 (2017)。 “随机分位数残差:具有统一参考分布的综合 model 诊断工具”。 在:arXiv 预印本 arXiv:1708.08527。 (最后一次看到 19.09.2019)。
  5. Gelman, A. og Jennifer Hill (2007)。 使用回归和多级/分层模型的数据分析。 剑桥大学出版社。
  6. 哈蒂格,F. (2019)。 DHARMa:分层(多级/混合)回归模型的残差诊断。 R package 版本 0.2.4。 url: http://florianhartig.github.io/DHARMa/ (最后一次出现在 19.09.2019)。
  7. Lee, Y. og JA Nelder (2004)。 “条件和边际模型:另一种观点”。 在:统计科学 19.2,p。 219–238。
    doi: 10.1214/088342304000000305。 url: https://doi.org/10.1214/088342304000000305
  8. 林,DY 等人。 (2002 年)。 “基于累积残差的模型检查技术”。 在:生物识别 58.1,p。 1-12。 (最后一次看到 19.09.2019)。 林 X. (1997)。 “具有随机效应的广义线性模型中的方差分量测试”。 在:Biometrika 84.2,p。 309–326。 issn: 00063444. url: http://www.jstor.org/stable/2337459 (最后一次出现在 19.09.2019)。
  9. 斯蒂拉特利,R。 等。 (1984 年)。 “具有二元响应的串行观察的随机效应模型”。 在:
    生物识别,p。 961–971。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM