Użyłem tej prcomp()
funkcji do wykonania PCA (analiza głównego składnika) w R. Jednak w tej funkcji jest błąd, który na.action
powoduje, że parametr nie działa. Poprosiłem o pomoc w stosie przepływu ; dwóch użytkowników zaoferowało dwa różne sposoby radzenia sobie z NA
wartościami. Problem z obydwoma rozwiązaniami polega jednak na tym, że gdy istnieje NA
wartość, wiersz jest pomijany i nie jest uwzględniany w analizie PCA. Mój prawdziwy zestaw danych to macierz 100 x 100 i nie chcę stracić całego wiersza tylko dlatego, że zawiera jedną NA
wartość.
Poniższy przykład pokazuje, że prcomp()
funkcja nie zwraca żadnych głównych składników dla wiersza 5, ponieważ zawiera NA
wartość.
d <- data.frame(V1 = sample(1:100, 10), V2 = sample(1:100, 10),
V3 = sample(1:100, 10))
result <- prcomp(d, center = TRUE, scale = TRUE, na.action = na.omit)
result$x # $
d$V1[5] <- NA # $
result <- prcomp(~V1+V2, data=d, center = TRUE, scale = TRUE, na.action = na.omit)
result$x
Zastanawiałem się, czy mogę ustawić NA
wartości na określoną wartość liczbową, kiedy center
i scale
są ustawione na TRUE
tak, aby prcomp()
funkcja działała i nie usuwała wierszy zawierających je NA
, ale także nie wpływała na wynik analizy PCA.
Myślałem o zastąpieniu NA
wartości wartością mediany w jednej kolumnie lub wartością bardzo zbliżoną do 0. Nie jestem jednak pewien, jak to wpływa na analizę PCA.
Czy ktoś może wymyślić dobry sposób na rozwiązanie tego problemu?
źródło
NA
wartości : jaka jest przyczyna „zaginięcia”?Odpowiedzi:
W rzeczywistości istnieje dobrze udokumentowany sposób radzenia sobie ze złymi matrycami - możesz rozłożyć macierz kowariancji utworzoną z twoich danychdo , która jest skalowana przez liczbę wspólnych wartości n : C = 1X n
a następnie rozwiń główne współczynniki poprzez dopasowanie co najmniej kwadratów (jak wspomina @ user969113). Oto przykład .
prcomp
Aktualizacja
Inną opcją przeprowadzania PCA na zboczonym zestawie danych jest „Rekurencyjnie odejmowane empiryczne funkcje ortogonalne” (Taylor i in. 2013). Poprawia również niektóre problemy w podejściu do najmniejszych kwadratów i jest obliczeniowo znacznie szybszy niż DINEOF. W tym poście porównano wszystkie trzy podejścia pod względem dokładności rekonstrukcji danych przy użyciu komputerów PC.
Referencje
Beckers, Jean-Marie i M. Rixen. „Obliczenia EOF i wypełnianie danych z niekompletnych zestawów danych oceanograficznych”. Journal of Atmospheric and Oceanic Technology 20.12 (2003): 1839-1856.
Taylor, M., Losch, M., Wenzel, M., i Schröter, J. (2013). O wrażliwości rekonstrukcji i prognozowania pola za pomocą empirycznych funkcji ortogonalnych pochodzących z niepewnych danych Journal of Climate, 26 (22), 9194–9205.
źródło
Moja sugestia zależy od tego, ile danych brakuje i dlaczego brakuje. Ale tak naprawdę nie ma to nic wspólnego z PCA. Jeśli brakuje bardzo mało danych, to nie ma większego znaczenia, co robisz. Zamiana na medianę nie jest idealna, ale jeśli niewiele jej brakuje, nie różni się niczym od lepszego rozwiązania. Możesz spróbować wykonać PCA zarówno z medianą zamiany, jak i usuwaniem listowym i sprawdzić, czy istnieją poważne różnice w wynikach.
Następnie, jeśli brakuje więcej danych, należy rozważyć, czy brakuje ich całkowicie losowo, czy losowo, czy nie losowo. Sugerowałbym wielokrotne przypisanie w dwóch pierwszych przypadkach, a czasem w trzecim przypadku - chyba że dane są wysoce zniekształcone przez status NMAR, myślę, że wielokrotne przypisanie będzie lepsze niż usunięcie listowe (Joe Schafer z Penn State dokonał dużo pracy nad brakującymi danymi - przypominam sobie trochę z jego pracy pokazującej, że wielokrotne przypisanie działało całkiem dobrze, nawet w niektórych przypadkach NMAR). Jeśli jednak danymi są MCAR lub MAR, można udowodnić właściwości wielokrotnej imputacji.
Jeśli zdecydujesz się na MI, jedna uwaga powinna być ostrożna, ponieważ znaki komponentów w PCA są arbitralne, a niewielka zmiana danych może zmienić znak. Wtedy, kiedy zrobisz PCA, dostaniesz bzdury. Dawno temu wypracowałem rozwiązanie w SAS - nie jest trudne, ale należy zachować ostrożność.
źródło
Nie ma prawidłowego rozwiązania problemu. Każda współrzędna w wektorze musi zostać określona, aby uzyskać prawidłowy zestaw głównych składników. Jeśli brakuje współrzędnej i zostaje zastąpiona jakąś wartością przypisaną, otrzymasz wynik, ale będzie ona zależna od wartości przypisanej. więc jeśli istnieją dwie rozsądne opcje dla wartości przypisanej, różne opcje dają różne odpowiedzi.
źródło
Niedawny artykuł, w którym dokonano przeglądu podejść do radzenia sobie z brakującymi wartościami w analizach PCA, to „Analiza głównych składników z brakującymi wartościami: badanie porównawcze metod” autorstwa Dray & Josse (2015) . Dwie najbardziej znane metody metod PCA, które pozwalają na brakujące wartości, to algorytm NIPALS, zaimplementowany w
nipals
funkcjiade4
pakietu oraz iteracyjny PCA (Ipca lub EM-PCA), zaimplementowany wimputePCA
funkcjimissMDA
pakietu. W artykule stwierdzono, że metoda Ipca działała najlepiej w najszerszym zakresie warunków.Przykładowa składnia to:
Dla NIPALS:
W przypadku Ipca:
źródło