W poprzednim wpisie przedstawiłem proces przygotowania danych dotyczących rejestracji pojazdów w Polsce. W tym artykule zobaczysz analizę danych za pomocą Kibana. Dowiesz się które miesiące to największy ruch w branży motoryzacyjnej, jakie województwa przodują w tym temacie i czy COVID miał jakiś większy wpływ.
Jak wrzucić dane do Kibana?
Dane z poprzedniego wpisu znajdziesz tutaj. Rozmiar nie jest duży, więc wystarczy File Data Visualizer + Ingest Pipeline z Date Processor’em do przekształcenia pola date
w @timestamp
.
Analiza
Trochę wykresików
Zacznijmy od wykres typu Area w Lens dla mediany wartości liczby rejestrowanych aut w województwach. Na pierwszy rzut oka widzimy spadek w okolicach marca 2020 roku. To wtedy w Polsce zaczęła się panika związana z Koronawirusem. Wszyscy panicznie wykupywali papier toaletowy, ryż, makaron i konserwy. Nic dziwnego, że na rynku był wtedy gwałtowny spadek.
Nie posiadamy danych za kilka ostatnich miesięcy 2017 roku. Powyżej możliwości poradzenia sobie z tym problemem.
Tym razem Area stacked z sumą liczby rejestracji i podziałem na województwa. Przoduje województwo mazowieckie, wielkopolskie i śląskie. Widać, że marzec jest szczególnym miesiącem pod kątem rejestrowanej liczby aut (poza 2020 😅). Czy mają na to wpływ wyprzedaże rocznika? Może zbliżająca się wiosna? Nie wiem, ale się domyślam.
Wykres słupkowy potwierdza podium. Tabelę zamyka warmińsko-mazurskie, podlaskie i opolskie.
Co nam powie wykres Area stacked, gdzie sumę aut zestawimy z latami i podzielimy na miesiące? Rok 2019 był rokiem z największą liczbą zarejestrowanych aut. Rok 2020 był troszeczkę lepszy niż 2015. Rok 2021 jest przypuszczalnie (z powodu braku danych) na poziomie 2017. w 2022 brakuje dwóch miesięcy (dane obrabiałem w listopadzie, to nie jest wina urzędów), ale widać że wyniki będą jednak niższe. COVID najbardziej odcisnął piętno na marcu i kwietniu.
Błąd standardowy
Jak wyglądają dane z wszystkich lat dla konkretnych miesięcy. Czy w Kibanie możemy obliczyć błąd standardowy?
W Lens mamy do dyspozycji Quick function, ale dla zaawansowanych graczy jest Formula. Gdy spojrzymy na wzór
mamy wszystkie potrzebne dane (odchylenie standardowe i liczba obserwacji w próbie)
average(vehicles)-(1.96 * standard_deviation(vehicles, kql='vehicles: *')/sqrt(count(kql='vehicles: *')))
Dlaczego 1.96
? Zazwyczaj stosuje się poziom ufności p=95% (patrz wikipedia)
Wykres dla wszystkich województw wydaje się spłaszczony. Z wykresy słupkowego pamiętamy jak duże są różnice między województwami. Filtrując po konkretnym województwie (np. kujawsko-pomorskie poniżej) widać:
- Duży błąd standardowy w okolicy marca – COVID
- Marzec i lipiec to miesiące z największą liczbą zarejestrowanych aut. Powiedziałbym, że generalnie wiosna to “ruch w interesie”.
- Koniec i początek roku nie jest popularnym wyborem.
Ten wykres jest po prostu ładny
Poniżej wykres Scatter Plot zrobiony w Vega, czyli zaawansowanej gramatyce do deklarowania interaktywnych wizualizacji. Polecam galerię przykładów, najbardziej podoba mi się Force Directed Layout.
Każdy pomiar jest reprezentowany przez bąbelek. Rozmiar świadczy o liczbie zarejestrowanych pojazdów. Kolor odpowiada odpowiedniemu województwu.
{ $schema: https://vega.github.io/schema/vega-lite/v5.json mark: {"type": "point", "tooltip": true, "filled": true} data: { url: { %context%: true index: registered-vehicles body: { size: 10000 _source: ["voivodeship", "vehicles", "@timestamp"] } } format: {property: "hits.hits"} } encoding: { x: {field: "_source.@timestamp", type: "temporal", title: "@timestamp"} y: {field: "_source.vehicles", type: "quantitative", title: "vehicles"} color: {field: "_source.voivodeship", type:"nominal"} size: {field: "_source.vehicles", type:"quantitative"} tooltip: [ {"field": "_source.voivodeship", "type": "nominal", "title": "Voivodeship"} ] } }
Time shift
Time shift to ciekawy mechanizm bardzo dobrze pokazujący różnicę między w danych między okresami. Poniżej porównanie lat 2020, 2019 i 2018. Na przykładzie Mazowsza widać, że COVID najbardziej wpłynął na pierwsze pół roku 2020.
Średnia krocząca
Średnia krocząca to jeden ze sposobów do badania istniejącego trendu. Na poniższym wykresie również widać podobieństwo między latami 2022 i 2017.
A może pochodna?
A jakbyśmy chcieli porównać różnice konkretnego miesiąca między latami per województwo? Tutaj może przydać się funkcja Derivative i nieco starszy rodzaj wizualizacji.
Oś X jest reprezentowana przez pole year
i podzielona na kubełki przez województwa. Filtr ogranicza dane do konkretnego miesiąca. Metryka to różnica między sąsiednimi okresami.
Rok 2020 jest dość oczywisty… ale pomimo, że rok 2019 był rekordowy, Mazowsze miało lepsze wyniki w marcu 2018
A może Machine Learning?
Z ciekawości uruchomiłem Trial (ML jest dostępne w płatnej licencji) i uruchomiłem Job w Anomaly Detection. Nie jestem mistrzem w tej dziedzinie. Liczę na to, że uda mi się sporo osiągnąć za pomocą mojego click-fu w GUI.
Jako metrykę wybrałem sumę. 30 dniowy kubełek będzie pasował w sam raz, ponieważ mam dane per miesiąc. Ważne było zaznaczenie Sparse data
, ponieważ nie chcemy, aby dziura w danych powodowała anomalie.
Po krótkiej chwili widzimy efekty. Ewidentną anomalią jest początek pandemii. Jest też kilka mniej oczywistych anomalii dla niektórych województw w 2016 roku.
Kliknięcie w kafelek pokazuje nam wykres z anomaliami.
Według tabeli, najbardziej dostało województwo zachodniopomorskie. Według opisu wartości w marcu był trzykrotnie niższe niż zakładany trend.
Widok w Single Metric Viewer bardzo ładnie przedstawia trend oraz odchylenia. Całkiem fajny efekt jak na kilka kliknięć.
Dla porównania województwo podlaskie, które miało najniższy anomaly score. Gołym okiem widać, że spadek liczby zarejestrowanych aut był proporcjonalnie mniejszy.
Podsumowanie
Nie pracuję na co dzień jako Data Scientists. Moja analiza na pewno mogła by być bardziej wyrafinowana i precyzyjna. Kilka refleksji które przychodzą mi do głowy:
- Przetwarzanie i analiza danych z projektu Otwarte Dane sprawiła mi dużo frajdy.
- Klikanie wizualizacji w Kibanie jest szybkie, proste i daje szybko efekty. Dla bardziej zaawansowanych wizualizacji można wrócić do Python’a lub wykorzystać Vega.
- Machine Learning w Kibana to całkiem ciekawa funkcjonalność Muszę wejść głębiej w ten moduł i opisać go na blogu.
- W artykule wiedzieliśmy różnicę między wczesną wiosną – wczesnym latem i końcówką i początkiem roku. Ciekaw jestem jak wyglądają ceny aut w tych okresach.
Jak będziesz mieć pytania dotyczące ML to się odezwij.