Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Uwagi do regression #14

Open
pbiecek opened this issue Nov 12, 2016 · 4 comments
Open

Uwagi do regression #14

pbiecek opened this issue Nov 12, 2016 · 4 comments

Comments

@pbiecek
Copy link
Member

pbiecek commented Nov 12, 2016

@tzoltak dostałem kilka komentarzy do regression, może się przydadzą

  1. wybór zamienionej o najbardziej liniowym kształcie zależności zmiennej
    trafiłem dopiero za trzecim razem, a właściwie po dwu nieudanych razach
    uruchomiłem już pętlę for, bo te moim zdaniem najbardziej liniowe
    (oceniając z wykresu) nie były właściwym rozwiązaniem. Może więc osłabić
    warunek w zadaniu mówiący o niemal perfekcyjnie liniowej zależności,
  2. po pewnym czasie usuwania zmiennych o największych p-values z modelu
    regresji otrzymywałem ciągle różne modele o samych istotnych
    współczynnikach, ale z 4 usuniętymi zmiennymi. Dlatego uruchomiłem znowu
    brute force - tym razem za pomocą funkcji combn. Model z 3 usuniętymi
    zmiennymi miał jednak większe AIC niż ten znaleziony z funkcji step i
    takie rozwiązanie stanowi dla mnie tylko punkt wyjścia do dyskusji o
    wyborze najlepszego modelu regresji, a nie bezdyskusyjne wyjaśnienie
    zależności w zbiorze danych
  3. Ostatnie zadanie też mi zajęło trochę czasu, bo unikałem regresji
    sklejanej, bo z zadania zrozumiałem, że chodzi o zależności liniowe. Ale
    ciągle nie mogłem poprawić dopasowania przy różnych modelach z-kształtnych
    (np. pierwiastek trzeciego stopnia ze zmiennej centrowanej jako
    predyktor), aż znalazłem prostackie rozwiązanie za pomocą regresji
    sklejanej
    regression(subject = "Age", content = READ_2009 ~
    ifelse(RAVEN_AGE<16.9,RAVEN_AGE,0) + ifelse(RAVEN_AGE>18,RAVEN_AGE,0)).
    Nie wiem jednak, czy to o to chodziło, bo do tego modelu wprowadzana jest
    tylko zależność od predyktora na ogonach rozkładu?
@tzoltak
Copy link

tzoltak commented Nov 15, 2016

Przyjrzę się na spokojnie jakoś pod koniec tygodnia.

@tzoltak
Copy link

tzoltak commented Nov 25, 2016

Ad.1. It's not a bug, it's a feature. Kiedy tworzyłem to zadanie rozważałem dwa warianty: 1) albo aby dotyczyło ono umiejętności przeprowadzenia graficznej diagnostyki liniowości, 2) albo aby dotyczyło ono umiejętności sformalizowania warunku, że zależność jest liniowa i naklepania automatyzacji, która by ten warunek sprawdzała. Z różnych przyczyn, z których najpoważniejszą była sugestia Przemka, że lepiej implementować zadania trudniejsze, niż łatwiejsze (a sformalizowanie warunku i naklepanie automatyzacji jest nieco trudniejsze, niż diagnostyka graficzna) wybrany został wariant drugi.

Nawiasem mówiąc nie myślałem, że komuś będzie się chciało patrzeć na tyle obrazków, bo to najwyżej oczopląsu można dostać (diagnostyka graficzna jest ważna, ale pod pewnymi względami źle się skaluje, więc i nie zawsze się sprawdza). Czego zresztą, można powiedzieć padł ofiarą autor komentarza.

@tzoltak
Copy link

tzoltak commented Nov 25, 2016

Ad. 2. I znowu: it's not a bug, it's a feature. Wiem, że najbardziej typowe sposoby selekcji zmiennych użytych w modelu to krokowe usuwanie nieistotnych zmiennych, względnie brutalne przeszukanie przestrzeni możliwych kombinacji w celu znalezienia tej minimalizującej wybrane kryterium informacyjne. Niemniej w tym zadaniu chciałem zwrócić uwagę dokładnie na kwestię współliniowość i narzędzi służących do diagnozowania dokładnie tego zjawiska. Przy czym w ogólności nieistotność predyktorów w modelu może mieć i inne przyczyny, a wymienione powyżej metody selekcji nie są w żaden sposób specyficzne w wykrywaniu właśnie współliniowości. Stąd takie dobranie danych do zadania (zaręczam, że kosztowało mnie to naprawdę sporo czasu :) ), aby zastosowanie takich typowych metod selekcji zmiennych nie dawało poprawnej odpowiedzi (mimo tego, że w realnych sytuacjach usuwanie zmiennych z największym VIFem i np. krokowe usuwanie najbardziej nieistotnych zmiennych bardzo często prowadzi nas do dokładnie tej samej postaci modelu).

Chodziło mi właśnie o to, aby rozwiązujący odwołał się do metod diagnozowania współliniowości, zamiast rozwiązać problem tak, jak to przywykł robić. Oczywiście rozwiązujący, mimo wyraźnych sugestii zawartych w treści zadania, może nie chcieć tego zrobić... i wtedy pozostaje mu metoda brute force polegająca na przeszukaniu przestrzeni wszystkich możliwych kombinacji predyktorów (rozsądnie planując kolejność przeszukiwania tej przestrzeni można nawet prawidłowe rozwiązanie znaleźć bardzo szybko). I tą możliwość też uważam za pożądaną - pozwala przejść do dalszych zadań, zamiast zaciąć się kompletnie z powodu rozbieżności poglądów w stosunku do autora zadania (a samo naklepanie takiego przeszukiwania to też jakieś zadanie do rozwiązania).

Co do kwestii najlepszego modelu - nigdzie w treści ani odpowiedzi do zadania 4. nie pada stwierdzenie o poszukiwaniu, czy znalezienie najlepszego czy optymalnego modelu. Zadanie postawione przed graczem jest sformułowane w kategoriach technicznych - właśnie dlatego, że jak zauważa autor komentarza, uzyskane rozwiązanie może stanowić tylko punkt wyjścia do dyskusji o wyborze najlepszego modelu regresji. Tyle tylko że takiej dyskusji nie sposób moim zdaniem zawrzeć w ramach tego rodzaju gry (proponuję krótki eksperyment myślowy: spróbujmy sobie wyobrazić jak miałaby wyglądać informacja prezentowana graczowi po rozwiązaniu zadania 4., gdyby miała być w niej zawarta taka dyskusja). Zwłaszcza że pojęcie optymalności modelu, choć bywa dyskutowane w kategoriach stricte statystycznych, w praktyce jest silnie osadzone w kontekście danej dziedziny, celów badania, szczegółowych pytań badawczych itd. - tego nie sposób zawrzeć w narzędziu edukacyjnym o takiej formie, jak ta gra.

Oczywiście można powiedzieć, że ten wybieg z postawieniem zadania w kategoriach technicznych to paskudnie tani chwyt, a na dodatek nieskuteczny (w tym sensie, że wielu - być może nawet większość - rozwiązujących i tak będzie święcie przeświadczona, że otrzymali zadanie znalezienie optymalnego modelu), niemniej muszę powiedzieć, że na lepszy pomysł zaaranżowania zadania nt. współliniowości nie wpadłem.

@tzoltak
Copy link

tzoltak commented Nov 25, 2016

Ad. 3. Co do regresji sklejanej - trochę to problem nomenklatury, dla mnie wszystko, co możesz wyestymować funkcją lm() jest regresją liniową (bo niby czemu nie?). Niestety trochę te problemy nomenklaturowe nieuniknione - niby jedna statystyka, ale zależy, w jakiej dziedzinie kto siedzi, albo kto go uczył i już można mieć problemy, żeby się zrozumieć.

Abstrahując od powyższego problemu - z jednej strony cieszę się, że uzyskana przez autora poprawna odpowiedź (w istocie kryterium poprawności oparte jest na deviance modelu - ma być nie większa, niż ta, jaką charakteryzuje się pewien model, nieco arbitralnie wybrany przez autora jako całkiem adekwatnie opisujący analizowane zjawisko) wzbudziła jego zainteresowanie. Z drugiej strony trochę mnie martwi, że najwyraźniej nie zauważa związku rozwiązania, które ułożył trochę na a nóż się uda z treścią zadania. Dokładniej, nie zauważa, że jego model jest w świetle informacji przekazanych w treści zadania - a mających naprowadzić gracza na potencjalnie adekwatną formę modelu - zupełnie prawdopodobny. Co mówi ten model, jak mu się przyjrzeć:

  1. Dla osób w wieku pomiędzy 16,9 a 18 lat (główna kohorta) zależność wyników od wieku jest funkcją stałą.
  2. Poniżej 16,9 i powyżej 18 lat coś tam innego się dzieje - można założyć, że wyniki zmieniają się liniowo w zależności od wieku (inaczej poniżej 16,9, inaczej powyżej 18).

A co sugeruje treść zadania, jeśli chodzi o konstruowanie modelu:

  1. Ogólnie rzecz biorąc spodziewamy się, że nie ma zależności wyników od wieku.
  2. Ale dla osób poniżej pewnego progu wieku i dla osób powyżej pewnego progu wieku może to wyglądać inaczej.

Oczywiście moglibyśmy skonstruować nieco bardziej permisywny model model postaci:
READ_2009 ~ RAVEN_AGE * (I(RAVEN_AGE<16.9) + I(RAVEN_AGE>18))
w którym zakładamy, że zależność dla głównej kohorty nie jest funkcją stałą (i o też zostałby oczywiście zaakceptowany jako poprawna odpowiedź), niemniej jeśli przyjrzymy się wyestymowanym parametrom takiego modelu, zobaczymy, że wartość parametru opisującego nachylenie zależności dla głównej kohorty jest niska i bardzo, bardzo daleka od statystycznej istotności. Z czego wynika, że jeśli z tegoż parametru zrezygnujemy (jak autor komentarza), to raczej niewiele - w kategoriach dopasowania modelu do danych - stracimy.

Przechodząc do konkluzji - może należałoby opatrzyć rozwiązanie zadania 7. jakimś komentarzem, który pomógł by graczom dostrzec, że rozwiązanie, które uzyskali - nawet jeśli na pierwszy rzut oka wydaje im się dziwne - w istocie ma sens?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants