Dear all, I want to calculate AIC values of PLSR models. But I find that AIC and extractAIC functions in R could not be used to calculate AIC values of PLSR models. Now I write a section of code(below) to calculate it. But I don't known whether the result is right or not. If I am wrong, please give me some suggestions. Thanks a lot. Rong Huang data<-data.frame( y=c(-1,-1,-0.9,-0.88,-0.85,-0.41,-0.38,-0.04,0,0.1,0.23,0.3,0.32, 0.42,0.43,0.48,0.77,0.82,0.82,0.89,0.92,1.02,1.03,1.07,1.13,1.36,1.36,1.4,1.41, 1.55,1.84), X1=c(-0.101,-0.1629,-0.1004,-0.4688,-0.1005,-0.1006,-0.098,-0.1478,-0.5146, -0.1611,-0.1619,-0.1442,-0.2566,-0.1308,-0.16,-0.1634,-0.1623,-0.1469,-0.148, -0.1628,-0.161,-0.1618,-0.1619,-0.1612,-0.1603,-0.161,-0.0938,-0.1616,-0.1628, -0.1611,-0.076), X2=c(-1.6953,-0.9866,-1.7833,-1.1233,-1.7022,-1.7001,-1.6017,-0.8415,-0.9508, -0.9389,-1.0148,-0.861,-1.3785,-1.6241,-1.0883,-2.0914,-1.5157,-0.7912,-0.8419, -0.8149,-0.7935,-0.8606,-0.8699,-0.7949,-0.7832,-0.824,-1.0875,-0.8313,-0.8149, -0.7949,-1.0338), X3=c(250.4,307.8,396.2,342.3,380.0,282.8,328.0,405.0,353.6,304.8,280.4, 353.6,328.8,328.8,328.3,216.2,328.5,320.6,372.6,340.2,332.0,321.6,321.6, 336.1,333.8,332.3,387.1,320.6,340.2,354.0,313.8), X4=c(3.007,3.686,7.23,5.73,7.239,4.06 5,5.96,9.52,5.67,4.888,5.354,5.681, 7.372,7.372,6.811,4.654,6.18,6.994,8.47,8.466,6.113,6.695,6.695,7.269,6.205, 6.838,9.3,6.994,7.408,7.869,6.755), X5=c(0.25,0.67,0.28,0.52,0.25,0.25,0.25,0.67,0.54,0.67,0.67,0.54,0.2,0.2, 0.67,0.67,0.67,0.67,0.67,0.67,0.67,0.67,0.67,0.67,0.67,0.67,1.08,0.67,0.67, 0.67,0.51) ) ncomp<-5 model<-plsr(y~ .,data=data,ncomp=ncomp,validation="LOO",x="TRUE",y="TRUE",model="TRUE") y<-model$y y.hat<-model$fitted.value[,,ncomp] residuals<-model$residuals[,,ncomp] sigmaML<-sqrt(mean(residuals^2)) loglik<-sum(dnorm(y,y.hat,sigmaML,log=T)) AIC<--2*loglik+2*(ncomp+1) ___________________________________________________________ 好玩贺卡等你发,邮箱贺卡全新上线! [[alternative HTML version deleted]]