【问题标题】:Running all Combinations of Dummy Variables Through a Regression Equation通过回归方程运行虚拟变量的所有组合
【发布时间】:2018-07-11 02:04:14
【问题描述】:

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

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

我的问题是:

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

【问题讨论】:

  • 那么您的问题又是什么?写模型?
  • 我正在尝试查找每个模型/地区组合的预测价格。很抱歉造成混乱。
  • 抱歉,但仍不清楚。预测函数有什么问题
  • 我希望模型/地区与年龄和里程的每个组合都处于固定水平。我可以用 predict 来做到这一点,但它非常乏味。我想知道是否有任何关于循环的功能或建议,以避免每次我想这样做时都必须提供输入。
  • 我相信您正在寻找expand.grid 功能。这采用多个值向量并生成每个排列。

标签: r regression


【解决方案1】:

使用.*.

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)

【讨论】:

  • 一个非常有用的快捷方式!恐怕我的问题不够清楚。我已经有了我的模型。我正在尝试使用该模型为给定固定年龄和里程的区域和汽车模型的所有组合生成预测价格。
猜你喜欢
  • 2019-12-30
  • 2017-09-14
  • 1970-01-01
  • 2018-01-20
  • 1970-01-01
  • 2014-12-24
  • 2017-08-01
  • 2013-05-06
  • 2018-11-16
相关资源
最近更新 更多