我假设你有数据框为mydata。
mydata<-mtcars #mtcars is the data in R
dep<-c("mpg~","cyl~","disp~") # list of unique dependent variables with ~
indep1<-c("hp","drat","wt") # list of first unique independent variables
indep2<-c("qsec","vs","am") # list of second unique independent variables
> myvar<-cbind(dep,indep1,indep2) # matrix of variables
> myvar
dep indep1 indep2
[1,] "mpg~" "hp" "qsec"
[2,] "cyl~" "drat" "vs"
[3,] "disp~" "wt" "am"
for (i in 1:dim(myvar)[1]){
print(paste("This is", i, "regression", "with dependent var",gsub("~","",myvar[i,1])))
k[[i]]<-lm(as.formula(paste(myvar[i,1],paste(myvar[i,2:3],collapse="+"))),mydata)
print(k[[i]]
}
[1] "This is 1 regression with dependent var mpg"
Call:
lm(formula = as.formula(paste(myvar[i, 1], paste(myvar[i, 2:3],
collapse = "+"))), data = mydata)
Coefficients:
(Intercept) hp qsec
48.32371 -0.08459 -0.88658
[1] "This is 2 regression with dependent var cyl"
Call:
lm(formula = as.formula(paste(myvar[i, 1], paste(myvar[i, 2:3],
collapse = "+"))), data = mydata)
Coefficients:
(Intercept) drat vs
12.265 -1.421 -2.209
[1] "This is 3 regression with dependent var disp"
Call:
lm(formula = as.formula(paste(myvar[i, 1], paste(myvar[i, 2:3],
collapse = "+"))), data = mydata)
Coefficients:
(Intercept) wt am
-148.59 116.47 11.31
注:您可以使用相同的过程中大量的变量。
替代做法:
由哈德利的答案here的启发,我使用功能Map
来解决上述问题:
dep<-list("mpg~","cyl~","disp~") # list of unique dependent variables with ~
indep1<-list("hp","drat","wt") # list of first unique independent variables
indep2<-list("qsec","vs","am") # list of second unique independent variables
Map(function(x,y,z) lm(as.formula(paste(x,paste(list(y,z),collapse="+"))),data=mtcars),dep,indep1,indep2)
[[1]]
Call:
lm(formula = as.formula(paste(x, paste(list(y, z), collapse = "+"))),
data = mtcars)
Coefficients:
(Intercept) hp qsec
48.32371 -0.08459 -0.88658
[[2]]
Call:
lm(formula = as.formula(paste(x, paste(list(y, z), collapse = "+"))),
data = mtcars)
Coefficients:
(Intercept) drat vs
12.265 -1.421 -2.209
[[3]]
Call:
lm(formula = as.formula(paste(x, paste(list(y, z), collapse = "+"))),
data = mtcars)
Coefficients:
(Intercept) wt am
-148.59 116.47 11.31
通过“因变量”,你的意思是你要预测数,和“自变量”是你想要用来做预测的数字吗?请注意,在R的公式语法中,因变量在代字号的左侧进行,IVs在RHS('lm(DV〜IV)')上进行。 – gung
[PLS回归](http://en.wikipedia.org/wiki/Partial_least_squares_regression)是一种选择。 – chl
对不起,我确实是这样说的。我打开了我的IV和DV.I也标记了我的问题,让它移到了堆栈溢出,因为我主要是看如何在R中实现它,因为我理解它背后的概念。谢谢你。 – user2355903