R 创建交互术语时遇到的问题
我有一个data.frame,有7000行36列。有些列是分类变量。 现在我想使用model.matrix为回归创建一个x矩阵。 在该矩阵中,应该是交互术语,如(V1*V2*V3)。 我试着这样做: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如果没有您关于数据结构的进一步信息,将很难回答这个问题 您给出的代码应该可以工作,这表明您可能犯了一些简单的印刷错误。为了
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"
是的,是的。因此,您的代码应该可以工作。也许你只是误解了什么