class: center, middle, inverse, title-slide .title[ # Statystyka i wizualizacja danych ] .subtitle[ ## Statystyki opisowe ] .author[ ### Jakub Nowosad
nowosad@amu.edu.pl
] --- <!-- Skale pomiarowe --> <!-- - **Skala ilorazowa** - skala, która posiada sens fizyczny dla różnic i ilorazów; ceny, wzrost --> <!-- - **Skala przedziałowa** - skala posiada sens fizyczny dla różnic, ale nie dla ilorazów; temperatura w stopniach Celcjusza, daty --> <!-- - **Skala porządkowa** - posiada fizyczny sens dla kolejności wartości; wzrost w kategoriach ("mały" < "średni" < "duży"), oceny --> <!-- - **Skala nominalna** - nie posiada fizycznego sensu dla dobranych wartości; kody pocztowe, numery telefonów --> --- ## Zbiór danych ```r install.packages("gapminder") ``` http://www.gapminder.org/data/ http://github.com/jennybc/gapminder ```r library(gapminder) gapminder2007 = subset(gapminder, year == 2007) ``` --- ## Gapminder http://www.youtube.com/embed/jbkSRLYSojo --- class: inverse, middle, center # Statystyki opisowe --- ## Statystyki opisowe ```r summary(gapminder) ``` ``` ## country continent year lifeExp ## Afghanistan: 12 Africa :624 Min. :1952 Min. :23.60 ## Albania : 12 Americas:300 1st Qu.:1966 1st Qu.:48.20 ## Algeria : 12 Asia :396 Median :1980 Median :60.71 ## Angola : 12 Europe :360 Mean :1980 Mean :59.47 ## Argentina : 12 Oceania : 24 3rd Qu.:1993 3rd Qu.:70.85 ## Australia : 12 Max. :2007 Max. :82.60 ## (Other) :1632 ## pop gdpPercap ## Min. :6.001e+04 Min. : 241.2 ## 1st Qu.:2.794e+06 1st Qu.: 1202.1 ## Median :7.024e+06 Median : 3531.8 ## Mean :2.960e+07 Mean : 7215.3 ## 3rd Qu.:1.959e+07 3rd Qu.: 9325.5 ## Max. :1.319e+09 Max. :113523.1 ## ``` --- class: inverse, middle, center # Miary położenia --- ## Średnia ```r mean.lifeExp = mean(gapminder2007$lifeExp) ``` ``` ## [1] 67.00742 ``` <img src="03_statystyki_opisowe_files/figure-html/unnamed-chunk-7-1.png" style="display: block; margin: auto;" /> --- ## Mediana ```r median.lifeExp = median(gapminder2007$lifeExp) ``` ``` ## [1] 71.9355 ``` <img src="03_statystyki_opisowe_files/figure-html/unnamed-chunk-9-1.png" style="display: block; margin: auto;" /> - wartość środkowa - połowa wartości danych jest mniejsza, połowa jest większa **Moda**: https://stackoverflow.com/a/8189441/2602477 --- ## Średnia ważona ```r meanw.lifeExp = weighted.mean(gapminder2007$lifeExp, gapminder2007$pop) ``` ``` ## [1] 67.00742 ``` <img src="03_statystyki_opisowe_files/figure-html/unnamed-chunk-11-1.png" style="display: block; margin: auto;" /> --- ## Średnia harmoniczna ```r harmonic_mean = function(x){ 1 / mean(1 / x) } ``` ```r rzeka = c(6, 3.2) #km/h harmonic_mean(rzeka) ``` ``` ## [1] 4.173913 ``` --- ## Średnia geometryczna ```r geometric_mean = function(x){ n = length(x) prod(x) ^ (1 / n) } ``` ```r zmiana = c(1.026392, 1.011959) geometric_mean(zmiana) ``` ``` ## [1] 1.01915 ``` --- ## Kwantyle - kwantyle rzędu 1/100, 2/100,..., 99/100 to inaczej percentyle - percentyle dzielną dane na sto grup - n-ty percentyl to taka wartość, poniżej której znajduje się n procent danych - kwantyl rzędu 1/2 to mediana (pięćdziesiąty percentyl) - kwantyle rzędu 1/4, 2/4, 3/4 są kwartylami - mediana dolnej połowy danych, czyli dwudziesty piąty percentyl zwana jest również pierwszym kwartylem (Q1) - mediana górnej połowy danych, czyli siedemdziesiąty piąty percentyl zwana jest również trzecim kwartylem (Q3) ```r quantile(gapminder2007$lifeExp) ``` ``` ## 0% 25% 50% 75% 100% ## 39.61300 57.16025 71.93550 76.41325 82.60300 ``` ```r quantile(gapminder2007$lifeExp, probs = c(0.05, 0.95)) ``` ``` ## 5% 95% ## 43.87365 80.74060 ``` --- ## Minimum i maksimum ```r min(gapminder2007$lifeExp) ``` ``` ## [1] 39.613 ``` ```r max(gapminder2007$lifeExp) ``` ``` ## [1] 82.603 ``` --- class: inverse, middle, center # Miary rozrzutu --- ## Zakres danych (rozstęp) - wrażliwy na dane odstające ```r max(gapminder2007$lifeExp) - min(gapminder2007$lifeExp) ``` ``` ## [1] 42.99 ``` --- ## Rozstęp kwartylowy - różnica pomiędzy trzecim i pierwszym kwartylem to rozstęp kwartylowy/odchylenie kwartylne/odchylenie ćwiartkowe (IQR. od ang. "interquartile range"), im większa szerokość rozstępu kwartylowego, tym większe zróżnicowanie cechy (IQR = Q3 - Q1) ```r IQR(gapminder2007$lifeExp) ``` ``` ## [1] 19.253 ``` --- ## Wariancja i ochylenie standardowe - miara tego, jak daleko dane rozchodzą się od średniej - jednostkami wariancji jest kwadrat oryginalnej jednostki - odchylenie standardowe jest pierwiastkiem z wariancji - jeżeli wartości są blisko średniej - SD będzie niewielkie - jeżeli wartości są daleko od średniej - SD będzie duże ```r var(gapminder2007$lifeExp) ``` ``` ## [1] 145.7578 ``` ```r sd(gapminder2007$lifeExp) ``` ``` ## [1] 12.07302 ``` --- ## Odchylenie standardowe <div style='text-align: center;'><img height='450' width='650' src='fig/sd.png'/> </div> --- class: inverse, middle, center # Opisywanie danych nominalnych --- ## Częstości ```r table(gapminder2007$continent) ``` ``` ## ## Africa Americas Asia Europe Oceania ## 52 25 33 30 2 ``` ```r table(gapminder2007$continent) / length(gapminder2007$continent) * 100 ``` ``` ## ## Africa Americas Asia Europe Oceania ## 36.619718 17.605634 23.239437 21.126761 1.408451 ``` --- class: inverse, middle, center # Statystyka a programowanie --- ## Brakujące wartości (NA) ```r NA + 21 ``` ``` ## [1] NA ``` ```r NA * 5 ``` ``` ## [1] NA ``` ```r mean(c(1, 2, NA)) ``` ``` ## [1] NA ``` --- ## Brakujące wartości (NA) Argument `na.rm`: ```r mean(c(1, 2, NA), na.rm = TRUE) ``` ``` ## [1] 1.5 ``` --- class: inverse, middle, center # Zadania --- ## Zadania Wczytaj dane `data/pomiary_pol.csv`: ```r pomiary_pol = read.csv("data/pomiary_pol.csv") ``` 1. Ile zmiennych i obserwacji znajduje się w zbiorze `pomiary_pol`? 2. Jaka jest skala pomiarowa kolejnych zmiennych w tym zbiorze? 3. Ile unikalnych prowincji znajduje się w tym zbiorze? Jakie mają one nazwy? A ile unikalnych województw znajduje się w tym zbiorze? 4. Jaka jest średnia wartość średniej temperatury rocznej (`annual_tavg`) w tym zbiorze? 5. Jaka jest mediana średniej rocznej sumy opadów (`annual_precip`)? Jaka jest różnica między wartością średnią a medianą rocznej sumy opadów? 6. Jaka jest najniższa i najwyższa zarejestrowana wartość średniej temperatury rocznej (`annual_tavg`) w tym zbiorze? 7. Powyżej jakiej wartości średniej temperatury rocznej (`annual_tavg`) znajduje się 25% obserwacji? 8. Jaki jest zakres danych dla temperatury minimalnej w kwietniu (`tmin_4`)? 9. Jakie jest odchylenie standardowe temperatury minimalnej we wrześniu (`tmin_9`)? 10. Wylicz średnią i odchylenie standardowe `tmin_9` dla kolejnych prowincji. --- ## Zadania (bonus) 1. Wczytaj dane `data/pomiary_pol.csv`. Stwórz obiekt `pomiary_pol2`, który nie zawiera kolumn z pomiarami dla kwietnia i września. 2. W którym województwie zanotowano drugą najwyższą i drugą najniższą średnią temperaturę roczną (`annual_tavg`)? 3. Stwórz obiekt `pomiary_wlkp`, który zawiera pomiary tylko dla województwa Wielkopolskiego. 4. Stwórz obiekt `pomiary_wyzyny`, który zawiera pomiary dla prowincji wyżynnych. 5. Do zbioru `pomiary_pol` dodaj nową kolumnę `tmax_diff`, zawierającą różnicę pomiędzy temperaturą maksymalną we wrześniu i w kwietniu. 6. Wylicz średnią i odchylenie standardowe `tmin_9` dla całego zbioru. 7. Stwórz obiekt `pomiary_pol_long`, składający się z trzech kolumn `pomiar_id`, `name`, `value`. W kolumnie `name` powinny znajdować się wartości `tmin_4` i `tmax_4`, a w kolumnie `value` odpowiadające im wartości. 8. Stwórz obiekt `pomiary_pol_wide`, zamieniający obiekt `pomiary_pol_long` na postać szeroką.