我们如何对数据集进行线性回归并将其逐列回归到一个向量?

问题描述 投票:1回答:1

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

r matrix vector lm
1个回答
0
投票

例如,您需要提供数据

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 
© www.soinside.com 2019 - 2024. All rights reserved.