我想在R中使用7个预测变量(5个连续预测变量和2个分类变量)对数据集执行自动,详尽的模型选择 . 我希望所有连续预测变量都具有交互的可能性(至少最多3个方向的交互)并且还具有不相互作用的平方项 .
我一直在使用 leaps
包中的 regsubsets()
并获得了良好的结果,但是许多模型都包含交互项而不包括主效应(例如, g*h
是包含的模型预测器,但 g
不是) . 由于包含主效应也会影响模型得分(Cp,BIC等),因此将它们包括在与其他模型的比较中是很重要的,即使它们不是强预测因子 .
我可以手动清除结果并交叉包含没有主效应的交互的模型,但是我很可能确定 regsubsets()
或 leaps()
是不可能的,也可能不是 glmulti
. 有没有人知道另一个详尽的模型选择功能,允许这样的规范或对脚本建议,将对模型输出进行排序,只找到符合我的规格的模型?
以下是使用 regsubsets()
进行模型搜索的简化输出 . 您可以看到模型3和4确实包含交互术语,而不包括所有相关的主效应 . 如果没有其他功能可以用我的规范运行搜索,那么有关轻松设置此输出以排除没有包含必要主效应的模型的建议将会有所帮助 .
Model adjR2 BIC CP n_pred X.Intercept. x1 x2 x3 x1.x2 x1.x3 x2.x3 x1.x2.x3
1 0.470344346 -41.26794246 94.82406866 1 TRUE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
2 0.437034361 -36.5715963 105.3785057 1 TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
3 0.366989617 -27.54194252 127.5725366 1 TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
4 0.625478214 -64.64414719 46.08686422 2 TRUE TRUE FALSE FALSE FALSE FALSE FALSE TRUE
2 回答
您可以使用MuMIn包中的
dredge()
函数 .另见Subsetting in dredge (MuMIn) - must include interaction if main effects are present .
使用
dredge
后,我发现我的模型有太多的预测变量和相互作用,可以在合理的时间内运行挖泥机(我计算了40个潜在的预测变量,可能需要300k小时才能在我的计算机上完成搜索) . 但它确实排除了交互与主效应不匹配的模型,所以我想这对许多人来说可能仍然是一个很好的解决方案 .根据我的需要,我已经回到
regsubsets
并编写了一些代码来解析搜索输出,以便排除包含未包含在主要效果中的交互中的术语的模型 . 这段代码似乎运行良好,所以我已经有十万个模型来测试你可能想让它更时尚 . (我一直致力于搜索大约50,000个型号和多达40个因素,这些因素需要我的2.4ghz i5核心才能处理几个小时)