如何对R中的大矩阵进行成对列回归?

时间:2017-03-24 03:48:35

标签: r regression

我有一个很大的A = M x N矩阵,我想用最后一列对每一列(除了最后一列)进行回归。我希望结果是一个包含以下列的数据框

  1. 第一列的col名称为A(除了最后一个)
  2. 线性回归斜率
  3. 调整后的r-squared
  4. 回归中的非na点数(这意味着捕获对于任何给定的回归对,我只想包括两列都存在的点,基本上排除空值,我认为lm函数已经自动执行)
  5. 在优雅方面做到这一点的最佳方式是什么(不必编写循环以通过列,但使用现有函数)和性能(不需要永远)?

1 个答案:

答案 0 :(得分:1)

如下所示:

A <- iris[1:4]
res <- apply(A[ , 1:(ncol(A)-1)], 2, function(x) lm(A[ , ncol(A)] ~ x, data = A))
slope <- sapply(res, coef)
r_squared <- sapply(res, summary)[8, , drop = FALSE]
t(rbind(slope, r_squared))
##              (Intercept) x          r.squared
## Sepal.Length -3.200215   0.7529176  0.6690277
## Sepal.Width  3.156872    -0.6402766 0.1340482
## Petal.Length -0.3630755  0.4157554  0.9271098