R 回归模型计算中的非共形阵

R 回归模型计算中的非共形阵,r,R,YC是一个维数为39*1的矩阵 XC是一个尺寸为39*700的矩阵 首先,我在下面定义了一个函数,通过多元线性回归计算出系数,因为我试图得到loocv的预测y。错误是a+b1%*%xp中的错误:不一致数组 mlr<- function(y,x,xp){ ybar<-mean(y) xbar<-apply(x,1,mean) xc<-scale(x,center = T, scale= FALSE) b<-solve(t(xc)%*%xc)%*%t(x

YC是一个维数为39*1的矩阵 XC是一个尺寸为39*700的矩阵

首先,我在下面定义了一个函数,通过多元线性回归计算出系数,因为我试图得到loocv的预测y。错误是a+b1%*%xp中的错误:不一致数组

mlr<- function(y,x,xp){
  ybar<-mean(y)
  xbar<-apply(x,1,mean)
  xc<-scale(x,center = T, scale= FALSE)
  b<-solve(t(xc)%*%xc)%*%t(xc)%*%y
  b1<-t(b)
  a<-ybar-b%*%xbar
  xp<- matrix(nrow=2,ncol=1)
  yp_LOOCV<-a+b1%*%xp
  return(yp_LOOCV)
}
 RMSECV<- sqrt(sum((total$YC - yp_LOOCV)^2)/39)

mlr我想使用的型号是YC~X1590+X1724Use
debug(mlr)
(然后运行
mlr
函数)逐步执行
mlr
,直到
b1
xp
都在范围内。打印它们将表明,由于它们的尺寸,这两个对象之间的矩阵乘法是未定义的,即它们与矩阵乘法不一致。也许你不小心把一个转置到了某个地方,在继续时没有考虑到这一点?如何键入代码?定义函数后,调试(mlr)>mlrCall
debug(mlr)
。现在试着运行这个函数来介入它
undebug(mlr)
撤消
debug
标志。我找出了出现错误的原因,但仍然没有得到RMSECV的正确答案
YC<-data.frame(YC)
XPred<-cbind(total$X1590,total$X1724)
n <- 0
yp_LOOCV <- as.vector(0)
#Running the LOOCV iteratively ('for loop').
for (i in 1 : 39)
{n <- 1 + n 
YC1 <-YC[-n,]
XC1<-XPred[-n,]
Yout<-YC[n]
Xout<-XPreduced[n]
yp_LOOCV<-mlr(YC1,XC1,Xout)
}