Užívateľský manuál

Táto stránka je aktuálne v procese tvorby. Ďakujeme za trpezlivosť!

Vo výrobe

Multikolinearita

Je to porušenie jedného z predpokladov pre náhodnú zložku a vstupných premenných ekonometrického modelu – vzájomná lineárna nezávislosť vysvetľujúcich premenných.

Možné príčiny multikolinearity:

  • Zlá špecifikácia premenných
  • Malý rozsah výberového súboru

Spôsoby zisťovania multikolinearity:

  • Farrar – Glauber test
  • Variančné inflačné faktory
  • Korelačná matica
  • Vlastné čísla korelačnej matice

Vybrané spôsoby odstránenia multikolinearity:

  • vynechanie premenných, ktoré ju spôsobujú, resp. ich nahradenie inými
  • metóda hlavných komponentov
  • transformácia premenných
  • hrebeňová regresia
  • využitie apriórnych informácií o hodnotách parametrov

Príklad

Vzorový príklad s metódami na testovanie prítomnosti multikolinearity a jej odstránenie


#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

  

Máme zadaný model:
yt = b0 + b1*xt1 + b2*xt2 + b3*xt3 + ut

Vypočítajte korelačnú maticu R cez normovanie premenných. Overte správnosť alebo nesprávnosť predpokladu o vysokom stupni multikolinearity. V prípade potvrdenia vysokého stupňa multikolinearity sa ju pokúste odstrániť vhodnou metódou.

Riešenie

Najprv je potrebné načítať údaje z príkladu, v našom prípade Yt, Xt1, Xt2, Xt3.

  1. Načítanie dát
  2. Vytvoríme si korelačnú maticu pomocou funkcie cor()
  3. Teraz otestujeme významnosť stupňa multikolinearity pomocou Farrar – Glauber testu.

Odstránenie

V prípade prítomnej multikolinearity ju môžeme odstrániť pomocou Metódy hlavných komponentov (Principal components analysis – PCA) – funkcia princomp() alebo cez vlastné vektory.

  • MHK pomocou funkcie princomp()
  • MHK cez vlastné vektory
Zdroje:
Multikolinearita a jej diagnostika [4.6.2015]
Marček, D., Marček, M., Pančíková, L.: Ekonometria a soft computing. Žilina: EDIS, 2008 ISBN 978-80-8070-746-0

🔍