#uvek treba podeliti uzorak na deo za treniranje i deo za testiranje. Ovde to izostavljamo jer je baza koju imamo mala, a zelimo da prikazemo pstupke ocenjivanja. x <- as.matrix(longley[,1:6]) y <- as.matrix(longley[,7]) fitOLS=lm(y~x) #centiramo i skaliramo model xc=scale(x,center=TRUE,scale=TRUE) yc=y-mean(y) fitOLSc=lm(yc~xc-1) summary(fitOLSc) kappa(xc) install.packages('HH') library(HH) vif(fitOLS) rmse<-function (x, y) sqrt (mean ( (x-y)^2) ) prcomp(x,scale=TRUE,center=TRUE) pc=prcomp(xc,scale=TRUE,center=TRUE) summary(pc) xnovo=pc$x fitPC=lm(yc~xnovo-1) rmse(fitPC$fitted.values+mean(y),y) rmse(fitOLSc$fitted.values+mean(y),y) fitPC1=lm(yc~xnovo[,1:3]-1) plot(pc$sdev,type='l') #nazubljena regresija i LASSO install.packages('lars') library(lars) plot(lm.ridge(yc~xc-1,lambda=seq(from=0,to=0.5,by=0.01))) select(lm.ridge(yc~xc-1,lambda=seq(from=0,to=0.1,by=0.01))) #pravimo model sa odabranim lambda fitRIDGE=lm.ridge(yc~xc-1,lambda=0.03) yR=mean(y)+xc%*%matrix(fitRIDGE$coef,ncol=1) rmse(yR,y) fit.lasso=lars(x=xc,y=yc,type="lasso") coef.lars(fit.lasso,s=0,mode="lambda") plot(fit.lasso) coef.max=coef.lars(fit.lasso,s=0,mode="lambda") maxL1norm=sum(abs(coef.max)) coef.P=coef.lars(fit.lasso,s=0.3,mode="lambda") L1norm=sum(abs(coef.P)) yLassoC=xc%*%matrix(coef.P,ncol=1)+mean(y) yLassoC rmse(yLassoC,y) cv.lars(x=xc,y=yc,intercept=FALSE,type="lasso",plot.it = TRUE)