我希望在R中进行线性回归,以模拟5个独立变量对376列数据的影响。
我有一个名为'dd'的大型矩阵(541行和402列),我只想在回归中以IV和DV的形式插入矩阵中的某些列。从dd开始,我希望有376个特定列构成我的DV,并希望有5个列构成我的IV。我已经将每一列的名称(例如'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'
我尝试将IV和DV插入线性回归,如下所示:
try <- lm(DV~IV)
但收到以下错误:[[<-.data.frame
(*tmp*
中的错误,i,值= c(2113L,2031L,1971L,
替换有203040行,数据有540
反正我可以解决这个错误吗?我知道这可能是由于我的IV和DV保存在单独的矩阵中吗?
我尝试直接在回归函数中索引dd:
lm(dd[,DVind]~dd[,IVind])
仅会收到相同的错误。
我们非常感谢您的帮助,谢谢!
答案 0 :(得分:0)
对于多变量响应,您需要提供一个矩阵:
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)
如果您想要更好的外观系数,我们在左侧使用cbind
并用“,”分隔来指定因变量。然后,我们仅将数据子集化为您感兴趣的因变量/自变量:
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