install.packages(“devtools”) devtools::install_github(“ropensci/plotly”) install.packages(“plotly”) install.packages(“classInt”) install.packages(“tabplot”) install.packages(“ggplot2”) library(plotly) library(classInt) library(tabplot) library(ggplot2)

Wstep

Celem projektu jest prezentacja róznych sposobów wizualizacji danych. Umiejetnosc latwego i interpretowalnego pokazania danych w odpowiedniej formie jest bardzo wazna w pracy analityka.

Opis danych

Zbiór danych “diamonds” jest zawarty w pakiecie ggplot2. Zawiera spis okolo 54 tysiecy diamentów opisany 10 zmiennymi, miedzy innymi:
- price : cena w dolarach amerykanskich
- carat : waga diamentów w karatach
- cut : Jakosc ciecia diamentu (Fair, Good, Very Good, Premium, Ideal)
- color : kolor diamentu: od J (najgorszego) do D (najlepszego)
- clarity : Przejrzystosc (I1 (najgorszy), SI1, SI2, VS1, VS2, VVS1, VVS2, IF (najlepszy))

Analiza danych

Zaladowanie wymaganych pakietów

library(plotly)
library(classInt)
library(tabplot)
library(ggplot2)


Dodanie kategorycznej zmiennej grupujacej cene na 5 kategorii

diamonds$price_class <- num2fac(diamonds$price, n=5)


Wykres babelkowy pokazuje zaleznosc miedzy cena (os OY), waga w karatach (OX) oraz jakoscia diamentow (kolory i ksztalt). Dla wiekszych diamentów ich cena rosnie bardzo szybko. Zaleznosc wyglada na ekspotencjalna.

ggplot(diamonds, aes(x=carat, y=price, color=cut)) + geom_point() + ggtitle("Zaleznosc miedzy cena, waga w karatach oraz jakoscia diamentow")


Wykres liniowy pokazuje linie trendu kazdego typu jakosci ciecia w jaki sposób zmieniac bedzie sie cena dla coraz wiekszej wagi diamentów. Widac, ze w danym zbiorze zarówno najwieksza wage jak i cene osiagaja diamenty, które sa ciete najgorzej. Moze z tego wynikac, ze sztuka szflifowania diamentów jest bardzo trudna.

ggplot(diamonds, aes(x=carat, y=price, color=cut))+ geom_smooth(se=FALSE) + ggtitle("Linie trendu")


Zaleznosc zlogarytmowanych zmiennych price i carat wyglada teraz na liniowa.

qplot(log(carat), log(price), data = diamonds, color=cut, main = "Zaleznosc zlogarytmowanych zmiennych price i carat")


Cena na karat jest wyraznie rózna dla róznych kolorów diamentów. Najgorszy kolor - J ma najnizsza cene na karat, zas kolor D - najlepszy - najwyzsza.

qplot(price / carat, color, data = diamonds, geom = "jitter", color = color, main = "Cena na karat w zaleznosci od koloru diamentu")


Sytuacja wyglada podobnie gdy kolor porównujemy z waga diamentu. Widac, ze lepszy kolor diamentu idzie w parze z wyzsza przecietna waga oraz coraz mniejszym rozstepem cwiartkowym

ggplot(diamonds, aes(x=color, y=carat, fill=color)) + geom_boxplot() + scale_y_log10()

Najbardziej liczne sa diamenty o kodzie przejrzystosci SI1 oraz VS2, a najrzadsze skrajne: I1 oraz IF

ggplot(diamonds, aes(x=price)) + geom_histogram(binwidth=200) + facet_wrap(~ clarity) + ggtitle("Liczbnosc diamentow w danych cenach dla kazdego poziomu przejrzystosci")


Inaczej w podziale na kolory liczebnosc diamentów jest tutaj równiej rozprosznona. Jedynie Kolor przedstawiony symbolem J jest nieliczny.

ggplot(diamonds, aes(x=price)) + geom_histogram(binwidth=200) + facet_wrap(~ color)


Cena diamentów w podziale na kategorie i jakosc ciecia. Najwiecej diamentów jest w najnizszej kategorii wagowej (do 5000$) i bardzo dobrym wykonaniu.

ggplot(data = diamonds) + geom_bar(mapping = aes(x=cut), position = "dodge") + ggtitle("Cena diamentów w kategoriach") + facet_wrap(~ price_class)


Ponizszy wykres prezentuje wielowymiarowa analize zmiennych opisujacych diamenty. Widac miedzy innymi bardzo silne skorelowanie ceny i wagi.

tabplot::tableplot(diamonds, select = c(carat, price, cut, color, clarity), sortCol = price,  title = "Wielowymiarowa analiza zmiennych")

Podsumowanie

Projekt mial na celu zaprezentowanie najpopularniejszych metod prezentacji i wizualizacji danych na przykladzie zbioru “diamonds”. W dokumencie zostaly przedstawione miedzy innymi wykres rozproszenia, liniowy przedstawiajacy trend, wykresy slupkowe per kategorie innej zmiennej, a takze pudelkowe.
Zamieszczenie raportu wraz z kodem w wersji htmlowej zostalo wykonane za pomoca pakietu plotly oraz silnika knitr