Jaki jest odpowiedni wykres ilustrujący związek między dwiema zmiennymi porządkowymi?
Kilka opcji, o których mogę myśleć:
- Wykres rozproszenia z dodanym drganiami losowymi, aby zatrzymać ukrywanie się punktów. Niby standardowa grafika - Minitab nazywa to „wykresem wartości indywidualnych”. Moim zdaniem może to być mylące, ponieważ wizualnie zachęca do pewnego rodzaju interpolacji liniowej między poziomami porządkowymi, tak jakby dane pochodziły ze skali interwałowej.
- Wykres rozproszenia dostosowany w taki sposób, że rozmiar (obszar) punktu reprezentuje częstotliwość tej kombinacji poziomów, zamiast rysować jeden punkt dla każdej jednostki próbkowania. Od czasu do czasu widziałem takie wątki w praktyce. Mogą być trudne do odczytania, ale punkty leżą na regularnie rozmieszczonej sieci, która nieco przezwycięża krytykę roztrzęsionego wykresu rozrzutu, że wizualnie „interweniuje” dane.
- W szczególności, jeśli jedną ze zmiennych traktuje się jako zależną, wykres ramkowy pogrupowany według poziomów zmiennej niezależnej. Prawdopodobnie wygląda okropnie, jeśli liczba poziomów zmiennej zależnej nie jest wystarczająco wysoka (bardzo „płaska” z brakującymi wąsami lub jeszcze gorszymi zapadniętymi kwartylami, co uniemożliwia wizualną identyfikację mediany), ale przynajmniej zwraca uwagę na medianę i kwartyle, które są odpowiednie statystyki opisowe dla zmiennej porządkowej.
- Tabela wartości lub pusta siatka komórek z mapą cieplną wskazującą częstotliwość. Wizualnie inny, ale koncepcyjnie podobny do wykresu punktowego z obszarem punktowym pokazującym częstotliwość.
Czy są inne pomysły lub przemyślenia, które wątki są lepsze? Czy są jakieś dziedziny badań, w których pewne wykresy porządkowe kontra porządkowe są uważane za standardowe? (Wydaje mi się, że przypominam mapę termiczną częstotliwości, która jest szeroko rozpowszechniona w genomice, ale podejrzewam, że częściej dotyczy ona wartości nominalnej vs. nominalnej.) Sugestie dotyczące dobrego standardowego odniesienia również byłyby bardzo mile widziane, zgaduję coś z Agresti.
Jeśli ktoś chce zilustrować za pomocą wykresu, następuje kod R dla fałszywych danych przykładowych.
„Jak ważne jest dla ciebie ćwiczenie?” 1 = wcale nie ważne, 2 = nieco nieważne, 3 = ani ważne, ani nieważne, 4 = dość ważne, 5 = bardzo ważne.
„Jak regularnie bierzesz 10 minut lub dłużej?” 1 = nigdy, 2 = rzadziej niż raz na dwa tygodnie, 3 = raz na jeden lub dwa tygodnie, 4 = dwa lub trzy razy w tygodniu, 5 = cztery lub więcej razy w tygodniu.
Jeśli byłoby naturalne traktować „często” jako zmienną zależną, a „ważność” jako zmienną niezależną, jeśli wykres rozróżnia między nimi.
importance <- rep(1:5, times = c(30, 42, 75, 93, 60))
often <- c(rep(1:5, times = c(15, 07, 04, 03, 01)), #n=30, importance 1
rep(1:5, times = c(10, 14, 12, 03, 03)), #n=42, importance 2
rep(1:5, times = c(12, 23, 20, 13, 07)), #n=75, importance 3
rep(1:5, times = c(16, 14, 20, 30, 13)), #n=93, importance 4
rep(1:5, times = c(12, 06, 11, 17, 14))) #n=60, importance 5
running.df <- data.frame(importance, often)
cor.test(often, importance, method = "kendall") #positive concordance
plot(running.df) #currently useless
Powiązane pytanie dotyczące zmiennych ciągłych było dla mnie pomocne, a może przydatny punkt wyjścia: jakie są alternatywy dla wykresów rozrzutu podczas badania związku między dwiema zmiennymi numerycznymi?
źródło
Odpowiedzi:
Wykres kręgosłupa (wykres mozaiki) działa dobrze dla przykładowych danych tutaj, ale może być trudny do odczytania lub interpretacji, jeśli niektóre kombinacje kategorii są rzadkie lub nie istnieją. Oczywiście rozsądne i oczekiwane jest, że niska częstotliwość jest reprezentowana przez małą płytkę, a zero przez żadną płytkę, ale trudności psychologiczne mogą pozostać. To również naturalne, że ludzie lubiący kręgosłupy wybierają przykłady, które dobrze sprawdzają się w ich artykułach lub prezentacjach, ale często tworzyłem przykłady, które były zbyt niechlujne, aby można je było wykorzystywać publicznie. I odwrotnie, wykres kręgosłupa dobrze wykorzystuje dostępną przestrzeń.
Niektóre implementacje zakładają interaktywną grafikę, aby użytkownik mógł przesłuchać każdy kafelek, aby dowiedzieć się więcej na ten temat.
Alternatywą, która może również działać całkiem dobrze, jest dwukierunkowy wykres słupkowy (istnieje wiele innych nazw).
Zobacz na przykład
tabplot
w http://www.surveydesign.com.au/tipsusergraphs.htmlDla tych danych jest jeden możliwy wykres (stworzony przy użyciu
tabplot
Stata, ale powinien być łatwy w każdym przyzwoitym oprogramowaniu)Format oznacza, że łatwo jest powiązać poszczególne słupki z identyfikatorami wierszy i kolumn oraz że można dodawać adnotacje z częstotliwościami, proporcjami lub procentami (nie rób tego, jeśli uważasz, że wynik jest zbyt zajęty, naturalnie).
Niektóre możliwości:
Jeśli jedną zmienną można uznać za odpowiedź na drugą jako predyktor, warto pomyśleć o narysowaniu jej jak zwykle na osi pionowej. Tutaj myślę o „znaczeniu” jako pomiarze postawy, a następnie pytaniem jest, czy wpływa ono na zachowanie („często”). Problem przyczynowy jest często bardziej skomplikowany nawet w przypadku tych wyimaginowanych danych, ale sedno pozostaje.
Sugestia nr 1 jest zawsze ważniejsza, jeśli odwrotność działa lepiej, co oznacza, że łatwiej jest myśleć i interpretować.
Podziały procentowe lub prawdopodobieństwa często mają sens. Przydatny może być również wykres pierwotnych częstotliwości. (Oczywiście, fabuła ta nie ma zalet mozaikowych wykresów pokazujących oba rodzaje informacji naraz.)
Możesz oczywiście wypróbować (znacznie bardziej powszechne) alternatywy zgrupowanych wykresów słupkowych lub skumulowanych wykresów słupkowych (lub wciąż dość nietypowych zgrupowanych wykresów punktowych w sensie WS Cleveland). W tym przypadku nie sądzę, aby działały tak samo, ale czasami działają lepiej.
Niektórzy mogą chcieć inaczej pokolorować różne kategorie odpowiedzi. Nie mam sprzeciwu, a jeśli chcesz, nie podejmiesz poważnie zastrzeżeń.
Strategia hybrydyzacji wykresu i tabeli może być bardziej użyteczna, a nawet wcale nie taka, jakiej chcesz. Często powtarzanym argumentem jest to, że rozdzielenie rysunków i tabel było tylko efektem ubocznym wynalazku druku i podziału pracy, który on wytworzył; jest to znów niepotrzebne, podobnie jak pisanie manuskryptów umieszczających ilustracje dokładnie tak, jak i gdzie lubią.
źródło
Oto szybka próba mapy cieplnej , użyłem czarnych granic komórek do rozbicia komórek, ale być może płytki powinny być oddzielone bardziej niż w odpowiedzi Glen_b.
Oto wykres fluktuacji oparty na wcześniejszym komentarzu Andy'ego W. Jak on je opisuje „są to w zasadzie tylko zbiorcze wykresy rozrzutu dla danych kategorycznych, a wielkość punktu jest odwzorowana na liczbę obserwacji, które mieszczą się w tym przedziale”. Dla odniesienia patrz
źródło
Oto przykład, jak wyglądałby wykres kręgosłupa danych. Zrobiłem to w Stata dość szybko, ale nie realizacja R . Myślę, że w R powinno być tylko:
spineplot(factor(often)~factor(importance))
Wykres kręgosłupa wydaje się być domyślny, jeśli podasz R zmienne kategorialne:
plot(factor(often)~factor(importance))
Podział ułamkowy kategorii często jest pokazany dla każdej kategorii ważności. Ułożone pręty są rysowane w wymiarze pionowym pokazującym ułamek często danej kategorii ważności. Wymiar poziomy pokazuje ułamek w każdej kategorii ważności. Zatem obszary uformowanych płytek reprezentują częstotliwości, lub bardziej ogólnie sumy, dla każdej kombinacji znaczenia i często.
źródło
Sposób, w jaki to zrobiłem, to trochę krówka, ale można to łatwo naprawić.
To jest zmodyfikowana wersja jitterowego podejścia.
Usunięcie osi zmniejsza pokusę interpretowania skali jako ciągłej; rysowanie ramek wokół roztrzęsionych kombinacji podkreśla, że istnieje coś takiego jak „podziałka skali” - że interwały niekoniecznie są równe
Idealnie, etykiety 1..5 powinny zostać zastąpione nazwami kategorii, ale na razie pozostawię to wyobraźni; Myślę, że przekazuje sens tego.
Możliwe udoskonalenia:
i) zmniejszanie przerw (osobiście wolę większe przerwy) i
ii) próba zastosowania quasirandomowej sekwencji w celu zmniejszenia częstości występowania widocznego wzoru w ramkach. Chociaż moja próba nieco pomogła, widać, że w komórkach o mniejszej liczbie punktów nadal są podsekwencje o mniej lub bardziej skorelowanym wyglądzie (np. Ramka w górnym rzędzie, druga kolumna). Aby tego uniknąć, może być konieczne zainicjowanie quasi-losowej sekwencji dla każdego podrozdziału. (Alternatywą może być próbkowanie Latin Hypercube). Po rozwiązaniu problemu można go wstawić do funkcji, która działa dokładnie jak jitter.
źródło
Korzystanie z pakietu R Riverplot:
źródło
Innym pomysłem, o którym nie myślałem, była fabuła sitowa .
Rozmiar każdej płytki jest proporcjonalny do oczekiwanej częstotliwości; małe kwadraty w prostokątach reprezentują rzeczywiste częstotliwości. Stąd większa gęstość kwadratów wskazuje wyższą niż oczekiwana częstotliwość (i jest zacieniowana na niebiesko); mniejsza gęstość kwadratów (czerwona) dotyczy częstotliwości niższej niż oczekiwana.
Myślę, że wolałbym, aby kolor reprezentował rozmiar, a nie tylko znak pozostałości. Jest to szczególnie prawdziwe w przypadkach krawędziowych, w których częstotliwości oczekiwane i obserwowane są podobne, a reszta jest bliska zeru; dychotomiczny schemat czerwono-niebieski wydaje się przeceniać niewielkie odchylenia.
Wdrożenie w R:
źródło
Fasetowany wykres słupkowy w R. Bardzo wyraźnie pokazuje rozkład „często” na każdym poziomie „ważności”. Ale nie działałoby to tak dobrze, gdyby maksymalna liczba różniła się bardziej między poziomami „ważności”; dość łatwo jest ustawić
scales="free_y"
ggplot ( patrz tutaj ), aby uniknąć dużej ilości pustej przestrzeni, ale kształt rozkładu byłby trudny do zauważenia przy poziomach „ważności” niskich częstotliwości, ponieważ słupki byłyby tak małe. Być może w takich sytuacjach lepiej jest zamiast tego zastosować częstotliwość względną (prawdopodobieństwo warunkowe) na osi pionowej.Nie jest tak „czysty” jak tabulator w Stacie, z którym łączył się Nick Cox, ale przekazuje podobne informacje.
Kod R:
źródło