Mam zestaw danych z trzema zmiennymi kategorialnymi i chcę wizualizować związek między wszystkimi trzema na jednym wykresie. Jakieś pomysły?
Obecnie używam następujących trzech wykresów:
Każdy wykres dotyczy poziomu depresji wyjściowej (łagodny, umiarkowany, ciężki). Następnie na każdym wykresie patrzę na związek między leczeniem (0,1) a poprawą depresji (brak, umiarkowany, znaczny).
Te 3 wykresy działają, aby zobaczyć relację trójdrożną, ale czy istnieje znany sposób, aby to zrobić za pomocą jednego wykresu?
r
data-visualization
categorical-data
Alejandro Ochoa
źródło
źródło
Odpowiedzi:
Jest to interesujący zestaw danych, który ma być reprezentowany graficznie, częściowo dlatego, że nie jest tak naprawdę kategoryczny. Oba trzypoziomowe czynniki są porządkowe i możliwe jest wzajemne oddziaływanie (przypuszczalnie trudniej jest
mild
baseline
je miećsubstantial
improvement
- a możesubstantial
improvement
oznacza coś innego dla każdegobaseline
).W przypadku wielu zmiennych zwykle nie ma jednego widoku, który pokazuje wszystkie funkcje, które mogą Cię zainteresować. Niektóre czynniki będą łatwiejsze do porównania niż inne. Myślę, że twój oryginalny widok jest dobry i byłby lepszy z sugestiami Nicka Coxa: usunięcie duplikatów legend i użycie porządkowej skali kolorów.
Jeśli najbardziej interesuje Cię różnica między zabiegami, możesz podkreślić zmianę, używając wykresu stosu zamiast stosów.
Zazwyczaj jestem ostrożny w stosach, ponieważ trudniej jest odczytać wartości środkowe, ale to wymusza charakter tych danych o stałej kwocie. I ułatwia odczyt sumy
moderate
+,substantial
jeśli jest to istotne. Zmieniłem kolejnośćimprovement
poziomów, aby wyższy był lepszy dla częstotliwości.Bez układania w stosy odpowiednikiem jest wykres nachylenia.
Łatwiej jest odczytać każdy poziom, ale trudniej zrozumieć wzajemne oddziaływanie. Trzeba pamiętać, że trzecia linia jest bezpośrednio zależna od pozostałych dwóch.
Biorąc pod uwagę porządkowy charakter danych, może być pomocne przekonwertowanie
improvement
wartości na wynik liczbowy, jak to często ma miejsce w przypadku danych Likerta . Na przykładnone=0
,moderate=1
,substantial=2
. Następnie możesz wykreślić tę zmienną w ciągłej skali. Minusem jest to, że musisz znaleźć rozsądną punktację (np. Może 0, 1 i 5 byłoby prawdziwszą reprezentacją).Colophon : Te wykresy zostały wykonane przy użyciu funkcji Graph Builder w pakiecie oprogramowania JMP (który pomagam opracować). Chociaż skrypt został wykonany interaktywnie, na przykład dla wykresu obszaru, bez dostosowań kolorystycznych, to:
źródło
Po pierwsze, oto mój odczyt z wykresu danych dla tych, którzy chcą grać (eksperymentuj, jeśli chcesz). NB błędy indywidualne są z pewnością możliwe, podobnie jak błędy rażące.
Oto przeróbka oryginalnego projektu. Jeden szczegół oryginalnych danych upraszcza sprawę: liczba osób w każdej kombinacji predyktorów jest taka sama, więc wykresy częstotliwości i procenty są takie same. Tutaj zamiast skumulowanego (podzielonego, segmentowanego) wykresu słupkowego, oddzielamy słupki w dwustronnym wykresie słupkowym lub projekcie wykresu tabelowego.
Wiele szczegółów w grafice jest właśnie tym szczegółem. Kilka niewielkich słabości wykresu może podważyć jego skuteczność, a także kilka drobnych ulepszeń.
Aby to przeliterować:
Nie są tu potrzebne trzy panele z powtórzeniami osi, legendy i tekstu.
Legenda jest zawsze przekleństwem i błogosławieństwem, zobowiązując czytelnika do mentalnego „w przód i w tył” (lub zapamiętania legendy, nie jest to coś, co by się podobało, jakkolwiek by to nie było łatwe). Tekst informacyjny tuż obok pasków jest łatwiejszy do naśladowania.
Kodowanie kolorami sałatek owocowych jest zbędne. Wydaje się to również arbitralne: „znacząca” poprawa to wielka sprawa, ale uważam, że nawet mocny żółty kolor jest stonowany. Ale nie potrzebujemy koloru, gdy mamy tekst do wyjaśnienia.
Chociaż niektórzy będą krzyczeć z przerażeniem, że naruszają rozróżnienie między figurą a tabelą, możemy również pokazać częstotliwości. Warto pomyśleć „4 osoby w tej kategorii”.
Jest tu hołd dla tradycyjnego kreślenia odpowiedzi na osi pionowej, tak jak w oryginale.
To powiedziawszy, trudno jest dostrzec dużą strukturę tych danych. W takim przypadku trudno jest również podzielić się winą (a) danych bez dużej struktury i (b) słabości projektu graficznego do wybierania nie tylko efektów predykcyjnych, ale także możliwych interakcji. Leczenie wydaje się mniej ważne niż stan wyjściowy. Ale jeśli wartość wyjściowa była „łagodna”, to ile było możliwości „znaczącej” poprawy? Zatrzymam się tam, aby przestać się oszukiwać, gdy badanie danych dotyczących zdrowia psychicznego z pewnością nie jest specjalizacją, zwłaszcza jeśli dane okażą się fałszywe. Ale jeśli są prawdziwe, moglibyśmy zrobić z dużo większą próbką. (Zwykle to mówimy, ale proszę bardzo.)
EDYCJA Wykres może być naturalnie skomplikowany przez porządek kolorów, jeśli jest to pożądane:
Dla przypomnienia: wykresy wykorzystały kod Stata, w tym mój własny program do
tabplot
pobrania za pomocąssc inst tabplot
.źródło
Lubię używać 2-poziomowej osi X dla takich danych. Tak więc kategorie osi X dla pojedynczego wykresu mogą być:
... z tymi samymi liczbami według kategorii [brak / umiarkowane / znaczne] słupki histogramu.
źródło
Czy fabuła Mozaika nie jest specjalnie zaprojektowana do tego celu?
W R byłoby to jak
Każda zmienna kategorialna idzie do jednej krawędzi kwadratu, która jest podzielona przez jej etykiety. (Tak więc, jeśli podzielisz każdą krawędź tylko na jeden poziom, można przedstawić maksymalnie 4 zmienne kategoryczne. IMHO, powyżej 3, staje się nieporządna i trudniejsza do interpretacji). Rozmiar prostokątów jest proporcjonalny do częstotliwości. To jest główna idea stojąca za mozaiką fabuły i jest taka sama w tej odpowiedzi i odpowiedzi Pawła Kleki.
Różnice polegają na układzie tych prostokątów i „drobiazgach” zapewnianych przez konkretny pakiet R zastosowany dla tego typu wykresu. Jak widać z odpowiedzi Pawła Kleki,
graphics
pakiet dzieli górną krawędź na 2 poziomach zamiast używać prawej krawędzi. Użyłemvcd
pakietu z domyślnymi opcjami, aby kolor wskazywał stopień powiązania między zmiennymi. Szary oznacza, że dane są zgodne z (niezależną od hipotezy) zmienną niezależnością. Niebieski oznacza, że istnieje pozytywny związek między „ciężką” linią podstawową a „znaczącą” poprawą zarówno dla leczenia „0”, jak i „1”. (Niespodzianka, niespodzianka! Tłumaczę to w następujący sposób: jeśli masz ciężką depresję, prawdopodobnie polepszysz się, niezależnie od tego, czy masz leczenie, czy nie.Można dostosować fabułę do własnych potrzeb, patrz na przykład tutaj . Pakiet ma również kilka winiet, google „przykład mozaiki vcd” (tak jak właśnie to zrobiłem). Artykuł w Wikipedii cytowany na samym początku wyjaśnia również, jak zbudować tego rodzaju fabułę i intuicję.
Gdy porównasz moje zdjęcie ze zdjęciem w odpowiedzi Pawła Kleki, nie ma znaczenia, że „zabieg” znajduje się na lewej krawędzi każdego zdjęcia. Możesz łatwo zmienić lokalizację krawędzi, zmieniając ostatni wiersz mojego kodu i dostosowując układ do swoich potrzeb. Powszechną praktyką jest to, że po lewej stronie znajduje się najważniejsza zmienna lub zmienna o najmniejszej liczbie etykiet. Można również zmienić kolejność etykiet (na przykład tak, że przy prawej krawędzi zamówienia jest „none umiarkowanego istotne”) poprzez odpowiedni zmienny czynnik R uporządkowane i dostosowanie jego poziomu.
źródło
Sugeruję użycie mozaiki
źródło
Rozważam opcję użycia zestawów równoległych. Niektóre porównania będą łatwiejsze niż inne, ale nadal widać relacje między trzema zmiennymi kategorialnymi.
Oto przykład z danymi Titanic Survival:
W R (biorąc pod uwagę twoje tagi) użyłem ggparallel do jego wdrożenia. Niektórzy ludzie dyskutowali tutaj na temat CV, jak wdrożyć go na inne sposoby.
źródło
Informacje można również przekazać za pomocą następującego prostego wykresu liniowego:
Ulepszenie jest pokazane przez różne typy linii, podczas gdy grupa linii bazowej jest wyświetlana w kolorach. Te i parametr osi X (tutaj leczenie) można również zamieniać w razie potrzeby.
źródło
Podobnie do zestawów równoległych, zamieszczonych powyżej przez nazareno, możesz używać wykresów aluwialnych, które są dostępne z pakietu aluwialnego R. http://www.r-bloggers.com/alluvial-diagrams/
źródło