O korelacji pisaliśmy 2 lata temu. Korelacja była liczona przy użyciu funkcji SCRIPT_REAL, wywołującej skrypt R, zwracający wynik będący korelacją dwóch zmiennych. Jeżeli użyjemy wymiarów, wynik można liczyć wielokrotnie uzyskując np tabele korelacji według różnych segmentów. Niestety tym sposobem nie da się stworzyć macierzy korelacji. Tableau nie potrafi pobrać z R ramki danych tylko pojedynczy element.
Można obejść to ograniczenie zapisując wyniki z R w pliku csv, które podłączamy jako nowe źródło danych. Rozwiązanie to jest uciążliwe, postanowiłem więc przygotować dane w Alteryx.
Można obejść to ograniczenie zapisując wyniki z R w pliku csv, które podłączamy jako nowe źródło danych. Rozwiązanie to jest uciążliwe, postanowiłem więc przygotować dane w Alteryx.
Gotowa macierz korelacji w Tableau |
Zbiór danych, który chcemy przeanalizować, dotyczy wyników badań Kliniki Immunologii, Transplantologii i Chorób Wewnętrznych Warszawskiego Uniwersytetu Medycznego, udostępnionych przez dr Dariusza Sołdackiego. Zbiór zawiera 18 miar i ponad 100 obserwacji.
Wstępne przeszukanie komponentów Alteryxowych wykazało, że mamy dwie możliwości liczenia korelacji metodą Pearsona lub Spearmana.
Komponent liczący metodą Pearsona przyjmuje dowolną ilość parametrów liczbowych i zwraca macierz korelacji. Niestety uzyskana macierz jest częściowo wypełniona Null'ami.
Konfiguracja parametrów do korelacji metodą Pearsona |
Wyniki które zwraca Alteryx |
Drugi z komponentów jest makrem, pobiera 2 argumenty i zwraca ich korelacje (podobnie jak w Tableau). Aby uzyskać macierz, musielibyśmy stworzyć taką strukturę danych, która pozwalałaby wykonać połączenie każdej miar z każdą.
Ponieważ nie mogłem na szybko znaleźć przyczyny wartości Null, a drugi z komponentów działał zupełnie inaczej, skłoniło mnie to do użycia R.
Alteryx ma wbudowany kompilator R i pozwala na włączanie do procesu przeliczeń w R. Dane mogą być przekazywane i zwracane jako data frame. Skrypt pisany w komponencie posiada podświetlenie składni. W trakcie tworzenia skryptu, popełniłem kilka błędów, kompilator zwracał sensowne opisy błędów. Poniżej mój przykład liczący korelacje według trzech metod dostępnych w standardowej funkcji cor. Jedyna rzecz, która wymagała odpalenia RStudio, to eksperymenty z wynikami zwracanymi przez cor. Alteryx potrzebuje na wyjściu data frame, cor zwraca matrix, stąd przekształcenie do odpowiedniego typu i dodanie w pierwszej kolumnie nazwy wierszy.
Kod R wewnątrz komponentu Alteryx liczący korelacje według różnych metod |
Na koniec, przygotowałem dane do Tableau, dodając pole z metodą, tworząc union z wyników i dekomponując macierz do postaci tabelarycznej.
Czas zabrać się za wizualizacje. W pierwszym podejściu zrobiłem tabele z kółeczkami, dodałem atrybuty kolor, wielkość.
Ponieważ macierz zawiera zdublowane informacje, dodatkowo na przecięciu zawsze jest 1, więc usunąłem dolną część wraz z przecięciem przy użyciu funkcji lower.tri dostępnej w R. Do kodu R w Alteryx dodałem następującą zmianę.
Dodatkowo aby lepiej zauważyć istotne korelacje wprowadziłem możliwość włączenia kwadratu współczynnika korelacji. Wynik wygląda następująco.
KOMENTARZE