lm() 回归与整个数据帧的交互
lm() Regression with interactions for an entire dataframe
我知道 R
中有一条捷径可以 运行 对所有数据帧进行 lm()
回归,如下所示:
reg<-lm(y~.,data=df)
由于 df 有解释变量 x1, x2, ... x5,所以和写
是一样的
reg<-lm(y~x1+x2+x3+x4+x5,data=df)
但这不包括像 x1:x2 这样的交互项,... R
中是否有一个快捷方式到 运行 对具有交互的数据框的所有列进行回归?
我正在寻找与
具有相同效果的 2 个快捷方式
reg<-lm(y~x1*x2,x1*x3,x1*x4,x1*x5,x2*x3,...)
reg<-lm(y~x1*x2*x3*x4*x5) # this one will have interactions between the 5 variables
对于两者,您可以使用 ^
运算符。
看例子:
在第一种情况下,您只需要成对交互(双向交互)。所以你可以这样做:
#Example df
df <- data.frame(a=runif(1:100), b=runif(1:100), c=runif(1:100), d=runif(1:100))
> lm(a ~ (b+c+d)^2, data=df)
Call:
lm(formula = a ~ (b + c + d)^2, data = df)
Coefficients:
(Intercept) b c d b:c b:d c:d
0.53873 0.23531 0.07813 -0.14763 -0.43130 0.11084 0.13181
如您所见,上面产生了成对交互
现在为了包括您可以进行的所有交互:
> lm(a ~ (b+c+d)^5 , data=df)
Call:
lm(formula = a ~ (b + c + d)^5, data = df)
Coefficients:
(Intercept) b c d b:c b:d c:d b:c:d
0.54059 0.23123 0.07455 -0.15150 -0.42340 0.11926 0.14017 -0.01803
在这种情况下,您只需要使用一个大于您将使用的变量数量的数字(在这种情况下,我使用 5,但它可以大于 3)。如您所见,所有交互都已产生。
您要搜索的快捷方式是:
reg <- lm(y ~ (.)^2, data = df)
这将创建一个模型,其中包含主效应和回归变量之间的交互作用。
我知道 R
中有一条捷径可以 运行 对所有数据帧进行 lm()
回归,如下所示:
reg<-lm(y~.,data=df)
由于 df 有解释变量 x1, x2, ... x5,所以和写
是一样的reg<-lm(y~x1+x2+x3+x4+x5,data=df)
但这不包括像 x1:x2 这样的交互项,... R
中是否有一个快捷方式到 运行 对具有交互的数据框的所有列进行回归?
我正在寻找与
reg<-lm(y~x1*x2,x1*x3,x1*x4,x1*x5,x2*x3,...)
reg<-lm(y~x1*x2*x3*x4*x5) # this one will have interactions between the 5 variables
对于两者,您可以使用 ^
运算符。
看例子:
在第一种情况下,您只需要成对交互(双向交互)。所以你可以这样做:
#Example df
df <- data.frame(a=runif(1:100), b=runif(1:100), c=runif(1:100), d=runif(1:100))
> lm(a ~ (b+c+d)^2, data=df)
Call:
lm(formula = a ~ (b + c + d)^2, data = df)
Coefficients:
(Intercept) b c d b:c b:d c:d
0.53873 0.23531 0.07813 -0.14763 -0.43130 0.11084 0.13181
如您所见,上面产生了成对交互
现在为了包括您可以进行的所有交互:
> lm(a ~ (b+c+d)^5 , data=df)
Call:
lm(formula = a ~ (b + c + d)^5, data = df)
Coefficients:
(Intercept) b c d b:c b:d c:d b:c:d
0.54059 0.23123 0.07455 -0.15150 -0.42340 0.11926 0.14017 -0.01803
在这种情况下,您只需要使用一个大于您将使用的变量数量的数字(在这种情况下,我使用 5,但它可以大于 3)。如您所见,所有交互都已产生。
您要搜索的快捷方式是:
reg <- lm(y ~ (.)^2, data = df)
这将创建一个模型,其中包含主效应和回归变量之间的交互作用。