使用 GAMLSS 在 R 中对零膨胀比例数据进行建模

机器算法验证 r 预言 部分 零通胀 无游戏
2022-03-21 22:51:01

我是这个gamlss包的新手,想检查我是否使用了正确的家庭比例数据(处理后的树种覆盖率),该数据范围在零和一之间。根据文档,这种类型的数据的正确分布族是 BEINF(Beta 膨胀),因为它允许 0 和 1 值。数据高度零膨胀,43/82 的观测值为零响应,3/82 的值为 1。我运行以下模型:

m1 <- gamlss(y ~ x1 + x2, 
sigma.formula=~1, 
nu.formula=~x1 + x3 + x4, 
tau.formula=~x5, 
family=BEINF, 
data=df)

平均响应值(和 SE)由下式给出:

pred <- predict(m1, type='response', se.fit=T)

看起来有道理。

我还对获得零响应的概率(即治疗后没有目标物种个体的概率)感兴趣。但是,当我尝试提取 nu 参数的拟合值(我认为这是获得零值的概率)时,使用:

prednu <- predict(m1, type="response", what="nu")

我得到了 0.01-44.6 范围内的响应预测值,我觉得这很奇怪。我已经对模型拟合数据和新数据进行了尝试,结果相同。但是,当我使用family=ZAGA(即零调整伽马分布,它允许响应没有上限)时,我得到的预测值介于 0 和 1 之间,对于 nu 参数的响应,这似乎更合理。

因此,我对我的方法有 3 个问题:

  1. 对于介于零和一之间的零膨胀比例数据,BEINF 是否是分布族的正确选择,并且包括零和一值?

  2. 是否predict(m1, type="response", what="nu")给出获得零响应的概率?

  3. 为什么会predict(m1, type="response", what="nu")给出远远超出有界范围的值?[0,1]

如果有帮助,我们很乐意提供数据。

您可以就我的数据集正确使用这些 gamlss 功能提供任何帮助,我们将不胜感激。亲切的问候,

PS – 这个问题已经在一周前发送给 GAMLSS 团队,但尚未得到答复。

2个回答

下面的答案引用了膨胀的 beta GAMLSS 文档(Rigby & Stasinopoulos,2010,第 10.8.2 节,第 215 页)。看起来您的数据可能适合膨胀的 beta 模型。

组件的响应变量是概率(几率)的比率,由下式给出ν

ν=p0/(1p0p1)

其中是零响应的概率,是一个响应的概率。因此可以取值 > 0。p0p1ν

分量由下式给出τ

τ=p1/(1p0p1)

使用分量的预测响应值,零响应的概率可以计算为ντ

p0=ν/(1+ν+τ)

希望这可以帮助。

我认为赔率而不是给出,对于p01p0p1eννp11p0p1=eτ

这意味着在上述答案中,需要使用的指数:ντ

p0=eν1+eν+eτ

对于也是如此。p1