#Načítanie dát Yt <- c(6.1, 7.3, 9.6, 10.2, 10.1, 11.3, 12.2, 12.5, 13.2) Pt <- c(103, 102, 100, 94, 98, 97, 98, 97, 96) It <- c(110, 114, 130, 135, 141, 152, 160, 165, 170) #Multikolinearita - Farrar-Glauber test vys_mat=cbind(Pt,It) # matica vysvetľujúcich premenných kor_mat=cor(vys_mat) # korelačná matica #Funkcia testu - Farrar-Glauber fgtest = function(vn,cor_mat) { dof_cor=dim(cor_mat)[1] #počet stupňov voľnosti chi_sq_cal=((-1)*(length(vn)-1-(2*dof_cor+5)/6)*log(det(cor_mat))) #chi^2 chi_sq_tab=qchisq(0.95,1/2*dof_cor*(dof_cor-1)) #chi^2 tab hodnota if(chi_sq_cal>chi_sq_tab) #ak je vypočítaná väčšia ako tab, zamietam h0 cat("multikolinearita je významná") else cat("multikolinearita nie je významná") } #Volanie funkcie fgtest(Pt,kor_mat) #Odstránenie multikolinearity - MHK pomocou funkcie princomp() kor=princomp(cbind(Pt,It),cor=TRUE) mhk<-kor$scores mhk MHKtran = t(mhk) inv = solve(MHKtran %*% mhk) sd1=function(a) { p=mean(a); n=length(a); i=1; b=0; while(i<=n){ b[i]=c((a[i]-p)^2) i=i+1 }; return(sqrt(sum(b)/n)) } nYt=(Yt-mean(Yt))/sd1(Yt) b = inv %*% MHKtran %*% nYt b #Odstránenie multikolinearity - MHK cez vlastné vektory cor_mat = cor(cbind(Pt,It)) eig_mat= eigen(cor_mat) sd1=function(a) { p=mean(a); n=length(a); i=1; b=0; while(i<=n){ b[i]=c((a[i]-p)^2) i=i+1 }; return(sqrt(sum(b)/n)) } nXt1=(Pt-mean(Pt))/sd1(Pt) nXt2=(It-mean(It))/sd1(It) mhk=cbind(nXt1,nXt2) %*% eig_mat$vectors mhk MHKtran = t(mhk) inv = solve(MHKtran %*% mhk) nYt=(Yt-mean(Yt))/sd1(Yt) b = inv %*% MHKtran %*% nYt b