如何在 R 中使用 betareg 函数实现混合模型?

机器算法验证 r 混合模式 随机效应模型 贝塔分布 贝塔回归
2022-02-17 00:39:14

我有一个数据集,由测量单个蝌蚪的“活动水平”的比例组成,因此使值介于 0 和 1 之间。这些数据是通过计算个体在特定时间间隔内移动的次数来收集的(1 表示移动, 0 表示没有运动),然后平均为每个人创造一个值。我的主要固定效果是“密度水平”。

我面临的问题是我有一个因子变量“池塘”,我想将其作为随机效应包括在内 - 我不关心池塘之间的差异,但想从统计角度考虑它们。关于池塘的一个重要点是我只有 3 个,而且我知道在处理随机效应时拥有更多的因子水平 (5+) 是理想的。

如果可以的话,我想要一些关于如何使用 R 实现混合模型betareg()的建议betamix()。我已经阅读了 R 帮助文件,但我通常发现它们很难理解(每个参数参数在上下文中的真正含义我自己的数据以及输出值在生态方面的含义),所以我倾向于通过示例更好地工作。

在相关的说明中,我想知道是否可以改为使用glm()二项式家庭和 logit 链接来完成对此类数据的随机效应的解释。

4个回答

软件包glmmTMB可能对任何有类似问题的人都有帮助。例如,如果您想将上述问题中的池塘作为随机效应包含在内,则以下代码可以解决问题:

glmmTMB(y ~ 1 + (1|pond), df, family=list(family="beta",link="logit"))

的当前功能betareg不包括随机/混合效果。您只能包含固定效应,例如,对于betareg()您的三级池塘变量。betamix()函数实现了有限混合beta 回归,而不是混合效应 beta 回归。

在你的情况下,我会首先尝试看看固定池塘因子效应有什么影响。这会“花费”您两个自由度,而随机效应只需增加一个自由度就会稍微便宜一些。但是,如果这两种方法导致非常不同的定性见解,我会感到惊讶。

最后,虽然glm()不支持 beta 回归,但在mgcv包中有betar()可以与gam()函数一起使用的族。

这开始是一条评论,但持续了很长时间。我认为随机效应模型在这里不合适。只有 3 个池塘 - 你想估计 3 个数字的差异吗?这有点像随机效应模型。我猜这些池塘的选择是为了方便研究人员,而不是作为“美洲池塘”的随机样本。

随机效应模型的优势在于,它允许您构建响应(活动水平)的置信区间,将池塘与池塘的变化考虑在内。固定效应模型 - 换句话说,将池塘视为一个块 - 调整池塘效应的响应。如果有一些额外的处理效果——比如每个池塘里有两种青蛙——阻塞会降低均方误差(F 检验的分母),并让处理效果大放异彩。

在这个例子中,没有处理效应,而且池塘的数量对于随机效应模型来说太小(而且可能太“非随机”),所以我不确定可以从这项研究中得出什么结论。人们可以很好地估计池塘之间的差异,但仅此而已。我没有看到对其他池塘环境中更广泛的青蛙种群的推论。我想,可以将其作为一项试点研究。

请记住,此处使用任何随机效应模型都会对池塘方差给出非常不可靠的估计,因此必须谨慎使用。

但至于你原来的问题——这不是更多的费率问题吗?每单位时间事件的首选分布是泊松。因此,您可以使用以时间间隔作为偏移量的计数进行泊松回归。

我认为你猜对了,你可以使用 glm 二项式模型。

无运动=失败(0),运动=1(成功)。

我第二个@Placidia,您没有足够的池塘(3)来证明从中产生随机效果是合理的。

使用二项式模型的优势在于使用更多的原始数据来回答您的假设(更多的统计能力)。可能性是:

  1. 使用混合效应扩展(二项式 glmer)将蝌蚪身份作为单个随机截距(或斜率)
  2. 研究不同时间间隔的影响(分类)。

这一切都取决于你的假设。也许您不需要比简单的 beta 回归更复杂的东西。从您最初的问题中不清楚您的假设是什么(但这肯定不是关于比较池塘之间的活动,因为您说您对此不感兴趣)。