【问题标题】:Add all interactions among categorical variables in lasso in R在R中的套索中添加分类变量之间的所有交互
【发布时间】:2020-03-08 20:06:29
【问题描述】:

我想在八个变量之间添加所有可能的交互,这些变量都是分类的。我的数据集如下所示 enter image description here

我使用as.formula 来包含所有交互。我的代码如下

f = as.formula(y ~ .^8)
x = model.matrix(f, data)[, -1]
y = data$y

但是,我的x 变成了关注 enter image description here

总共有 6560 列。我不知道为什么会变成这样。 x 变量中的1, 2, 3 不应该是吗?请问我应该如何解决这个问题或解释这个问题?

谢谢!

【问题讨论】:

    标签: r categorical-data interaction lasso-regression


    【解决方案1】:

    您有八个变量,每个变量具有三个级别。您希望包括所有可能的交互,即八个因素的所有可能组合。

    您的预测变量有 3^8 种不同的可能值组合。因此,您的设计矩阵中有 3^8=6561 种可能的主效应和交互作用(包括截距)。

    要查看它们的编码方式,请考虑单个 3 级预测器:

    > model.matrix(lm(y ~ x1))
      (Intercept) x12 x13
    1           1   0   0
    2           1   1   0
    3           1   0   1
    

    一个 3 水平因子被编码为 3 列,一个截距加上两个虚拟变量。

    现在添加第二个 3 级预测器及其交互:

    > model.matrix(lm(y ~ (x1+x2)^2))
      (Intercept) x12 x13 x22 x23 x12:x22 x13:x22 x12:x23 x13:x23
    1           1   0   0   0   1       0       0       0       0
    2           1   1   0   1   0       1       0       0       0
    3           1   0   1   0   0       0       0       0       0
    

    所以这里有 9 种允许的二进制变量组合。当您获得多达 8 个变量时,您的 6561 个可能的预测变量组合中的每一个都由这些二元变量的允许组合表示。 (显然你不能同时拥有x12x13 阳性)。

    【讨论】:

    • 非常感谢!这对我来说很有意义!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-16
    • 2018-06-11
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    相关资源
    最近更新 更多