R&C的跳跃包中的regsubsets如何在引擎盖下进行优化以进行详尽的模型选择搜索?

时间:2014-05-13 17:36:53

标签: r brute-force

我正在运行一些模型选择程序,这些程序基于对大约50个变量给出答案的人的43次调查。我已经将足够有用的变量缩小到22并丢弃其余变量。

我想使用R中leaps库中详尽的regsubsets算法进行模型选择。我设置nvmax = 22 - 我的集合中预测变量的数量 - regsubsets用它的速度吹走了我 - 只需几秒钟就可以运行2 ^ 22~4万次回归。这不可能枚举22选择k的所有组合从1到22的所有k并且回归,可以吗?

regsubsets是否以某种方式进行了优化,以便“详尽”算法可以巧妙地省略绝大多数回归,它可以知道先验相对于最佳可用的R ^ 2会有什么不好?

我发现当我运行lm(y~.x,data = some.df)时,这只用了25秒就只有10,000次回归 - 与regsubsets分析400万次回归所用的3或4秒相差甚远 - 所以它在代码中显然有一些优化。如何实施优化?

1 个答案:

答案 0 :(得分:6)

底层的Fortran代码(由Allan Miller编写)使用基于Furnival& amp;威尔逊(Technometrics,1974)。这排除了大量的模型空间,基于从模型中删除变量只能增加剩余平方和的原理。

该实现也是有效的,仅计算每个模型的残差平方和,并且仅计算预测器的QR分解一次。