通过回归方程运行虚拟变量的所有组合

时间:2018-07-11 02:04:14

标签: r regression

我有一个问题,涉及从虚拟变量所有可能组合的回归中提取输出,同时保持连续预测变量不变。

问题是我的模型包含100多种交互组合,而手动计算所有这些组合将非常繁琐。有没有一种有效的方法来迭代计算输出?

我能想到的唯一方法是编写一个循环,该循环生成所有所需的组合,然后将其馈送到predict()函数中。

某些上下文:

我试图通过汽车模型来确定汽车转售​​价格的区域差异。

我的模型如下所示:

lm(data, price ~ age + mileage + region_dummy_1 + ... + region_dummy_n + model_dummy_1 + ... + model_dummy_n + region_dummy_1 * model_dummy_1 + ... + region_dummy_1 * model_dummy_n) 

我的问题是:

如何为每种型号/地区组合生成预测价格表?

1 个答案:

答案 0 :(得分:0)

使用.*.

lm(price ~ .*.)

这是一个可复制的小例子:

> df <- data.frame(y  = rnorm(100,0,1),
+                  x1 = rnorm(100,0,1),
+                  x2 = rnorm(100,0,1),
+                  x3 = rnorm(100,0,1))
> 
> lm(y ~ .*., data = df)

Call:
lm(formula = y ~ . * ., data = df)

Coefficients:
(Intercept)           x1           x2           x3        x1:x2        x1:x3  
   -0.02036      0.08147      0.02354     -0.03055      0.05752     -0.02399  
      x2:x3  
    0.24065 

它如何工作?

.是“所有预测变量”的简写,并且*包括双向交互项。

例如,考虑一个包含3列的数据框: Y(独立变量) 2个预测变量(X1和X2)。语法lm(Y ~ X1*X2)lm(Y ~ X1 + X2 + X1:X2)的简写,其中X1:X2是交互项。

扩展这个简单的案例,假设我们有一个包含3个预测变量的数据框,分别是 X1,X2和X3 lm(Y ~ .*.)等同于lm(Y ~ X1 + X2 + X3 + X1:X2 + X1:X3 + X2:X3)