Mam dane dla sieci stacji pogodowych w Stanach Zjednoczonych. To daje mi ramkę danych, która zawiera datę, szerokość, długość i pewną zmierzoną wartość. Załóżmy, że dane są gromadzone raz dziennie i zależą od pogody w skali regionalnej (nie, nie będziemy wchodzić w tę dyskusję).
Chciałbym pokazać graficznie, jak jednocześnie mierzone wartości są skorelowane w czasie i przestrzeni. Moim celem jest pokazanie regionalnej jednorodności (lub jej braku) badanej wartości.
Zbiór danych
Na początek wziąłem grupę stacji w regionie Massachusetts i Maine. Wybrałem witryny według szerokości i długości geograficznej z pliku indeksu, który jest dostępny na stronie FTP NOAA.
Od razu widzisz jeden problem: istnieje wiele witryn, które mają podobne identyfikatory lub są bardzo blisko. FWIW, identyfikuję je za pomocą kodów USAF i WBAN. Zagłębiając się w metadane, zauważyłem, że mają one różne współrzędne i wysokości, a dane zatrzymują się w jednym miejscu, a następnie zaczynają w innym. Ponieważ nie wiem nic lepszego, muszę traktować je jako osobne stacje. Oznacza to, że dane zawierają pary stacji, które są bardzo blisko siebie.
Wstępna analiza
Próbowałem pogrupować dane według miesiąca kalendarzowego, a następnie obliczyć regresję metodą najmniejszych kwadratów między różnymi parami danych. Następnie rysuję korelację między wszystkimi parami jako linię łączącą stacje (poniżej). Kolor linii pokazuje wartość R2 z dopasowania OLS. Na rysunku pokazano następnie, w jaki sposób ponad 30 punktów danych ze stycznia, lutego itp. Jest skorelowanych między różnymi stacjami w obszarze zainteresowania.
Napisałem podstawowe kody, aby średnia dzienna była obliczana tylko wtedy, gdy istnieją punkty danych co 6 godzin, więc dane powinny być porównywalne w różnych witrynach.
Problemy
Niestety, jest po prostu zbyt wiele danych, aby można je było zrozumieć na jednym wykresie. Nie można tego naprawić, zmniejszając rozmiar linii.
Próbowałem wykreślić korelacje między najbliższymi sąsiadami w regionie, ale to bardzo szybko zmienia się w bałagan. Poniższe aspekty pokazują sieć bez wartości korelacji, używając najbliższych sąsiadów z podzbioru stacji. Ta liczba miała tylko przetestować koncepcję.
Sieć wydaje się być zbyt złożona, więc myślę, że muszę znaleźć sposób na zmniejszenie złożoności lub zastosowanie jakiegoś przestrzennego jądra.
Nie jestem również pewien, która metoda jest najbardziej odpowiednia do pokazania korelacji, ale dla zamierzonej (nietechnicznej) grupy odbiorców współczynnik korelacji z OLS może być najprostszy do wyjaśnienia. Może być konieczne przedstawienie innych informacji, takich jak gradient lub błąd standardowy.
pytania
W tym samym czasie uczę się tej dziedziny i R. Docenię sugestie dotyczące:
- Jaka jest bardziej formalna nazwa tego, co próbuję zrobić? Czy są jakieś przydatne terminy, które pozwoliłyby mi znaleźć więcej literatury? Moje wyszukiwania rysują puste miejsca dla tego, co musi być powszechną aplikacją.
- Czy istnieją bardziej odpowiednie metody pokazania korelacji między wieloma zestawami danych oddzielonymi w przestrzeni?
- ... w szczególności metody, które łatwo pokazać wizualnie?
- Czy którekolwiek z nich są zaimplementowane w języku R?
- Czy któreś z tych podejść nadaje się do automatyzacji?
źródło
Odpowiedzi:
Myślę, że istnieje kilka opcji wyświetlania tego typu danych:
Pierwszą opcją byłoby przeprowadzenie „Empirycznej analizy funkcji ortogonalnych” (EOF) (zwanej również „główną analizą składową” (PCA) w kręgach innych niż klimatyczne). W twoim przypadku należy to przeprowadzić na macierzy korelacji lokalizacji danych. Na przykład macierzą danych
dat
będą lokalizacje przestrzenne w wymiarze kolumny i zmierzony parametr w wierszach; Zatem macierz danych będzie się składać z szeregów czasowych dla każdej lokalizacji. Taprcomp()
funkcja umożliwia uzyskanie głównych składników lub dominujących trybów korelacji dotyczących tego pola:Drugą opcją byłoby stworzenie map pokazujących korelację w stosunku do indywidualnej interesującej lokalizacji:
EDYCJA: dodatkowy przykład
Podczas gdy w poniższym przykładzie nie używa się nieciekawych danych, można zastosować tę samą analizę do pola danych po interpolacji za pomocą DINEOF ( http://menugget.blogspot.de/2012/10/dineof-data-interpolating-empirical.html ) . W poniższym przykładzie wykorzystano podzbiór miesięcznych danych dotyczących ciśnienia na poziomie morza z anomalii z następującego zestawu danych ( http://www.esrl.noaa.gov/psd/gcos_wgsp/Gridded/data.hadslp2.html ):
Odwzoruj wiodący tryb EOF
Utwórz mapę korelacji
źródło
Nie widzę wyraźnie za liniami, ale wydaje mi się, że jest zbyt wiele punktów danych.
Ponieważ chcesz pokazać regionalną jednorodność, a nie dokładnie stacje, sugeruję najpierw pogrupować je przestrzennie. Na przykład nałóż „kabaretkę” i oblicz średnią zmierzoną wartość w każdej komórce (w każdej chwili). Jeśli umieścisz te średnie wartości w centrach komórek w ten sposób, zrasteryzujesz dane (lub możesz obliczyć średnią szerokość i długość geograficzną w każdej komórce, jeśli nie chcesz nakładać linii). Lub uśredniać wewnątrz jednostek administracyjnych, cokolwiek. Następnie dla tych nowych uśrednionych „stacji” możesz obliczyć korelacje i wykreślić mapę z mniejszą liczbą linii.
Może to również usunąć losowe pojedyncze linie o wysokiej korelacji przechodzące przez cały obszar.
źródło