Temat: Minimalna korelacja idealnych predyktorów...
Drugie podejście do współliniowości.
Na początek klasyczna regresja liniowa (logistyczna następnym razem), dwa predyktory. Model Z~X+Y+e.
Przeprowadziłem symulację, w trakcie której wielokrotnie (1000x) losowałem dane dla zmiennych X i Y z dwuwymiarowego rozkładu normalnego (generowany "ręcznie" za pomocą dekomp. Cholesky'ego) o zadanym, stopniowo rosnącym współczynniku korelacji i zadanej liczności. Następnie konstruowałem z nich zmienną zależną, podstawiałem zmienne do procedury liczącej LM, a następnie agregowałem informacje o estymatach parametrów modelu. Dzięki temu mogłem oszacować zachowanie estymat w funkcji korelacji predyktorów.
Interesowały mnie następujące parametry, które w jakiś sposób mówią o stabilności modelu:
1. rozrzut wartości estymat modelu (bety). Rozrzut ten szacuję odchyleniem międzykwartylnym (IQR)
2. wielkość błędu standardowego estymat (SE(bi)). Wielkość tę szacuję medianą
3. procent przypadków, gdy zmienna była istotna statystycznie (na poziomie istotności a=0.05) - SIG(nificance)
4. procent przypadków, gdy estymata miała wartość dodatnią, czyli pośrednio ile razy nastąpiła zmiana znaku (niestabilność) - SIGN
5. wskaźnik uwarunkowania gramianu XtX (dla zmiennych wystandaryzowanych jest to macierz kowariancji, w przeciwnym razie jest do niej proporcjonalny). To jest chyba najlepszy wskaźnik "problemów" - od niego zależy stabilność wielu metod numerycznych.
Sprawdzałem także na bieżąco korelację predyktorów ze zmienną zależną (Z jest "jitterowany", więc lepiej to kontrolować).
Powstały trzy tabelki dla różnej liczności zmiennych: 50 (przeciętny rozmiar próby w statystyce), 100, 500.
W zastosowaniach data miningowych mogą to być wielkości rzędy tysięcy (dziesiątek i setek), więc problem współliniowości będzie coraz mniej znaczący. (Pamiętamy, że takie rozmiary próby nie są jednak dobrą rzeczy, bo pozwalają udowodnić "cokolwiek", nawet związek kichania z burzą na Marsie i prowadzą do przeuczenia). Z drugiej zaś strony - w zagadnieniach DM jest wiele zmiennych, o wiele więcej, niż w klasycznych zagadnieniach statystycznych i nie wyobrażam sobie, by nie była wpierw przeprowadzana ich selekcja, względnie tworzenie wskaźników, agregatów (np. PCA).
Próba 50 elementowa (PS: zapomniałem ustawić rozsądną liczbę miejsc dziesiętnych, a nie chce mi się tego teraz przerabiać)
Rs Rxz Ryz b0.IQR b1.IQR b2.IQR b0se
1 0.7078631 0.9018512 0.9002969 0.05795857 0.07903395 0.07757124 0.04641147
2 0.8054600 0.9283203 0.9282821 0.05990625 0.08784878 0.08992475 0.04875497
3 0.9010027 0.9562166 0.9548024 0.06082693 0.13296108 0.13989134 0.05018609
4 0.9504632 0.9692699 0.9689196 0.05970506 0.20469154 0.21273968 0.05093004
5 0.9803186 0.9779061 0.9782096 0.06458648 0.32540662 0.31290473 0.05201412
6 0.9950661 0.9803131 0.9801835 0.06410221 0.64140797 0.65389609 0.05271146
7 0.9990324 0.9801946 0.9799811 0.06559838 1.55295606 1.57099801 0.05394606
b1se b2se b0sig b1sig b2sig b0sign b1sign b2sign Kmed
1 0.06338004 0.06334546 0.057 0.993 0.995 0.477 0.999 1.000 6.523409
2 0.08058206 0.08023386 0.059 0.985 0.982 0.496 1.000 0.997 10.185944
3 0.11576263 0.11465734 0.048 0.939 0.918 0.516 1.000 0.995 20.135575
4 0.17140403 0.17317291 0.045 0.834 0.841 0.497 0.986 0.991 40.614847
5 0.26593284 0.26430598 0.048 0.730 0.721 0.531 0.960 0.967 102.242335
6 0.54225371 0.54404725 0.048 0.495 0.520 0.475 0.887 0.900 404.595106
7 1.28148735 1.27838595 0.047 0.265 0.267 0.494 0.792 0.788 2073.245757
Próba 100 elementowa
Rs Rxz Ryz b0.IQR b1.IQR b2.IQR b0se
1 0.6998292 0.9119868 0.9105295 0.02222196 0.03400405 0.03381368 0.01215638
2 0.8031049 0.9356706 0.9361619 0.02909592 0.04761750 0.04667387 0.01289200
3 0.9020949 0.9629271 0.9621930 0.03308900 0.08405306 0.08280329 0.02352077
4 0.9498030 0.9775420 0.9775663 0.03847896 0.11046114 0.11036531 0.02387422
5 0.9801408 0.9858614 0.9850667 0.03889692 0.17651843 0.18503063 0.02444852
6 0.9950860 0.9886473 0.9894029 0.03696740 0.38064108 0.39138538 0.02597552
7 0.9990096 0.9907751 0.9904346 0.04070566 0.90391555 0.89207716 0.02521315
b1se b2se b0sig b1sig b2sig b0sign b1sign b2sign Kmed
1 0.01776170 0.01764451 0.048 1.000 1.000 0.529 1.000 1.000 6.406659
2 0.02331215 0.02300605 0.057 1.000 1.000 0.505 1.000 1.000 9.978332
3 0.05411416 0.05431975 0.045 0.981 0.988 0.492 1.000 1.000 20.337840
4 0.07748203 0.07774292 0.050 0.908 0.883 0.514 0.998 0.998 39.876157
5 0.12836581 0.12757731 0.063 0.710 0.721 0.526 0.986 0.977 100.402670
6 0.27984689 0.28141369 0.051 0.586 0.593 0.502 0.908 0.918 407.800890
7 0.61236620 0.61099116 0.054 0.473 0.467 0.499 0.847 0.828 2018.026543
Próba 500 elementowa
Rs Rxz Ryz b0.IQR b1.IQR b2.IQR b0se
1 0.7018872 0.7858608 0.7843768 0.06232952 0.08550884 0.08823685 0.05163115
2 0.8000217 0.8117189 0.8115205 0.06295941 0.11075034 0.11062715 0.05168079
3 0.9005334 0.8385289 0.8390197 0.06683937 0.16257750 0.16172947 0.05176165
4 0.9503726 0.8523748 0.8529823 0.06798753 0.21923415 0.21407655 0.05173124
5 0.9800688 0.8602205 0.8603374 0.06813147 0.34198388 0.33676651 0.05171223
6 0.9949961 0.8642801 0.8639614 0.06835973 0.68308731 0.69333288 0.05170436
7 0.9989998 0.8655995 0.8655017 0.06912292 1.61015252 1.60500192 0.05170868
b1se b2se b0sig b1sig b2sig b0sign b1sign b2sign Kmed
1 0.07214550 0.07206863 0.049 1.000 1.000 0.493 1.000 1.000 6.415322
2 0.08601955 0.08605199 0.038 1.000 1.000 0.494 1.000 1.000 9.812146
3 0.11897471 0.11867102 0.046 1.000 1.000 0.521 1.000 1.000 20.035299
4 0.16599973 0.16621896 0.052 1.000 1.000 0.514 1.000 1.000 40.240888
5 0.26038431 0.26047932 0.042 0.981 0.977 0.521 1.000 1.000 100.336240
6 0.51776654 0.51769726 0.045 0.502 0.475 0.502 0.977 0.967 399.522201
7 1.15799599 1.15822682 0.052 0.139 0.140 0.496 0.801 0.790 1997.955763
Wyniki mówią same za siebie. Niezależnie od rozmiarów próby "magiczną granicą" dla korelacji między predyktorami jest 0,9. Wtedy to następuje nagły skok wskaźnika uwarunkowania gramianu.
Zmienną parametr b0 (wyraz wolny) zostawmy, bo w tym modelu jest nieistotny statystycznie (co pięknie widać z tabelek; X i Y miały niewielką skalę, blisko 0), a nie chciałem szacować bez wyrazu wolnego;
Spójrzmy na rozrzut wartości b1 dla R=0.7 i R=0.99 - widzimy 10 krotny skok. b1 i b2 oraz ich SE mają niemal identyczne wartości (co było do przewidzenia patrząc na postać modelu). Błędy jednak rosną szybko, też niemal 10x. Początkowo wolno, a potem szybciej, zgodnie ze wskaźnikiem uwarunkowania gramianu.
Ze wzrostem R zaczyna zwiększać się odsetek przypadków, gdy dana zmienna przestawała być istotna (pierwsza cały czas trzyma się na a=0.05), co jest oczywiste, skoro rośnie SE. Podobnie dzieje się z liczbą zmian znaku estymaty. Powyższej R=0.98 dzieją się już "cuda".
Widać, że im większa liczebność próby, tym procesy te zachodzą dla coraz wyższego R.
Tak to wygląda na wykresach:
W kolejce czekają symulacje dla różnej skali rozkładów brzegowych (czyli naszych zmiennych), dla 3 zmiennych i dla regresji logistycznej.
Myślę, że to moje R=0.7 było sporo na wyrost, ale za to bezpieczne. Grunt, by nie mierzyć wzrostu w calach i centymetrach :) No cóż, kłaniają się lekcje geometrii: jedna prosta może należeć do nieskończenie wielu płaszczyzn. Zaś gdy dwie proste leżą bardzo blisko siebie, niewielka zmiana geometrii "chmury" punktów, do których są one dopasowane sprawi, że przechodząca przez te proste płaszczyzna zmieni drastycznie swoje nachylenie, równanie i znaki współczynników kierunkowych.
A inna nauka, płynąca z problemu uwarunkowania, to by standaryzować zmienne o dużym rozrzucie skali (choć pozmieniają się wartości własne, trzeba uważać).
--------------------
EDIT:
Symulacja dla 3 zmiennych.
Rs Rxz Ryz Rwz b0.IQR b1.IQR b2.IQR
1 0.7041814 0.8241896 0.8226277 0.8251333 0.1548157 0.2581060 0.2365834
2 0.8029350 0.8611274 0.8611930 0.8621581 0.1587929 0.2980249 0.2767118
3 0.9000867 0.8976252 0.8975096 0.8976769 0.1507765 0.4115465 0.4298054
4 0.9507164 0.9158223 0.9156049 0.9162122 0.1594110 0.5464605 0.6027881
5 0.9803503 0.9271584 0.9268540 0.9270759 0.1525939 0.8669610 0.9736675
6 0.9950590 0.9316241 0.9314906 0.9314752 0.1517298 1.8905234 1.8966831
7 0.9990233 0.9329371 0.9330406 0.9328843 0.1609568 4.3891092 4.1485540
b3.IQR b0se b1se b2se b3se b0sig b1sig b2sig b3sig
1 0.2438041 0.1171134 0.1811349 0.1802130 0.1798125 0.041 1.000 1.000 1.000
2 0.2925279 0.1175289 0.2185929 0.2193366 0.2186055 0.044 0.992 0.997 0.992
3 0.4349527 0.1174768 0.3060802 0.3077589 0.3071780 0.048 0.886 0.887 0.880
4 0.6012223 0.1170671 0.4306806 0.4297945 0.4312728 0.053 0.620 0.627 0.629
5 0.9101361 0.1172758 0.6831696 0.6800903 0.6771571 0.049 0.307 0.324 0.307
6 1.7558299 0.1173959 1.3648906 1.3566076 1.3536303 0.053 0.115 0.113 0.120
7 3.9722461 0.1173109 3.0312434 3.0357926 3.0508419 0.043 0.062 0.066 0.053
b0sign b1sign b2sign b3sign K
1 0.502 1.000 1.000 1.000 7.726145
2 0.481 1.000 1.000 1.000 11.611557
3 0.505 0.998 0.999 1.000 22.964347
4 0.515 0.990 0.989 0.992 45.156813
5 0.533 0.935 0.912 0.929 112.953399
6 0.492 0.778 0.730 0.784 452.517930
7 0.494 0.598 0.643 0.635 2252.201331
1. Blisko 8 krotne skoki rozrzutu i SE dla estymat dla R=0.995. Dla R=0.999 to już 20 razy. No ale to praktycznie funkcyjna zależność.
2. Dla R=0.999 wszystkie zmienne przestają być istotne na poz. istn. a=0.05
3. Dla tych samych korelacji estymaty częściej zmieniają znak
4. Nadal graniczną wartością R jest 0.9. Powyżej tej wartości:
a) zaczynają się wyraźnie zmieniać wartości różnych parametrów,
b) wsp. uwarunkowania gramianu (
sqrt(λmax/λmin)) przekracza 30 (wartość graniczna z "reguły kciuka")
Adrian Olszewski edytował(a) ten post dnia 14.11.11 o godzinie 01:20