为什么 joint_tests 函数(emmeans 包)的结果没有显示模型的交互作用之一?

why the results from the joint_tests function (emmeans package) do not show one of the interactions of the model?

我 运行 一个 GLMM_adaptive 模型(我正在做一个资源选择函数)并且我正在使用 joint_tests 函数(emmeans 包)来计算术语的联合测试该模型。问题是其中一种交互没有出现在结果中。

型号是:

mod.hinc <- mixed_model(fixed = Used ~  scale(ndvi) * season * vegfactor + 
                      scale(ndvi^2) + scale(distance^2) + scale(distance) * season, 
                    random = ~ 1 | id, data = hin.c,
                    family = binomial(link="logit"))

在 运行 模型我 运行 joint_tests 函数之后:

install.packages("emmeans")
library(emmeans)
joint_tests(mod.hinc)

这是结果:

 joint_tests(mod.hinc)
 model term            df1 df2 F.ratio p.value
 ndvi                    1 Inf  36.465  <.0001
 season                  3 Inf  22.265  <.0001
 vegfactor               4 Inf   4.548  0.0011
 distance                1 Inf  33.939  <.0001
 ndvi:season             3 Inf  13.826  <.0001
 ndvi:vegfactor          4 Inf   8.500  <.0001
 season:vegfactor       12 Inf   6.544  <.0001
 ndvi:season:vegfactor  12 Inf   5.165  <.0001

我找不到交互比例(距离)*季节没有出现在结果中的原因。

欢迎就此问题提供任何帮助。如果需要,我可以提供有关模型的更多详细信息。

非常感谢您。

胡安

简短的回答是 distance:season 没有显示,因为它得出了零 d.f。对于相关的交互对比。您可以通过 运行 joint_tests(mod.hinc, show0df = TRUE).

来验证这一点

为什么它有 0 d.f。不太清楚。然而,这不是这里唯一的问题。使用 joint_tests() 时,您必须非常小心数字预测器;它不做模型方差分析;相反,如文档所述,它从拟合模型构建参考网格,并执行与预测变量相关的交互对比的联合测试。对于数值预测变量,结果取决于所使用的参考网格。

在此特定实例中,模型包括 ndvidistance 的二次效应;但是,默认参考网格是使用协变量的范围构建的——只有两个不同的值。因此,我们可以了解整体线性趋势的影响,但无法了解二次项隐含的曲率影响。这就是为什么只有 1 d.f。这些因素的主要影响进行了测试。真的有2个d.f。在 ndvidistance 的影响下。为了捕获所有这些影响,我们需要在参考网格中至少具有这些协变量的三个不同值。 实现这一目标的一种方法(不是唯一的方法)是将协变量减少到它们的均值,加上或减去 1 SD -- 这可以通过以下代码完成:

meanpm1sd <- function(x)
    c(mean(x) - sd(x), mean(x), mean(x) + sd(x))

joint_tests(mod.hinc, cov.reduce = meanpm1sd)

这将产生一组不同的联合测试,其中可能包括 2-d.f。 ndvidistance 的测试。但是我不知道你是否还会因为零d.f而缺少一些交互。维度。

如果您对这些影响是什么有任何疑问,可以直接查看正在详细测试的估计值。例如,对于 season:distance

### construct the needed reference grid once and for all
RG <- ref_grid(mod.h1nc, cov.reduce = meanpm1sd)   

EMM <- emmeans(RG, ~ season * distance)
CON <- contrast(EMM, interaction = "consec")

EMM   ### see estimates
CON   ### see interaction contrasts
test(CON, joint = TRUE)

我希望这有助于阐明正在发生的事情。