R 创建交互术语时遇到的问题

R 创建交互术语时遇到的问题,r,regression,interaction,model.matrix,R,Regression,Interaction,Model.matrix,我有一个data.frame,有7000行36列。有些列是分类变量。 现在我想使用model.matrix为回归创建一个x矩阵。 在该矩阵中,应该是交互术语,如(V1*V2*V3)。 我试着这样做: formelhas <- formula(k ~ .^3) test <- model.matrix(formelhas,testahah) formelhas如果没有您关于数据结构的进一步信息,将很难回答这个问题 您给出的代码应该可以工作,这表明您可能犯了一些简单的印刷错误。为了

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

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

formelhas如果没有您关于数据结构的进一步信息,将很难回答这个问题

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

无交互:

> 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" ...
双向互动:

> 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" ...
三方互动:

> 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"
是的,是的。因此,您的代码应该可以工作。也许你只是误解了什么