Dzisiejszy post będzie bardzo krótki, natomiast wynika to też z faktu, że w PowerBI Desktop w połączeniu z “R” możemy uzyskać świetne rezultaty małym nakładem pracy. “Outliers”, czyli wartości, które są skrajnie różne od pozostałych w badanej domenie mogą zniekształcić wynik analiz. Czasami to one będą stanowić najciekawsze punkty obserwacyjne, natomiast w większości przypadków będą “zakłamywać” faktyczny obraz. Weźmy pod uwagę na przykład analizę sprzedaży względem klinetów. Jeżeli stu klientów zamówi średnio po 3 produkty, natomiast stupierwszy zamówi nagle 50 produktów to z badania średniej arytmetycznej będzie wynikać, że klienci średnio kupują po 3.5 produktu. Oczywiście w powyższym przykładzie dość łatwo można by było znaleźć anomalię, ale w dużym zbiorze danych zadanie to jest znacznie trudniejsze. Chciałbym również dodać, że obliczanie dodatkowych miar, między innymi odchylenia standardowego może nam dać dodatkowe informacje o zróżniocowaniu, natomiast ciężko jest stwierdzić, które wartości to odchylenia i jaki powinno się przyjąć próg oznaczenia ich jako istotnych lub nie.
Z pomocą może przyjść PowerBI Desktop z dodatkiem “R”. W poniższym przykładzie do analizy wybrano dwa atrybuty: “Account Number” oraz “Order Quantity”, a celem było znalezienie wartości skrajnych oraz wartości, która pozwoliła by określić granicę wartości skrajnych. Można to osiągnąc wykorzystując prosty wykres programu “R” i zaledwie dwie linijki kodu:
colnames(dataset) <- c("OrderQuantity","AccountNumber") plot(dataset$OrderQuantity )
Jak widać na powyższym zrzucie raport pokazuje jak wiele było przypadków z kolejnymi wielkościami zamówień. Dzięki prostej analizy wykresu jesteśmy w stanie stwierdzić, że klienci, którzy zamawiali więcej niż 20 produktów to sporadyczne przypadki, które mogą zniekształcić końcowe wyniki.
Wykorzystując dodatkowe wielkości statystyczne można poznać jeszcze więcej szczegółów.
library(gridExtra) colnames(dataset) <- c("OrderQuantity","AccountNumber") x <- matrix(c("Value"), ncol=1) number_of_rows <- nrow(dataset) min_value <- min(dataset$OrderQuantity) max_value <- max(dataset$OrderQuantity) median_value <- median(dataset$OrderQuantity) mean_value <- mean(dataset$OrderQuantity) sd_value <- sd(dataset$OrderQuantity) y <- rbind(x, number_of_rows) y <- rbind(y, min_value) y <- rbind(y, max_value) y <- rbind(y, median_value) y <- rbind(y, mean_value) y <- rbind(y, sd_value) grid.table(y)
W przypadku wszystkich danych (18484 rekordów) średnia arytmetyczna wynosiła 3.27, natomiast odchylenie standardowe 2.62. Dzięki dodaniu do raportu filtru i usunięciu wartości skrajnych wynik będzie oczywiście inny.
Jak widać na załączonym zrzucie w drugim przypadku analizowane były 18448 rekordy, czyli o 40 rekordów mniej poprzednio. Po usunięciu wartości skrajnych wartość średnia wynosi 3,20, natomiast odchylenie standardowe spadło do 1.84. Jak widać usunięcie – stosunkowo – niewielkiej ilości danych przyniosło – stosunkowo – duże zmiany w analizie danych.
- Docker dla amatora danych – Tworzenie środowiska (VM) w Azure i VirtualBox (skrypt) - April 20, 2020
- Power-up your BI project with PowerApps – materiały - February 5, 2020
- Docker dla “amatora” danych – kod źródłowy do prezentacji - November 18, 2019
Last comments