【发布时间】:2018-10-21 23:52:04
【问题描述】:
我有一个庞大的医疗保险索赔数据集,我想对其应用 GLM 回归。我有 4 个分类预测变量,特别是性别、年龄组、国籍和房间类型(VIP、普通等)。
我的基本 GLM 模型将包括截距项和这 4 个变量。我现在想介绍双向交互,但我不确定哪些交互对模型很重要,哪些不重要。为此,我想运行所有可能的交互组合以及 4 个基本预测变量,然后根据 AIC 或 BIC 或 R-square 等特定特征比较所有模型结果。
我想知道 R 中是否有一个函数或一种简单的方法来运行所有可能的交互并保存它们的 AIC/BIC/R-square,而不必为每个可能的模型写下 glm 函数。
要运行的模型的一些示例是:
1. intercept + Gender + Age + Nationality + RoomType
2. intercept + Gender + Age + Nationality + RoomType + gender*age
3. intercept + Gender + Age + Nationality + RoomType + gender*nationality
4. intercept + Gender + Age + Nationality + RoomType + gender*roomtype
5. intercept + Gender + Age + Nationality + RoomType + age*nationality
6. intercept + Gender + Age + Nationality + RoomType + age*roomtype
7. intercept + Gender + Age + Nationality + RoomType + nationality*roomtype
8. intercept + Gender + Age + Nationality + RoomType + gender*age + gender*nationality
等等。
【问题讨论】:
-
如果你想要所有的交互,试试公式
Resp ~ Gender * Age * Nationality * RoomType。 -
如果您希望所有交互顺序,我相信没有简单的功能可以为您做到这一点。我建议使用
combn(x,2)然后combn(x,3)... 手动构建它,与as.formula或类似的一起使用。不过,这有点爆炸:想想G+A+N+R+G*A和G+A+N+R+G*A+G*N和G+A+N+R+G*A+G*R等。你想要所有2路和2路排列,然后是3路和所有排列3 路和一些 2 路……你知道这怎么会变得一团糟吗?我认为这(以及一些教学原理)可能是为什么(还)不存在这样的功能。 -
在这个计算机能力和机器学习普及的时代很容易假设,如果你只构建一个花哨的算法,让计算机在它上面运行几十亿个周期,任何问题都可以解决.可悲的是,世界没有那么简单。算法模型选择是一个非常诱人的想法,但它充满了坑。 Gung and others 在 CV 上对此进行了更详细的解释,但简而言之:“均值回归”、“过度拟合”和“多重比较问题”是您应该牢记的概念。
标签: r regression glm interaction