【问题标题】:Problems creating interactions terms创建交互项的问题
【发布时间】:2018-07-02 09:23:12
【问题描述】:

我有一个包含 7000 行和 36 列的 data.frame。某些列是分类变量。 现在我想使用model.matrix为回归创建一个x矩阵。 在该矩阵中应该是交互项,例如 (V1*V2*V3)。 我试着这样做:

formelhas <- formula(k ~ .^3)
 test <-  model.matrix(formelhas,testahah)

Testaha 是数据框。

在结果测试中只有交互项,如 (V1*V2),没有三阶交互项 (V1*V2*V3) 项。为什么?

【问题讨论】:

    标签: r regression interaction model.matrix


    【解决方案1】:

    如果没有您提供有关数据结构的更多信息,将很难回答这个问题。

    您提供的代码应该可以工作,这表明您可能犯了某种简单的印刷错误。为了确认这一点,让我们做一个快速可重现的例子,看看三向交互确实是从内置数据集中的类似代码生成的:

    没有互动:

    > str(colnames(model.matrix(mpg ~ ., mtcars)))
     chr [1:11] "(Intercept)" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear" "carb"
    

    双向交互:

    > str(colnames(model.matrix(mpg ~ .^2, mtcars)))
     chr [1:56] "(Intercept)" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear" "carb" "cyl:disp" ...
    

    三向交互:

    > str(colnames(model.matrix(mpg ~ .^3, mtcars)))
     chr [1:176] "(Intercept)" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear" "carb" "cyl:disp" ...
    

    他们真的在那里吗?

    > tail(colnames(model.matrix(mpg ~ .^3, mtcars)))
    [1] "qsec:am:carb"   "qsec:gear:carb" "vs:am:gear"     "vs:am:carb"     "vs:gear:carb"   "am:gear:carb"
    

    是的,是的。因此,您的代码应该可以工作。也许你只是误解了什么?

    【讨论】:

      猜你喜欢
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-01
      • 2011-11-11
      • 2017-11-06
      • 1970-01-01
      相关资源
      最近更新 更多