我是R的新手,我正在尝试使用负二项GLMM创建模型。问题是,我有一个响应变量,我想测试8个预测变量的多重共线性。例如,当只有3个预测变量时,这似乎很容易,因为这意味着只有4种可能的组合。然而,我想知道在测试多重共线性时,是否有一种更容易的方法来为8个不同的预测变量设置所有可能的组合,而不是手动检查每个组合,这意味着要针对响应变量测试8个预测变量的50多个不同的组合。
我一直在使用MASS包中的glm.nb函数,我不确定它与glmmTMB包之间是否有很大的区别。
发布于 2021-04-21 21:32:27
基本上,您似乎对生成至少具有两个值的所有组合感兴趣。一种非常巧妙的方法是创建一个地图,如下所示:
Map<ValueType,Boolean> items = new Map<ValueType,Boolean>();其中ValueType是您的值的类型。假设您有一个名为values的数组,其中包含要使用的实际值。让我们用它来填充地图:
for (int index = 0; index < values.length; index++) {
map.put(index, false);
}非常好。现在,让我们创建一个跟踪TRUE值数量的数值:
int combinationCount = 0;这就是如何生成和处理您的组合,其中您拥有的n个值被表示为n个数字的布尔数,其中每个数字都在当前组合中,当且仅当其在映射中的表示为真。
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
}
}
}
}
}https://stackoverflow.com/questions/67196488
复制相似问题