首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >建立具有多(8)个预测变量的负二项GLMM

建立具有多(8)个预测变量的负二项GLMM
EN

Stack Overflow用户
提问于 2021-04-21 21:00:59
回答 1查看 19关注 0票数 1

我是R的新手,我正在尝试使用负二项GLMM创建模型。问题是,我有一个响应变量,我想测试8个预测变量的多重共线性。例如,当只有3个预测变量时,这似乎很容易,因为这意味着只有4种可能的组合。然而,我想知道在测试多重共线性时,是否有一种更容易的方法来为8个不同的预测变量设置所有可能的组合,而不是手动检查每个组合,这意味着要针对响应变量测试8个预测变量的50多个不同的组合。

我一直在使用MASS包中的glm.nb函数,我不确定它与glmmTMB包之间是否有很大的区别。

EN

回答 1

Stack Overflow用户

发布于 2021-04-21 21:32:27

基本上,您似乎对生成至少具有两个值的所有组合感兴趣。一种非常巧妙的方法是创建一个地图,如下所示:

代码语言:javascript
复制
Map<ValueType,Boolean> items = new Map<ValueType,Boolean>();

其中ValueType是您的值的类型。假设您有一个名为values的数组,其中包含要使用的实际值。让我们用它来填充地图:

代码语言:javascript
复制
for (int index = 0; index < values.length; index++) {
    map.put(index, false);
}

非常好。现在,让我们创建一个跟踪TRUE值数量的数值:

代码语言:javascript
复制
int combinationCount = 0;

这就是如何生成和处理您的组合,其中您拥有的n个值被表示为n个数字的布尔数,其中每个数字都在当前组合中,当且仅当其在映射中的表示为真。

代码语言:javascript
复制
int top = 0;
while (top < values.length) {
    boolean stop = false;
    for (top = 0; (!stop) && (top < values.length); top++) {
        stop = !map.get(top);
        stop ? combinationCount++ : combinationCount--;
        map.put(stop);
        if (combinationCount >= 2) {
            for (int innerIndex = 0; innerIndex < values.length; innerIndex++) {
                if (map.get(innerIndex)) {
                    //values[innerIndex] is inside the current combination
                }
            }
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67196488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档