使用R中两个矩阵的列执行线性回归

使用R中两个矩阵的列执行线性回归,r,matrix,lm,R,Matrix,Lm,我有两个尺寸相同的大型矩阵,例如: #dummy matrices A <- matrix(c(1:3288),nrow=12) B <- matrix(c(3289:6576),nrow=12) #虚拟矩阵 A假设您将拟合任意两个列组合之间的回归,这可能是一个解决方案。请记住,根据最终在结果data.frame中需要的内容,代码将发生变化 A <- matrix(c(1:3288),nrow=12) B <- matrix(c(3289:6576),nrow=12

我有两个尺寸相同的大型矩阵,例如:

#dummy matrices
A <- matrix(c(1:3288),nrow=12) 
B <- matrix(c(3289:6576),nrow=12)
#虚拟矩阵

A假设您将拟合任意两个列组合之间的回归,这可能是一个解决方案。请记住,根据最终在结果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假设您将拟合任意两个列组合之间的回归,这可能是一个解决方案。请记住,根据最终在结果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从
lm_列表开始从
lm_列表开始Hi@Phill-我只需要将列1a成对回归到列B和列2,实际上是2等等…这样就太好了感谢您的快速回复!我刚刚编辑了答案以包含该场景。请记住,两个矩阵中的列数必须相同。如果矩阵之间的列数不一致,那么“for”方法可能更灵活,但效率更低:)啊,我的数据集有一个问题,Na的。。。。有没有一种方法可以将na.omit=T方面添加到这个方面?也许在model_中,在这种情况下,lm中让您处理NA的参数是NA.action,您可以在这里查看它:和这里。根据您的评论,您可能希望在lm呼叫中使用na.action=na.omit whithin(不客气:)您是否考虑过某种输入?还是将观察结果汇总为每周数据?此外,在运行任何估算之前,您可以使用complete.cases来查看NA问题的严重程度isHi@Phill-我只需要将第1列A到第2列B和第2列之间的两两回归,以及2的实际值等等…所以这将非常棒感谢您的快速回复!我刚刚编辑了答案以包含该场景。请记住,两个矩阵中的列数必须相同。如果矩阵之间的列数不一致,那么“for”方法可能更灵活,但效率更低:)啊,我的数据集有一个问题,Na的。。。。有没有一种方法可以将na.omit=T方面添加到这个方面?也许在model_中,在这种情况下,lm中让您处理NA的参数是NA.action,您可以在这里查看它:和这里。根据您的评论,您可能希望在lm呼叫中使用na.action=na.omit whithin(不客气:)您是否考虑过某种输入?还是将观察结果汇总为每周数据?此外,您可以在运行任何评估之前使用complete.cases来查看NA问题的严重程度