I
178
Wybrane procedury statystyczno
W powyższym przykładzie wygląda na to, że zmienna pokoi nie ma istotnego wpływu na średnią cenę mieszkania. Dzieje, się tak, ponieważ w modelu jest już zmienna powierzchnia skorelowana ze zmienną pokoi. W tym przypadku bez szkody dla jakości dopasowania można usunąć zmienną pokoi z modelu.
Taką procedurę usuwania lub dodawania zmiennych do modelu możemy wykonać ręcznie lub automatycznie. Do automatycznego wyboru istotnych zmiennych objaśniających służy funkcja step(stats). Stosuje ona krokową metodę budowy modelu (w zależności od argumentu direction jest to metoda "foruard", "backward" lub "forward-backward") dla znalezienia modelu optymalnego względem pewnego kryterium. Domyślnie do wyboru najlepszego modelu funkcja step O wykorzystuje kryterium AIC, ale można też używać innych kryteriów modyfikując wartość argumentu k. Wybierając k=log(n), gdzie n to liczba obserwacji, do wyboru stosowane będzie kryterium Schwartza (B1C).
Poszczególne metody krokowe działają według następujących algorytmów:
• Argument direction="forward selection".
1. Rozpoczynamy od modelu z jednym składnikiem, wyrazem wolnym.
2. W każdym kroku dodaje do modelu jedną zmienną uznaną za najbardziej istotną (z pozostałych zmiennych), tak długo aż nie będzie już żadnych istotnych zmiennych do dodania.
• Argument <łirection="backward elimination".
1. Rozpoczynamy od najbardziej złożonego modelu ze wszystkimi zmiennymi w modelu.
2. W każdym kroku usuwa z modelu najmniej istotną zmienną tak długo, aż wszystkie zmienno pozostałe w modelu będą istotne.
• Argument direction="both”.
1. Rozpoczynamy od modelu z jednym składnikiem, czyli wyrazem wolnym.
2. Dodajemy do modelu zmienną z najmniejszą p-wartością, o ile jest ona istotna (istotność weryfikuje kryterium AIC).
3. Usuwamy z modelu zmienną z największą p-wartośeią, o ile jest ona nie- , istotna.
lit':
4. Powtarzamy kroki 2 i 3 tak długo aż model przestanie się zmieniać. Poniżej przedstawiamy przykład wywołania funkcji step O.
modelKoncowy = step(lm(cena"., data * mieszkania), direction=”bothn)
Mając dopasowany model liniowy możemy użyć otrzymanych ocen współczynni- r' ków modelu w celu wyznaczenia predykcji, czyli wyznaczenia oczekiwanej wartości zmiennej Y dla zadanych wartości X. Dla rozważanego przykładu taką predykcją, f? będzie określenie, ile średnio kosztowałoby mieszkanie o pewnych zadanych paramegf
trach. Do wykonywania predykcji służy funkcja predict(stats). Oceńmy'średilfeiSwl • • ■ ■ ..... • ■ • • -.......— *
cenę mieszkania o powierzchni 48m2 w dzielnicy Biskupin i o powierzchni 68m2 ną/f;y Krzykach.
AXOVA, icgicsjn liniowa j logistyczna
179
> U dopasowujemy model liniowy
> modelDP = lra(cena~povierzchnia+dzielnica, data " mieszkania)
> tf opisujemy przypadki, dla których chcemy ocenić cenę
> ndane » data.frame(powierzchnia=c(48,68), dzielnica^cC"Backup,^I;
"Krzyki”))
> d estymujemy cenę funkcją predictO
> predict(modelDP, newdata ■ ndane)
1 2 191415.9 210976.9
3.4.4.3 Współliniowość zmiennych objaśniających
We wzorze (3.9) wyznaczającym oceny współczynników 0 występuje człon (XTX)~'. W sytuacji gdy kolumny macierzy X są współliniowe macierz XTX nie macierzą pełnego rzędu, nie jest więc odwracalna! Oznacza to, że gdy występują Współliniowe kolumny macierzy X to nie można wyznaczyć ocen 0. Ponadto, jeżeli te kolumny są bliskie współliniowości, to oceny 0 będzie można wyznaczyć, ale będą ope obarczone dużym błędem. Pożądana jest więc możliwość oceny na ile kolumny macierzy X są współliniowe. Można do tego wykorzystać współczynnik VIF (czytlajk inflacji wariancji, ang. Varian.ce Inflation Factor) wyznaczany ze wzoru
VIF =_!_
1 1 -Rf
gdzie to korelacja jtej zmiennej z pozostałymi zmiennymi.
Im ten współczynnik jest wyższy, tym większa korelacja pomiędzy zmiennymi objaśniającymi. W przypadku braku korelacji pomiędzy zmiennymi Wsp^haynnik VIF wynosi 1. Wysoki współczynnik VIF jest sygnałem nadmiarowoścj w ijrabie zmiennych uznanych za istotnie wpływających na zmienną objaśnianą. Bttrd/,o wysoki współczynnik VIF (>10) świadczy o bliskiej współliniowości kohmln ,Iiacierży X1 X a w konsekwencji do błędnych ocen parametrów 0.
W takiej sytuacji można podjąć różnorakie kroki zaradcze:
• usunąć wybrane (najbardziej skorelowane) zmienne, tak aby obrijZyć współczynniki VIF pozostałych zmiennych,
• wprowadzić ograniczenia na parametry modelu (patrz regresja grzbietowa dostępna w funkcji lm.ridge(MASS)),
• skonstruować nowe zmienne (tzw. ekstrakcja cech, np. z użyciem algorytmu PCA) a więc na bazie dostępnych zmiennych wyznaczyć nowe nieskorelowane zmienne objaśniające.
Do wyznaczania współczynnika VIF w R służy funkcja vif (car).
> # wyznaczmy VIF dla zmiennych powierzchnia, pokoi i cena
> vif (lm(cena~powierzchnia+pokoi))
> vif(lm(rnorm(200)"powierzchnia+pokoi+cena))
powierzchnia pokoi cena
17.73 8.97 9.41