从 3 个变量桶中的每一个变量中选择一个变量

机器算法验证 r 回归 特征选择
2022-04-08 21:29:09

我有一个如下所示的回归模型

glm.nb(formula = y ~ Gender + Age + x1 + x2 + x3, data = df)

在我的问题中,有 20 种可能的变量选择x1, 20 种可能的选择x2,以及 20 种可能的选择x3Gender并且Age必须在模型中。这给我留下了 20*20*20 = 8,000 个可能的回归。我能够创建一个运行所有这些回归并为我提供最低 AIC 的程序,但我想知道是否有一个库已经这样做了。

我不认为以任何统计方式我会发现什么是“最佳”模型,但我确实发现这个练习对探索我的数据很有用。

我已经尝试过使用 bestglm 和跳跃。我不相信这些程序允许从多个变量桶中指定变量的选择。

2个回答

因为你有三个分类变量20每个类别,加上性别和年龄,总共为您提供3×19+1=58二元变量和一个连续变量。如果您愿意在没有交互影响的情况下继续进行,那将为您提供一个具有60系数(包括截距项)。这是一个相对可管理的术语数量,并且使用合理大小的数据集,您应该有足够数量的剩余自由度,并获得对参数的合理估计。

如果您决定要包括分类变量之间的交互作用,您的问题就会出现。在您的三个分类变量之间添加二向和三向交互,为您提供203=8000模型中的参数而不是57. (如果您还与性别和年龄交互,则该值再次翻两番。)这是大量参数,您需要大量数据来确保您有足够数量的剩余自由度。即使您有足够的数据,以您描述的方式从分类变量中挑选交互项也是值得怀疑的——这是数据挖掘的经典示例。您应该为分类交互包含整组交互项,或者删除整组交互项,而不是这样做。从广泛的分类变量的指标值中挑选交互项是不合法的。

如果您有 60 个可能的协变量,并且只是希望能够使用该模型来构建预测并且不太关心可解释性,您可以在数据的训练集上构建一个随机森林,看看您可以使用什么样的预测能力从它建立的模型中获取。r 中的包 randomForest 可以帮助您。