Zaawansowane analizy statystyczne

W Tableau możemy przeprowadzać analizy statystyczne poprzez wykonywanie obliczeń za pomocą pól kalkulowanych, a następnie wizualizację danych i wyników. W przypadku niektórych współczynników statystycznych wymagałoby to wprowadzenia skomplikowanego wzoru. Aby uprościć sobie pracę, możemy skorzystać z połączenia Tableau z R, dzięki któremu mamy dostęp do pakietów z funkcjami, algorytmami, testami czy modelami statystycznymi.


TECHNICZNE  ASPEKTY  POŁĄCZENIA  Z  R


Uzyskanie połączenia umożliwia zainstalowanie pakietu Rserve, dzięki któremu za pomocą pól kalkulowanych w Tableau wysyłamy polecenie do R. Proces instalacji pakietu i konfigurowania połączenia krok po kroku został opisany w poście „Integracja Tableau z R – połączenie i zastosowanie”:







 W Tableau dostępne są cztery funkcje współpracujące ze środowiskiem R, którym możemy przekazywać jako argumenty dowolną liczbę zmiennych ze zbioru wczytanego do Tableau. Uzyskany wynik jest zwracany z powrotem do Tableau w postaci wektora określonego typu. Nazwy funkcji zaczynają się od słowa „SCRIPT”. Druga część, podana po podkreśleniu dolnym, wskazuje jaki typ wartości jest obsługiwany przez daną funkcję:

- BOOL (od boolean) – wartości logiczne, TRUE or FALSE,
- INT (od integer) – wartości całkowite,
- REAL – wartości rzeczywiste,
- STR (od string) – tekstowe.

Jako pierwszy argument funkcje przyjmują kod R, podany w cudzysłowie (pojedynczym lub podwójnym), a jako kolejne: zmienne z wczytanego do Tableau zbioru (zmienne liczbowe powinny być zagregowane). Należy mieć na uwadze, że podwójny cudzysłów użyty wewnątrz kodu R zostanie przez Tableau potraktowany jako zakończenie sekwencji kodu R i kalkulacja nie wykona się poprawnie. Używanie pojedynczych cudzysłowów pozwala na obejście tego problemu.

Druga możliwość dotyczy pracy w R na obiektach różnych od wektorów, np. ramkach danych. Wyniki nie mogą być przekazane bezpośrednio do Tableau, zatem konieczny jest eksport z poziomu skryptu R - owego np. do exela czy innego formatu obsługiwanego przez Tableau. Zapisujemy plik w wybranym katalogu i łączymy się z nim w Tableau na żywo. Dzięki temu, gdy przy wykonaniu kalkulacji zawartość pliku wynikowego ulegnie zmianie, możemy odświeżyć połączenie za pomocą opcji Refresh, do której skrótem jest klawisz F5. Do zbioru podłączamy się jednokrotnie, później wystarczy odświeżać połączenie po każdej zmianie parametrów kalkulacji - nowe wyniki zostaną zapisane do pliku wynikowego, zastępując stare (tzw. nadpisywanie). Do eksportowania wyników możemy wykorzystać np. funkcje z pakietów „data.table” albo „R.utils”.



Jeśli chcemy skorzystać z funkcji, która znajduje się w pakiecie, który nie jest zamieszczony w podstawie programu R, musimy jednorazowo zainstalować ten pakiet poprzez wpisanie w konsolę programu R polecenia

install.packages("Nazwa_pakietu")

W każdej kalkulacji przed wywołaniem funkcji w kodzie R-owym, podanym jako argument do Tableau, musimy wczytać pakiet, z którego ona pochodzi.  Korzystamy w tym celu z następującej komendy:

library(Nazwa_pakietu)

Może się zdarzyć, że kod R - owy, który będziemy chcieli wykorzystać w Tableau będzie długi i złożony. Wtedy nie ma konieczności wprowadzania całej jego treści do Tableau – można zapisać go w pliku tekstowym, a do jego wywołania w kreatorze pól kalkulowanych Tableau użyć następującej funkcji:

source('ścieżka_do_pliku /nazwa_pliku.txt')

Należy przy tym pamiętać, że ze wcześniej wspomnianego powodu ścieżka do pliku zawierającego skrypt musi być podana w pojedynczym cudzysłowie oraz, że ukośniki muszą być skierowane dokładnie tak, jak podałam w przykładowej ścieżce powyżej (przeciwnie do ukośników w ścieżce do pliku wygenerowanej przez system Windows).

Opcjonalnie możemy skorzystać z pakietu „logging", by opisywać proces realizacji skryptu w pliku tekstowym – ułatwia to znajdowanie ewentualnych błędów. By zapoznać się z dokumentacją pakietu „logging” wystarczy wpisać w konsolę programu R (po uprzednim zainstalowaniu i wczytaniu pakietu) następującą komendę:

?logging

albo pobrać wydruk pdf z oficjalnej strony R:




JAK  SZYBKO  POŁĄCZENIE  DZIAŁA  NA  DUŻYCH  ZBIORACH  DANYCH?


Tableau szybko przetwarza duże ilości danych, a szybkość realizacji zapytań zależy od struktury bazy. Aby dodatkowo przyspieszyć możemy pracować na ekstrakcie, czyli lokalnym zapisie zbioru danych na dysku. Wtedy baza jest optymalizowana i pracujemy w oparciu o technologię in-memory.

R dobrze radzi sobie z bazami danych o wielkości kilkudziesięciu tysięcy rekordów, jednak gdy liczba rekordów sięga milionów obliczenia wykonują się wolno. Możemy skorzystać z pakietu „data.table”, w celu zwiększenia wydajności operacji wykonywanych na dużych zbiorach danych. Istnieje również możliwość kupna komercyjnej wersji programu R, uwzględniającej rozwiązania Big Data.


TABLEAU  SERVER,  TABLEAU  PUBLIC,  TABLEAU ONLINE


Po opublikowaniu woorkbook`a na Tableau Server, aby użytkownicy serwera mogli oglądać wyniki uzyskane w R, Tableau Server (podobnie jak Tableau Desktop) musi się łączyć z Rserve. W przeciwnym razie wizualizacje, do których wykonania zostały wykorzystane pola kalkulowane obliczone w oparciu o połączenie Tableau i R, nie zostaną wyświetlone.

Tableau Public i Tableau Online na chwilę obecną nie wspierają połączenia z R.


PRZYKŁADOWE  ANALIZY


Analizę przeprowadzimy na zbiorze Sample - Superstore Subset, dostępnym w katalogu My Tableau Repository po zainstalowaniu Tableau. Interesuje nas zależność zysku od sprzedaży w poszczególnych segmentach klienta. Gdy zależność ta jest duża wiemy, że nasze działania marketingowe przyniosły oczekiwane efekty, natomiast mała zależność alarmuje nas o konieczności uruchomienia kolejnych akcji marketingowych, w celu zwiększenia sprzedaży i maksymalizowania zysków.

Pracę rozpoczniemy od utworzenia wykresu rozrzutu dla miar Profit i Sales (w zakładce Show Me: scatter plots) i przeciągnięcia na ikonkę Detail zmiennej Customer Name. Następnie dodamy do widoku kolejne wymiary: Region do wierszy, Department do kolumn. Przeciągamy zmienną Customer Segment na zakładkę Filters i wyświetlamy filtr w postaci listy jednokrotnego wyboru. W ten sposób zbudowaliśmy wykres panelowy, złożony z wykresów rozrzutu w poszczególnych regionach i działach produktów, który możemy dodatkowo filtrować po segmentach klienta.





Zależność pomiędzy zmiennymi Profit i Sales możemy oceniać patrząc na wykresy – czy rozrzut punktów wykazuje jakąś prawidłowość, np. liniową czy logarytmiczną? Jednak bardziej precyzyjnym kryterium oceny zależności pomiędzy dwoma zmiennymi liczbowymi jest badanie wartości wskaźnika statystycznego, zwanego korelacją. Korelację obliczymy w oparciu o połączenie Tableau z R, używając funkcji SCRIPT_REAL(), ponieważ wartości zmiennej korelacja to liczby rzeczywiste z przedziału [-1, 1]. Skorzystamy z funkcji R-owej cor(), która znajduje się w bibliotece „stats”.





Tak wykonaną kalkulację przeciągamy na ikonkę Color i dostosowujemy do szczegółowości naszego widoku (opcja Compute using -> Customer Name).








Na widoku automatycznie utworzy nam się legenda, związana z wartościami zmiennej Korelacja. Teraz możemy np. zaobserwować, że w segmencie Corporate, w regionie południowym i dziale Furniture zależność jest znikoma (korelacja pomiędzy zmiennymi Profit i Sales jest bliska zeru). W regionie centralnym i dziale Office Supplies występuje silna dodatnia zależność pomiędzy zyskiem i sprzedażą. Wyfiltrujmy sobie zatem na widoku Region: Central, Department: Office Supplies i przyjrzyjmy z bliska wykresowi rozrzutu, po dopasowaniu linii trendu.






W wydruku modelu możemy sprawdzić m.in. jaką wartość przyjmuje współczynnik determinacji R-Squared: 0,707432. Współczynnik ten przyjmuje wartości z przedziału [0, 1] – im wyższa wartość, tym lepiej dopasowany jest model. W naszym przypadku model jest dobrze dopasowany, a co za tym idzie, zależność pomiędzy Profit i Sales jest silna.

         Zwróćmy uwagę na obserwacje odstające. Odchylenie wartości rzeczywistej od wartości dopasowanej to tzw. „residuum”, czy inaczej „reszta”. To znaczy, że im większa jest wartość residuum dla danego punktu, tym bardziej punkt ten odstaje od linii trendu. 







W celu podkreślenia punktów, które najmocniej odstają, możemy obliczyć wartość bezwzględną residuów i nanieść kalkulację na ikonkę Size, a następnie dostosować do szczegółowości naszego widoku (opcja Compute using -> Customer Name).








Które obserwacje powinny być dla nas alarmujące? 

         W celu upewnienia się które obserwacje są odstające możemy powołać się na wybrane kryterium detekcji obserwacji odstających. Jedną z rekomendowanych metod jest badanie wartości tzw. residuów standaryzowanych, które dla obserwacji, które nie są odstające, powinny mieścić się w przedziale [-2, 2]. Tym razem skorzystamy z funkcji SRCIPT_BOOL(), ponieważ wykonana kalkulacja będzie przyjmować wartości TRUE or FALSE, w zależności od tego czy warunek logiczny będzie spełniony. Przeciągamy kalkulację na ikonkę Color i dostosowujemy do szczegółowości naszego widoku (opcja Compute using -> Customer Name). Edytujemy linię trendu – chcemy, żeby bez względu na kolor dopasowana była jedna linia trendu (odhaczamy opcję: Allow a trend line per color).








Teraz możemy przyjrzeć się bliżej obserwacjom odstającym z naszego zbioru i np. wyeksportować interesujący nas podzbiór danych do Exela.






Za pomocą legendy możemy podświetlić obserwacje odstające i np. wykluczyć je z naszej kalkulacji.





Czy poprawi to jakość dopasowania modelu? 

         Tak, wartość współczynnika determinacji wzrosła z 0,707432 na 0,822181. Teraz model jest bardziej wiarygodny, jeśli chcielibyśmy w oparciu o niego prognozować zachowanie naszych danych. Należy jednak pamiętać, że nie zawsze usunięcie obserwacji odstających poprawia dopasowanie modelu. Nie jest to wskazane zwłaszcza w sytuacji, gdy ich liczba jest bardzo duża.





Wykonana wizualizacja w sposób oczywisty odnosi się do całego widoku. Aby to sprawdzić powróćmy do wykresu panelowego (Region: All, Department: All).





KOMENTARZE

Nazwa

Alteryx,8,astrafox,1,ASTRAFOX ACADEMY,16,case study,16,Data Science,44,Konferencje,31,Mapy i geokodowanie,6,Opinie,1,Przygotowane danych - ETL,4,R,4,Tableau,202,Tips & Tricks,61,Wizualizacja danych,50,
ltr
item
Polski blog Tableau - ASTRAFOX: Zaawansowane analizy statystyczne
Zaawansowane analizy statystyczne
https://3.bp.blogspot.com/-Balo4BRIYd8/VkEKAjiF0rI/AAAAAAAAAHc/MjPaOpcEMag/s640/diagram%2BTableau%2B%252B%2BR.png
https://3.bp.blogspot.com/-Balo4BRIYd8/VkEKAjiF0rI/AAAAAAAAAHc/MjPaOpcEMag/s72-c/diagram%2BTableau%2B%252B%2BR.png
Polski blog Tableau - ASTRAFOX
http://blog.tableau-software.pl/2014/10/zaawansowane-analizy-statystyczne.html
http://blog.tableau-software.pl/
http://blog.tableau-software.pl/
http://blog.tableau-software.pl/2014/10/zaawansowane-analizy-statystyczne.html
true
9139349578575077505
UTF-8
Załadowano wszytskie posty Nie znaleziono żadnych postów ZOBACZ WSZYSTKIE Czytaj więcej Odpowiedz Usuń komentarz Usuń Napisane przez Home STRONY POSTY Zobacz wszystko POLECANE ETYKIETA ARCHIWUM SZUKAJ WSZYSTKIE POSTY Nie znaleziono tematów ani postów pasujących do twoich kryteriów Powrót Niedziela Poniedziałek Wtorek Środa Czwartek Piątek Sobota Nd Pon Wt Śr Czw Pt Sob Styczeń Luty Marzec Kwiecień Maj Czewiec Lipiec Sierpień Wrzesień Październik Listopad Grudzień Styczeń Luty Marzec Kwiecień Maj Czerwiec Lipiec Sierpień Wrzesień Październik Listopad Grudzień teraz minutę temu $$1$$ minutes ago godzinę temu $$1$$ hours ago wczoraj $$1$$ days ago $$1$$ weeks ago ponad 5 tygodni temu Obserwujący Obserwuj TO JEST TREŚĆ PREMIUM Udostępnij, by odblokować Kopiuj cały kod Zaznacz cały kod Cały kod został skopiowany Nie można skopiować kodu / tekstu, naciśnij [CTRL]+[C] (or CMD+C w Mac) by skopiować