与零膨胀的 glmmTMB 对比
contrasts with zero-inflated glmmTMB
我是 运行 零膨胀 glmmTMB
模特。我有兴趣在条件和零 inflation 分量的不同因子水平之间进行成对比较。条件部分,我可以使用通常的 emmeans
方法轻松完成。我一直在尝试使用(相对)新创建的 glmmTMB:::emm_basis.glmmTMB
,但无法弄清楚该函数采用的一些参数,也找不到示例...
这是我目前所处位置的玩具示例。我专门向模型添加了一个 poly()
组件 - 我的完整模型同时具有 poly()
和 ns()
,所以需要弄清楚它们是如何在这里工作的。
所以这里有问题:1) 我是否正确提供了 trms
参数? 2) emm_basis.glmmTMB
函数需要的 xlev
和 grid
参数是什么?
library(glmmTMB)
data(Salamanders)
mod <- glmmTMB(count ~ spp + mined + poly(cover, 2) + (1|site), zi=~spp + mined, Salamanders,
family=nbinom2)
tt <- y ~ spp + mined + poly(cover, 2)
tt <- delete.response(terms(tt))
glmmTMB:::emm_basis.glmmTMB(mod, trms = tt)
非常感谢您的任何想法!
函数 emm_basis()
和 recover_data()
是 emmeans 包的支持函数,具有许多不同模型 类 的方法,包括 glmmTMB
。这些函数不打算由用户调用——这就是为什么它们被注册为方法而不是被导出的原因。
而是调用 emmeans()
或 emmeans 包中的其他函数,这些方法将根据需要使用。
对于 glmmTMB
个对象,有一个可选参数 component
可以包含在 emmeans()
调用中。在你的例子中:
> emmeans(mod, ~spp, component = "cond")
spp emmean SE df lower.CL upper.CL
GP 0.440 0.225 624 -0.00146 0.881
PR -0.382 0.483 624 -1.32983 0.566
DM 0.596 0.203 624 0.19723 0.994
EC-A 0.145 0.327 624 -0.49699 0.787
EC-L 0.991 0.231 624 0.53814 1.445
DES-L 1.009 0.188 624 0.64015 1.379
DF 0.332 0.217 624 -0.09448 0.758
Results are averaged over the levels of: mined
Results are given on the log (not the response) scale.
Confidence level used: 0.95
(我们实际上不需要包含 component
,因为默认值为 cond
。)由于使用了 nbinom2
系列,这些结果在对数刻度上在拟合模型的条件部分。您可以通过指定 type
:
在响应尺度上查看这些结果
> emmeans(mod, ~spp, type = "response")
spp response SE df lower.CL upper.CL
GP 1.553 0.349 624 0.999 2.41
PR 0.682 0.329 624 0.265 1.76
DM 1.814 0.368 624 1.218 2.70
EC-A 1.156 0.378 624 0.608 2.20
EC-L 2.695 0.622 624 1.713 4.24
DES-L 2.744 0.516 624 1.897 3.97
DF 1.394 0.303 624 0.910 2.13
Results are averaged over the levels of: mined
Confidence level used: 0.95
Intervals are back-transformed from the log scale
您可以通过compoenent = "zi"
看到模型的零膨胀部分:
> emmeans(mod, ~spp, component = "zi", type = "response")
spp response SE df lower.CL upper.CL
GP 0.455 0.1064 624 0.2646 0.660
PR 0.763 0.1406 624 0.4115 0.937
DM 0.273 0.1128 624 0.1097 0.534
EC-A 0.719 0.1020 624 0.4870 0.873
EC-L 0.365 0.1085 624 0.1864 0.590
DES-L 0.278 0.0989 624 0.1275 0.503
DF 0.132 0.1150 624 0.0207 0.522
Results are averaged over the levels of: mined
Confidence level used: 0.95
Intervals are back-transformed from the logit scale
此时,似乎无法估计实际平均响应 (1 - zi)*(cond mean);这很有用,但相当混乱,因为它需要组合两个组件。
我是 运行 零膨胀 glmmTMB
模特。我有兴趣在条件和零 inflation 分量的不同因子水平之间进行成对比较。条件部分,我可以使用通常的 emmeans
方法轻松完成。我一直在尝试使用(相对)新创建的 glmmTMB:::emm_basis.glmmTMB
,但无法弄清楚该函数采用的一些参数,也找不到示例...
这是我目前所处位置的玩具示例。我专门向模型添加了一个 poly()
组件 - 我的完整模型同时具有 poly()
和 ns()
,所以需要弄清楚它们是如何在这里工作的。
所以这里有问题:1) 我是否正确提供了 trms
参数? 2) emm_basis.glmmTMB
函数需要的 xlev
和 grid
参数是什么?
library(glmmTMB)
data(Salamanders)
mod <- glmmTMB(count ~ spp + mined + poly(cover, 2) + (1|site), zi=~spp + mined, Salamanders,
family=nbinom2)
tt <- y ~ spp + mined + poly(cover, 2)
tt <- delete.response(terms(tt))
glmmTMB:::emm_basis.glmmTMB(mod, trms = tt)
非常感谢您的任何想法!
函数 emm_basis()
和 recover_data()
是 emmeans 包的支持函数,具有许多不同模型 类 的方法,包括 glmmTMB
。这些函数不打算由用户调用——这就是为什么它们被注册为方法而不是被导出的原因。
而是调用 emmeans()
或 emmeans 包中的其他函数,这些方法将根据需要使用。
对于 glmmTMB
个对象,有一个可选参数 component
可以包含在 emmeans()
调用中。在你的例子中:
> emmeans(mod, ~spp, component = "cond")
spp emmean SE df lower.CL upper.CL
GP 0.440 0.225 624 -0.00146 0.881
PR -0.382 0.483 624 -1.32983 0.566
DM 0.596 0.203 624 0.19723 0.994
EC-A 0.145 0.327 624 -0.49699 0.787
EC-L 0.991 0.231 624 0.53814 1.445
DES-L 1.009 0.188 624 0.64015 1.379
DF 0.332 0.217 624 -0.09448 0.758
Results are averaged over the levels of: mined
Results are given on the log (not the response) scale.
Confidence level used: 0.95
(我们实际上不需要包含 component
,因为默认值为 cond
。)由于使用了 nbinom2
系列,这些结果在对数刻度上在拟合模型的条件部分。您可以通过指定 type
:
> emmeans(mod, ~spp, type = "response")
spp response SE df lower.CL upper.CL
GP 1.553 0.349 624 0.999 2.41
PR 0.682 0.329 624 0.265 1.76
DM 1.814 0.368 624 1.218 2.70
EC-A 1.156 0.378 624 0.608 2.20
EC-L 2.695 0.622 624 1.713 4.24
DES-L 2.744 0.516 624 1.897 3.97
DF 1.394 0.303 624 0.910 2.13
Results are averaged over the levels of: mined
Confidence level used: 0.95
Intervals are back-transformed from the log scale
您可以通过compoenent = "zi"
看到模型的零膨胀部分:
> emmeans(mod, ~spp, component = "zi", type = "response")
spp response SE df lower.CL upper.CL
GP 0.455 0.1064 624 0.2646 0.660
PR 0.763 0.1406 624 0.4115 0.937
DM 0.273 0.1128 624 0.1097 0.534
EC-A 0.719 0.1020 624 0.4870 0.873
EC-L 0.365 0.1085 624 0.1864 0.590
DES-L 0.278 0.0989 624 0.1275 0.503
DF 0.132 0.1150 624 0.0207 0.522
Results are averaged over the levels of: mined
Confidence level used: 0.95
Intervals are back-transformed from the logit scale
此时,似乎无法估计实际平均响应 (1 - zi)*(cond mean);这很有用,但相当混乱,因为它需要组合两个组件。