针对矩阵的每列线性回归矢量

use*_*925 1 loops r matrix linear-regression plyr

我有一个非常简单的问题,我相信有一个优雅的答案(我也确定上面的标题是不合适的).我有一个y值的向量:

y = matrix(c(1, 2, 3, 4, 5, 6, 7), nrow=7, ncol=1)
Run Code Online (Sandbox Code Playgroud)

我想对矩阵中的每一列进行回归,x:

x = matrix(c(1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 4, 4, 4, 4, 4, 4, 4), nrow=7, ncol=3)
Run Code Online (Sandbox Code Playgroud)

例如,我想将x的第一列与y线性回归,然后x的第二列对y进行线性回归,直到达到x的最后一列:

regression.1=lm(y~x[,1])
regression.2=lm(y~x[,2])
Run Code Online (Sandbox Code Playgroud)

我稍后想要绘制这些回归与其他参数的斜率,因此如果模型系数参数可以通过常规方式轻松访问,那将非常有用:

slope.1 = summary(regression.1)$coefficients[2,1]
Run Code Online (Sandbox Code Playgroud)

我正在使用像plyr这样的东西来猜测一个列表,但是我对这个游戏来说太新了,无法找到最简单的编码方法.

day*_*yne 6

store <- mapply(col.ind = 1:ncol(x),function(col.ind){ lm(y~x[,col.ind]) })
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用以下方法访问斜率

> store[1,]
[[1]]
  (Intercept) x[, col.ind] 
 6.713998e-16 1.000000e+00 

[[2]]
  (Intercept) x[, col.ind] 
            8           -1 

[[3]]
  (Intercept) x[, col.ind] 
            4           NA 
Run Code Online (Sandbox Code Playgroud)