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



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

问题是我的模型包含 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) 

我的问题是:

如何为每个模型/区域组合生成预测价格表?

使用.*.

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 和 X3lm(Y ~ .*.)相当于lm(Y ~ X1 + X2 + X3 + X1:X2 + X1:X3 + X2:X3)

最新更新