我正在运行一些模型选择程序,这些程序基于对大约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秒相差甚远 - 所以它在代码中显然有一些优化。如何实施优化?
答案 0 :(得分:6)
底层的Fortran代码(由Allan Miller编写)使用基于Furnival& amp;威尔逊(Technometrics,1974)。这排除了大量的模型空间,基于从模型中删除变量只能增加剩余平方和的原理。
该实现也是有效的,仅计算每个模型的残差平方和,并且仅计算预测器的QR分解一次。