Temat: wybór najlepszego modelu

W zbiorze mam ponad 500 pomiarów, dla każdego z nich została podana cecha ilościowa(w pierwszej kolumnie),a w pozostałych 1600 są genotypy (dane jakościowe). Trzeba znaleść model statystyczny opisujący zależności pomiędzy genotypami a cechą. Jak wykonać strategię przeszukiwania modelu i wyboru najlepszego? Czy można wyjściowy zbiór podzielić na kilkanaście mniejszych zbiorów, później zastosować dla każdego z nich funkcję step() z argumentem direction="backward elimination", a następnie z tych zmiennych co zostały zbudować model? Czy w tych mniejszych zbiorach zastosować jednoczynnikową analizę wariancji, patrzeć na p-value i wybierać te zmienne, w których średnie w grupach nie różnią się istotnie od siebie i z nich zbudować model?
Kamil Bęczyński

Kamil Bęczyński R, SAS, analizy

Temat: wybór najlepszego modelu

Jak podejrzewam model ma wyjaśniać cechę ilościową przy pomocy zmiennych jakościowych. Nie powiedziałaś, czy model ma służyć tylko do predykcji, czy również wnieść pewną wartość poznawczą. Widzę kilka podejść, 1 i 3 oferują raczej mały wgląd w dane :
1. Najprościej przeprowadzić redukcję danych PCA dla zmiennych jakościowych : http://cran.r-project.org/web/packages/ade4/index.html pakiet ade4 funkcja dudi.mix(), linki do artów są w helpie, a potem przeprowadzić regresję na zredukowanych przez PCA danych.
2. Inne klasyczne podejście, to budowa wielu małych modeli, każdy model budujesz na powiedzmy 20 cechach jakościowych i kombinajesz te modele przy pomocy wektora wag, błąd całości sprawdzasz przy pomocy kroswalidacji.
3. Można wykorzystać podejście bazujące na k najbliższych sąsiadach, gdy mamy przewidzieć wartość zmiennej ilościowej dla nowego genotypu X to najpierw ustalamy liczbę k, potem liczymy odległość Hamminga pomiędzy X a wszystkimi genotypami w zbiorze, wybieramy k genotypów ze zbioru, które są najbliższe X-owi uśredniamy ich cechę ilościową (lub stosujemy średnią ważoną odległościami Hamminga) w ten sposób otrzymujemy prognozę cechy ilościowej dla X. k można ustalić przy pomocy kroswalidacji, przy czym przydałoby się wybrać na samym początku zbiór testowy który nie weźmie udziału w etapie określania k, tak by można było otrzymać nieobciążoną prognozę dokładności predykcji dla ustalonego k.
Przy 2 tym podejściu wypadałoby się pochylić nad doborem cech do poszczególnych modeli.
Przy 1 podejściu z PCA warto najpierw przeprowadzić klasteryzację cech jakościowych (a nie osobników), a potem cechy należące od poszczególnych klastrów (o ile wyraźne klastry istnieją) podać oddzielnie redukcji przy pomocy PCA - to zwiększy jakość redukcji.

Niedawno czytałem o odmianie SVM specjalnie stworzonej dla problemów w których dane mają większą liczbę cech, niż liczbę obserwacji. Mogę jej poszukać w R bibliotekach i znaleźć artykuł/-y.

Jeżeli chodzi bardziej o data mining, niż o budowę modelu, to podobnie jak z danymi typu microarray data (osobniki z cechami w postaci poziomów ekspresji genów) można zastosować biclustering, tylko, że w tym procesie zostanie (raczej) pominięta cecha ilościowa, która jak podejrzewam ma szczególne znaczenie, jednak po odkryciu klastrów, możesz policzyć statystyki dla zmiennej ilościowej w tej grupie, w biclusteringu chodzi o jednoczesną klasteryzację cech obiektów oraz obiektów, używa się tego gdy obiekty mają dużo cech. Mając biclustry można zbudować jakiś "hierarchiczny" model regresji.
Zgaduję, że masz zrobić projekt zaliczeniowy, a nie pracę domową, więc mały data mining pewnie będzie dobrze widziany, nawet jeżeli nie wykorzystasz go do budowy model statystycznego-hierarchicznego.

wizualne przedstawienie macierzy danych po biclusteringu :
http://addictedtor.free.fr/graphiques/RGraphGallery.ph...
wyraźnie widać 4 duże/główne klastry; dobry wstęp :
www2.warwick.ac.uk/fac/sci/statistics/staff/research/turner/turnerchapter3.pdf

A tak z ciekawości, co rozumiesz przez genotypy - Zmienne jakościowe to warianty genów, czy zasady (A,C,T,G)?
Jeżeli warianty genów, to sprawa się komplikuje, gdyż może (w co jednak wątpię) wypadłoby użyć wektora wag do ważenia cech przy PCA, gdyż poszczególne geny mogą mieć różną liczbę wariantów, ale to jest chyba już brane pod uwagę przez sam algorytm, chociaż nie jestem tego pewien.
Ponadto jeżeli są to warianty genów, np. warianty genu W : w1,w2,w3 to w1 i w2 oraz w2 i w3 mogą być w rzeczywistości bardziej podobne do siebie niż warianty w1 i w3 PCA to zignoruje.Kamil Bęczyński edytował(a) ten post dnia 06.11.10 o godzinie 21:53

Temat: wybór najlepszego modelu

To jest jeden z projektów zaliczeniowych. Nie miałam jeszcze data mining, ale wiem co to jest PCA, LDA, QDA itp., widziałam przykłady dla zmiennych ilościowych ... Coś mi się zdaje, że nie można użyć PCA, jeżeli mamy wiecej zmiennych niż obserwacji.
Są to genotypy różnych SNP'ów, np. w jedej z kolumn są genotypy AA, AC, TT. Oczywiście w następnych są inne.
Po znalezieniu modelu muszę go użyć do predykcji badanej cechy dla kilkunastu nowych obserwacji.
Dzięki za informacje.

Temat: wybór najlepszego modelu

A tak nawiasem mówiąc to PCA jest tylko dla zmiennych ilościowych.
Michał Bojanowski

Michał Bojanowski socjolog, analityk

Temat: wybór najlepszego modelu

To się powinno przydać:

Tibshirani R (1996). “Regression Shrinkage and Selection via the Lasso.” Journal of the Royal Statistical Society B, 58, 267–288

Jest kilka eRowych pakietów, które to implementuje, np. lars, lasso2 itd.

PS. Swoją drogą wolałbym, żeby to miejsce nie zamieniło się w helpdesk rozwiązywania prac domowych (jak http://statystycy.pl)...Michał Bojanowski edytował(a) ten post dnia 07.11.10 o godzinie 23:21
Kamil Bęczyński

Kamil Bęczyński R, SAS, analizy

Temat: wybór najlepszego modelu

zrozumiałem Pana panie Michale, ale pozwolę sobie jeszcze tylko na jeden post
Izabela Święcicka:
A tak nawiasem mówiąc to PCA jest tylko dla zmiennych ilościowych.

pca można przeprowadzić mając macierz kowariancji (a nie tylko najczęściej przekazywaną przez podręczniki metodą iteracyjnego wyznaczania) więc pca nadaje się do zmiennych ilościowych jak i jakościowych, jak również do przypadku w którym jest więcej zmiennych, niż obserwacji, wystarczy mieć macierz kowariancji

Hill, M. O., and A. J. E. Smith. 1976. Principal component analysis of taxonomic data with multistate
discrete characters. Taxon, 25, 249-255.
więc się mylisz, ponadto podałem ci wcześniej nazwę funkcji, która działa dla danych jakościowych, sprawdź ją
Ponadto jeżeli masz podręcznik krysickiego i włodarskiego, to zajrzyj do rozdziału o pca, wydaje mi się że zastosowali pca do dużego zbioru danych z jakościowymi zmiennymi (dane genetyczne).

Tak w ogóle, to można zbiór zmiennych można podzielić na powiedzmy 10 części i dla każdej z nich zastosować PCA, by taki podział był rozsądniejszy można użyć klasteryzacji na zbiorze zmiennych, ale chyba metod klasteryzacji jeszcze nie poznałaś, wtedy otrzymasz powiedzmy, że około 20 użytecznych zmiennych zamiast około 2 w przypadku PCA na całym zbiorze

W R widziałem i stosowałem metodę PCA, dla danych finansowych o liczbie zmiennych większej, niż liczba obserwacji, więc taka jej odmiana na pewno istnieje, jednak były to dane ilościowe.

Najprostsza metodą budowy modelu, jest wykonanie 1600 regresji (chyba tyle masz zmiennych jakościowych), następnie eliminacja zmiennych nieistotnych statystycznie i jeżeli, liczba zmiennych jest mała, wykonanie nowego modelu zawierającego je wszystkie, jeżeli liczba istotnych statystycznie regresji nadal jest duża należy dokonać dalszej selekcji np. najpierw wybrać zmienne istotnie statystycznie w regresji a następnie "wybrać zmienne które są ze sobą słabo powiązane",
można to zrealizować w ten sposób : policzyć średnią korelację dla każdej ze zmiennych lub zastosować jakiś prosty algorytm w stylu : 1.x= losowa zmienna 2. wybierz zmienną najmniej skorelowana ze zmienną x (nazywamy ją y) 3. wybierz zmienną która ma najmniejszą średnią korelację arytmetyczną lub geometryczna ze zmiennymi x i y (średnia geometryczna sprawi, że |cor(x,y)-cor(x,z)|, będzie mniejsze niż dla średniej arytmetycznej)
w wyniku takiego algorytmu otrzymamy ciąg zmiennych, należy wybrać arbitralnie k pierwszych zmiennych, wybór zmiennych słabo skorelowanych spośród zmiennych istotnych spowoduje, że zbiór k zmiennych będzie zawierał więcej informacji, niż losowy zbiór k zmiennych spośród zmiennych istotnych.
Pani podejście z funkcją step też jest oczywiście dobre, tylko może zająć sporo czasu, ze względu na zachłanność tego algorytmu.
PozdrawiamKamil Bęczyński edytował(a) ten post dnia 08.11.10 o godzinie 19:10
Michał Bojanowski

Michał Bojanowski socjolog, analityk

Temat: wybór najlepszego modelu

Kamil Bęczyński:
zrozumiałem Pana panie Michale

Świetnie :)
Najprostsza metodą budowy modelu, jest wykonanie 1600 regresji
(...)

1600 modeli? Czy to na pewno najprostsza metoda?

Wszystkie algorytmy tego typu, jakie znam (regresja krokowa wstecz/w przód itp), są zawodne. Zawodne w sensie gwarancji wyboru optymalnego modelu. Jakoś nie mogę teraz tego wygrzebać, ale miałem kiedyś przed oczyma zgrabną analizę tego typu "algorytmów" wobec benchmarku w postaci wyczerpującego przeszukiwania drzewa wszystkich modeli (co jest dość "pracochłonne"). Żadna z analizowanych tam metod nie zachowywała się zadowalająco. Oczywiście, czy wyniki będą zadowalające zależy też od tego, co się dzieje w danych: łatwo sobie wyobrazić sytuacje, np. jak w paradoksie Simpsona, w której zależności brzegowe (tak, jak w pierwszym kroku twojego algorytmu) nie wiele mówią o faktycznym procesie, który wygenerował dane.

Problem Izabeli atakowałbym chyba lassem albo losowym lasami... ;)Michał Bojanowski edytował(a) ten post dnia 09.11.10 o godzinie 15:20
Wojciech Sobala

Wojciech Sobala Redaktor
statystyczny,
biostatystyk,
Instytut Medycyny
Pr...

Temat: wybór najlepszego modelu

Dla tego typu problemów stosuje się podejście oparte na FDR (false discovery rate).
W R są dwa pakiety (może więcej):
qvalue, fdrtool.Wojciech Sobala edytował(a) ten post dnia 09.11.10 o godzinie 16:32
Kamil Bęczyński

Kamil Bęczyński R, SAS, analizy

Temat: wybór najlepszego modelu

1600 modeli? Czy to na pewno najprostsza metoda?

zrobienie 1600 modeli regresji z jedną zmienną objaśniającą (na 500 obserwacjach, tak jak w przedstawiony problemie) na moim komputerze zajmuje 6 sekund :D
(tyle, że nie były to zmienne jakościowe, rozbite na binarne, dla nich byłoby to 6 sekund razy złożoność algorytmu odwracania macierzy f(k), gdzie k to liczba zmiennych binarnych)
dla for(i in 1:1600){d=runif(500);w=runif(500);lm(d~w)} dla mam 6 sekund
poza tym 1. wystarczyłoby obliczyć odpowiedni współczynnik korelacji, wraz z jego poziomem istotności
poza tym 2. oczywiście lasy losowe to dobry pomysł, tyle, że z tego co zrozumiałem, koleżanka nie poznała jeszcze zbyt zaawansowanych zagadnień...
więc przedstawiłem jej szkic zdroworozsądkowego algorytmu pozwalającego na zbudowanie rodziny modeli, definiowanych przez wybrany punkt startowy (wybraną zmienną)Kamil Bęczyński edytował(a) ten post dnia 14.11.10 o godzinie 01:11

Temat: wybór najlepszego modelu

tak z ciekawosci użyłam lasso do moich danych przy pomocy funkcji lars(). Jak można zinterpretować to co zwraca lars() (Var?)? Czy wynikiem cv.lars() może być wykres w kształcie paraboli (czy koniecznie musi być gałąz hiperboli)? Jak można później wybrać podzbiór zmiennych po zastosowaniu lasso?
Michał Bojanowski

Michał Bojanowski socjolog, analityk

Temat: wybór najlepszego modelu

Obawiam się, że to pytanie nie dotyczy już R, tylko LARS -- algorytmu statystycznego.

W dokumentacji eRowego pakietu 'lars' są odnośniki to kilku tekstów, w tym do co najmniej dwóch w wolnym dostępie. Każdy może przeczytać.

Przede wszystkim

Efron, Hastie, Johnstone and Tibshirani (2003) "Least Angle Regression" (with discussion) _Annals of Statistics_; see also http://www-stat.stanford.edu/~hastie/Papers/LARS/Least...

Nie chcę tu paternalizować, ale szacunek dla czasu wszystkich czytelników tego forum wymagałby, aby najpierw samemu włożyć trochę wysiłku, poszperać i poczytać a potem dopiero prosić innych o pomoc.Michał Bojanowski edytował(a) ten post dnia 14.11.10 o godzinie 22:19

Następna dyskusja:

Mapka + potencjalnie istotn...




Wyślij zaproszenie do