使用 R 中的两个矩阵的列执行线性回归
Performing linear regressions using columns of two matrices in R
我有两个维度相同的大矩阵,例如:
#dummy matrices
A <- matrix(c(1:3288),nrow=12)
B <- matrix(c(3289:6576),nrow=12)
对于每一列,我想 运行 两个矩阵(A 和 B)之间的线性回归,如果可能的话,我想将 lm 的输出放入数据框,例如对于每一列的回归,我想知道 lm r^2、斜率、截距等
感谢任何帮助。
假设您将拟合任意两个列组合之间的回归,这可能是一个解决方案。请记住,根据您最终想要的 data.frame 代码会发生变化。
A <- matrix(c(1:3288),nrow=12)
B <- matrix(c(3289:6576),nrow=12)
library(broom)
library(dplyr)
results <- NULL
for (i in 1:ncol(A)){
for (j in 1:ncol(B)){
model_<-lm(A[,i]~B[,j])
results<-bind_rows(results,
bind_cols(columnx = i,
columny = j,
glance(model_),
intercept=model_$coefficients[1],
slope=model_$coefficients[2]
)
)
}
}
如果您只需要以 A 中第 1 列的形式与 B 中的第 1 列、2 与 2 等形式进行成对回归,则可以使用 purr 包中的 map 编写更优雅的解决方案.希望这有帮助。
编辑:仅适合 A 中的 1 和 B 中的 1 a 等等
library(purrr)
library(dplyr)
library(broom)
A<-data.frame(A)
B<-data.frame(B)
results <- map2_df(.x = A,
.y = B, ~ {
model_<-lm(.y ~ .x)
bind_cols(glance(model_),
intercept=model_$coefficients[1],
slope=model_$coefficients[2]
)
})
这是咕噜声documentation。解释 map2_df 是如何工作的非常清楚。它基本上同时在两个列表上循环执行一个函数并返回 data.frame.
我有两个维度相同的大矩阵,例如:
#dummy matrices
A <- matrix(c(1:3288),nrow=12)
B <- matrix(c(3289:6576),nrow=12)
对于每一列,我想 运行 两个矩阵(A 和 B)之间的线性回归,如果可能的话,我想将 lm 的输出放入数据框,例如对于每一列的回归,我想知道 lm r^2、斜率、截距等
感谢任何帮助。
假设您将拟合任意两个列组合之间的回归,这可能是一个解决方案。请记住,根据您最终想要的 data.frame 代码会发生变化。
A <- matrix(c(1:3288),nrow=12)
B <- matrix(c(3289:6576),nrow=12)
library(broom)
library(dplyr)
results <- NULL
for (i in 1:ncol(A)){
for (j in 1:ncol(B)){
model_<-lm(A[,i]~B[,j])
results<-bind_rows(results,
bind_cols(columnx = i,
columny = j,
glance(model_),
intercept=model_$coefficients[1],
slope=model_$coefficients[2]
)
)
}
}
如果您只需要以 A 中第 1 列的形式与 B 中的第 1 列、2 与 2 等形式进行成对回归,则可以使用 purr 包中的 map 编写更优雅的解决方案.希望这有帮助。
编辑:仅适合 A 中的 1 和 B 中的 1 a 等等
library(purrr)
library(dplyr)
library(broom)
A<-data.frame(A)
B<-data.frame(B)
results <- map2_df(.x = A,
.y = B, ~ {
model_<-lm(.y ~ .x)
bind_cols(glance(model_),
intercept=model_$coefficients[1],
slope=model_$coefficients[2]
)
})
这是咕噜声documentation。解释 map2_df 是如何工作的非常清楚。它基本上同时在两个列表上循环执行一个函数并返回 data.frame.