【问题标题】:How do we do linear regression on a dataset and regress it to one vector column by column?我们如何对数据集进行线性回归并将其逐列回归到一个向量?
【发布时间】:2020-05-18 02:20:39
【问题描述】:

我有一个 6x1 的向量和一个 6X1000 的矩阵。我想使用相同的向量对每一列进行线性回归。我需要这个算法来遍历我的矩阵并从每个相关/回归中提取每个 R^2 值。有人能帮忙吗?谢谢!

【问题讨论】:

  • Asim,你能提供一个可重现的问题的简化版本吗?查看stackoverflow.com/questions/5963269。如果您能给我们一些样本数据(例如,一个 6x10 矩阵)并展示答案的样子,那将有助于我们为您提供帮助。
  • purrr.tidyverse.org 中的 USAGE 示例有帮助吗?
  • 为此,只需 sapplycor 即可。

标签: r matrix vector lm


【解决方案1】:

您需要提供数据,例如

set.seed(42)
x <- matrix(rnorm(6), 6, 1)
y <- matrix(rnorm(6*10), 6, 10) # Just 10 columns to demonstrate

第一个解决方案使用x作为自变量,y的每一列作为线性回归中的因变量,然后提取R2值。第二种解决方案只计算平方相关系数,因为这对于二元回归是相同的:

corrs <- sapply(1:10, function(i) summary(lm(y[, i]~x))$r.squared)
#  [1] 0.039143014 0.003056088 0.897015721 0.282917356 0.019288198 0.001808288 0.055232746 0.276741234 0.008821625 0.073663713
sapply(1:10, function(i) cor(x, y[, i])^2)
#  [1] 0.039143014 0.003056088 0.897015721 0.282917356 0.019288198 0.001808288 0.055232746 0.276741234 0.008821625 0.073663713
names(corrs) <- 1:10  # Label the columns
corrs[which(corrs > .25)]
#         3         4         8 
# 0.8970157 0.2829174 0.2767412 

【讨论】:

  • 这很有帮助。如果我想调用大于 X 的值以及与它们关联的列名,我该怎么做?
  • 我已将其添加到答案中。只需标记相关向量的列 (corrs),然后使用 which 获取值和列号/名称。
猜你喜欢
  • 2020-06-11
  • 2020-11-01
  • 1970-01-01
  • 2019-10-01
  • 2021-05-07
  • 1970-01-01
  • 2017-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多