R中多个因变量和自变量的线性回归

R中多个因变量和自变量的线性回归,r,indexing,regression,lm,R,Indexing,Regression,Lm,我希望在R中进行线性回归,对376列数据中5个自变量的影响进行建模 我有一个名为'dd'的大矩阵(541行402列),我只想在回归中插入矩阵中的某些列作为IVs和DVs。在dd中,我需要376个特定列来形成我的DVs,5个列来形成我的IVs。我使用了每列的名称(例如“column_42”)作为索引,分别用于IV和DV: IVind=paste0('column_',c(4,14,15,24,43)) #index for IV DVind=paste0('column_',c(10:13, 1

我希望在R中进行线性回归,对376列数据中5个自变量的影响进行建模

我有一个名为'dd'的大矩阵(541行402列),我只想在回归中插入矩阵中的某些列作为IVs和DVs。在dd中,我需要376个特定列来形成我的DVs,5个列来形成我的IVs。我使用了每列的名称(例如“column_42”)作为索引,分别用于IV和DV:

IVind=paste0('column_',c(4,14,15,24,43)) #index for IV

DVind=paste0('column_',c(10:13, 17:18, 26, 28, 49:54, 58, 60, 1001:1180, 2001:2180)) #index for DV

IV <-(dd[,IVind]) #save independent variables in 'IV'
DV <-(dd[,DVind]) #save independent variables in 'DV'
只有收到相同的错误


非常感谢您的帮助,谢谢

对于多变量响应,您需要提供一个矩阵:

dd = data.frame(matrix(rnorm(2180*1000),ncol=2180))
colnames(dd) = paste0("column_",1:ncol(dd))

IVind=paste0('column_',c(4,14,15,24,43)) #index for IV
DVind=paste0('column_',c(10:13, 17:18, 26, 28, 49:54, 58, 60, 1001:1180, 2001:2180))

IV <-as.matrix(dd[,IVind]) #save independent variables in 'IV'
DV <-as.matrix(dd[,DVind]) #save independent variables in 'DV'

fit= lm(IV~DV)

对于多变量响应,您需要提供一个矩阵:

dd = data.frame(matrix(rnorm(2180*1000),ncol=2180))
colnames(dd) = paste0("column_",1:ncol(dd))

IVind=paste0('column_',c(4,14,15,24,43)) #index for IV
DVind=paste0('column_',c(10:13, 17:18, 26, 28, 49:54, 58, 60, 1001:1180, 2001:2180))

IV <-as.matrix(dd[,IVind]) #save independent variables in 'IV'
DV <-as.matrix(dd[,DVind]) #save independent variables in 'DV'

fit= lm(IV~DV)

有没有嵌套的值?你会做str(dd[,DVind])吗?看起来不会吗?str(dd[,DVind])的输出是chr[1:541,1:376]NA“10443.250768”“10433.625258”…-attr(*,“dimnames”)=2..$:NULL..$:chr[1:376]“NZMean_10”“NZMean_11”“NZMean_12”“NZMean_13”的列表……您的值是否嵌套?你会做str(dd[,DVind])吗?看起来不会吗?str(dd[,DVind])的输出是chr[1:541,1:376]NA“10443.250768”“10433.625258”…-attr(*,“dimnames”)=2..$:NULL..$:chr[1:376]“NZMean_10”“NZMean_11”“NZMean_12”“NZMean_13”的列表…我已经尝试使用as.matrix将IV和DV指定为矩阵,但仍然收到错误。事实证明,我的问题是R一直以字符形式读取数据集中的值,尽管我一直尝试使用as.matrix。反过来,指定的IV和DV i也保留为字符。最后,我使用:data.matrix(data.frame(IV,stringsAsFactors=FALSE))将变量转换为数值,我的问题就解决了。感谢您的帮助,您的代码帮助我了解了我需要的数据格式。好的,我知道了,是的,下次检查列。始终帮助进行一些模拟:)我已经尝试使用as.matrix将IV和DV指定为矩阵,但仍然收到错误。事实证明,我的问题是R一直以字符形式读取数据集中的值,尽管我一直尝试使用as.matrix。反过来,指定的IV和DV i也保留为字符。最后,我使用:data.matrix(data.frame(IV,stringsAsFactors=FALSE))将变量转换为数值,我的问题就解决了。感谢您的帮助,您的代码帮助我了解了我需要的数据格式。好的,我知道了,是的,下次检查列。始终帮助进行一些模拟:)
dd = data.frame(matrix(rnorm(2180*1000),ncol=2180))
colnames(dd) = paste0("column_",1:ncol(dd))

IVind=paste0('column_',c(4,14,15,24,43)) #index for IV
DVind=paste0('column_',c(10:13, 17:18, 26, 28, 49:54, 58, 60, 1001:1180, 2001:2180))

IV <-as.matrix(dd[,IVind]) #save independent variables in 'IV'
DV <-as.matrix(dd[,DVind]) #save independent variables in 'DV'

fit= lm(IV~DV)
LHS = paste("cbind(",paste(IVind,collapse=","),")")
print(LHS)
"cbind( column_4,column_14,column_15,column_24,column_43 )"

FORM = as.formula(paste(LHS,"~."))
print(FORM)
"cbind(column_4, column_14, column_15, column_24, column_43) ~ ."

fit = lm(FORM,data=dd[,c(IVind,DVind)])

head(fit$coefficients)
               column_4    column_14    column_15    column_24
(Intercept)  0.04386386 -0.044541800  0.005439126  0.033074816
column_10   -0.01849133  0.041040752  0.015390150  0.019472339
column_11   -0.05201253 -0.004719325  0.052012943 -0.027946384
column_12   -0.01194646 -0.063251091  0.017792048  0.004709211
column_13    0.15284270 -0.097150447 -0.038294054  0.003509769
column_17   -0.03693076  0.025828749 -0.039618893  0.023351389
               column_43
(Intercept)  0.003076990
column_10   -0.092318249
column_11   -0.049421542
column_12   -0.065078169
column_13   -0.013206731
column_17    0.006969634