使用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问题的严重程度