我已经在Stack Overflow上多次看到成对或一般配对的简单线性回归.这是一个针对此类问题的玩具数据集.
set.seed(0)
X <- matrix(runif(100), 100, 5, dimnames = list(1:100, LETTERS[1:5]))
b <- c(1, 0.7, 1.3, 2.9, -2)
dat <- X * b[col(X)] + matrix(rnorm(100 * 5, 0, 0.1), 100, 5)
dat <- as.data.frame(dat)
pairs(dat)
Run Code Online (Sandbox Code Playgroud)
所以基本上我们想要计算5*4 = 20个回归线:
----- A ~ B A ~ C A ~ D A ~ E
B ~ A ----- B ~ C B ~ D B ~ E
C ~ A C ~ B ----- C ~ D C ~ E
D ~ …Run Code Online (Sandbox Code Playgroud) 首先,我对此很陌生,因此我的方法/想法可能是错误的,我已经使用R和R studio将xlsx数据集导入到数据框中。我希望能够遍历列名以获取所有变量,其中所有变量的精确值为“ 10 ”,以便运行简单的线性回归。所以这是我的代码:
indx <- grepl('_10_', colnames(data)) #list returns all of the true values in the data set
col10 <- names(data[indx]) #this gives me the names of the columns I want
Run Code Online (Sandbox Code Playgroud)
这是我有的for循环,返回错误:
temp <- c()
for(i in 1:length(col10)){
temp = col10[[i]]
lm.test <- lm(Total_Transactions ~ temp[[i]], data = data)
print(temp) #actually prints out the right column names
i + 1
}
Run Code Online (Sandbox Code Playgroud)
甚至可以运行一个循环来将这些变量放入线性回归模型中?我得到的错误是:“ model.frame.default中的错误(公式= Total_Transactions〜temp [[i]] ,:可变长度不同(为'temp [[i]]'找到))”。如果有人可以指点我朝着正确的方向前进,我将非常感谢。
我在表单中运行回归
reg=lm(y ~ x1+x2+x3+z1,data=mydata)
Run Code Online (Sandbox Code Playgroud)
在最后一个术语的位置z1,我想循环遍历一组不同的变量,z1通过z10为每个变量运行一个回归作为最后一个术语.例如,在第二次运行中我想使用
reg=lm(y ~ x1+x2+x3+z2,data=mydata)
Run Code Online (Sandbox Code Playgroud)
在第三轮:
reg=lm(y ~ x1+x2+x3+z3,data=mydata)
Run Code Online (Sandbox Code Playgroud)
如何通过循环遍历z变量列表来自动执行此操作?