我有一个问题,它涉及从回归中提取所有可能的虚拟变量组合的输出,同时保持连续预测变量的固定。
问题是我的模型包含 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 和 X3。lm(Y ~ .*.)
相当于lm(Y ~ X1 + X2 + X3 + X1:X2 + X1:X3 + X2:X3)
。