class: center, middle, inverse, title-slide .title[ # Statystyka i wizualizacja danych ] .subtitle[ ## Testy parametryczne i nieparametryczne dla wielu grup ] .author[ ### Jakub Nowosad
nowosad@amu.edu.pl
] --- class: inverse, middle, center # Testowanie istotność różnic średnich wielu prób --- ## Testowanie istotność różnic średnich wielu prób - Parametryczne - Jednoczynnikowa analiza wariancji (ANOVA) - Test Tukey'a (HSD) - Nieparametryczne - Test Kruskala-Wallisa - Test Friedmana --- class: inverse, middle, center # Testy parametryczne --- ## ANOVA - **Analiza wariancji** (ang. Analysis of Variance - ANOVA) służy do testowania istotności różnic między średnimi w wielu grupach - Stosowania zamiast **testu T-Studenta** w przypadku badania więcej niż dwóch grup - Metoda ta służy do oceny czy średnie wartości cechy `\(Y\)` różnią się istotnie pomiędzy grupami wyznaczonymi przez zmienną `\(X\)` - **ANOVA** nie pozwala na stwierdzenie między którymi grupami występują różnice. Aby to stwierdzić konieczne jest wykonanie porównań wielokrotnych (*"post-hoc"*) --- ## ANOVA - podstawowe założenia - Rozkład wyników zmiennej w każdej z analizowanych grup powinien być zbliżony do rozkładu normalnego - Wariancje w grupach powinny być do siebie podobne - Próby zostały losowo dobrane z populacji --- ## ANOVA - Hipoteza zerowa: `\(H_0 : \mu_1 = \mu_2 = ... = \mu_k\)` - Hipoteza alternatywna - co najmniej dwie średnie się różnią <!-- <iframe src="https://gallery.shinyapps.io/anova_shiny_rstudio/" ></iframe> --> --- ## ANOVA - przykład ```r pomiary_pol = read.csv("data/pomiary_pol.csv") summary(pomiary_pol) ``` ``` ## pomiar_id tmin_4 tmax_4 tmin_9 ## Min. : 1.0 Min. :-4.592 Min. : 1.824 Min. : 2.118 ## 1st Qu.: 375.8 1st Qu.: 3.116 1st Qu.:12.505 1st Qu.: 8.500 ## Median : 750.5 Median : 3.515 Median :13.242 Median : 8.886 ## Mean : 750.5 Mean : 3.342 Mean :12.973 Mean : 8.840 ## 3rd Qu.:1125.2 3rd Qu.: 3.803 3rd Qu.:13.620 3rd Qu.: 9.232 ## Max. :1500.0 Max. : 4.894 Max. :15.100 Max. :11.248 ## NA's :5 NA's :5 NA's :5 ## tmax_9 annual_tavg annual_precip prow_id ## Min. : 8.748 Min. :0.1083 Min. : 493.0 Min. :1.00 ## 1st Qu.:17.719 1st Qu.:7.1123 1st Qu.: 546.3 1st Qu.:4.00 ## Median :18.340 Median :7.6000 Median : 578.6 Median :4.00 ## Mean :18.220 Mean :7.5828 Mean : 602.2 Mean :4.03 ## 3rd Qu.:18.847 3rd Qu.:8.2000 3rd Qu.: 636.0 3rd Qu.:4.00 ## Max. :20.100 Max. :9.1997 Max. :1548.8 Max. :7.00 ## NA's :5 NA's :5 NA's :5 NA's :11 ## woj_id prowincja wojewodztwo ## Min. : 0.000 Length:1500 Length:1500 ## 1st Qu.: 4.000 Class :character Class :character ## Median : 8.000 Mode :character Mode :character ## Mean : 8.448 ## 3rd Qu.:13.000 ## Max. :16.000 ## NA's :10 ``` --- ## ANOVA - przykład ```r pomiary_anova = aov(annual_tavg ~ prowincja, data = pomiary_pol) pomiary_anova ``` ``` ## Call: ## aov(formula = annual_tavg ~ prowincja, data = pomiary_pol) ## ## Terms: ## prowincja Residuals ## Sum of Squares 144.4723 794.4199 ## Deg. of Freedom 6 1478 ## ## Residual standard error: 0.7331416 ## Estimated effects may be unbalanced ## 15 observations deleted due to missingness ``` --- ## ANOVA - przykład ```r summary(pomiary_anova) ``` ``` ## Df Sum Sq Mean Sq F value Pr(>F) ## prowincja 6 144.5 24.079 44.8 <2e-16 *** ## Residuals 1478 794.4 0.537 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## 15 observations deleted due to missingness ``` --- class: inverse, middle, center # Testy post-hoc --- ## Testy post-hoc - Jeżeli analiza wariancji nie wykaże istotnych różnic między badanymi grupami, nie przeprowadza się dalszych testów (http://xkcd.com/882/) - Z drugiej strony, jeżeli hipoteza zerowa zostanie odrzucona, wtedy należy wykonan badania różnić średnich pomiędzy kolejnymi grupami - Służą do tego testy post-hoc --- ## Test Tukey'a ```r posthoc = TukeyHSD(pomiary_anova, which = "prowincja", conf.level = 0.95) par(mar = c(4, 25, 4, 0.1)) # zmiana marginesów plot(posthoc, las = 1) ``` <img src="10_wiele_grup_files/figure-html/unnamed-chunk-5-1.png" style="display: block; margin: auto;" /> --- class: inverse, middle, center # Testy nieparametryczne --- ## Test Kruskala-Wallisa - Nieparametryczny odpowiednik jednoczynnikowej analizy wariancji (ANOVA) - Statystycznie istotny wynik tego testu informuje, że co najmniej jedna par grup jest różna od siebie - Testem post-hoc dla testu Kruskala-Wallisa jest test Dunna (`library(dunn.test); ?dunn.test`) --- ## Test Kruskala-Wallisa - przykład ```r library(gapminder) gapminder2007 = subset(gapminder, year == 2007) summary(gapminder2007) ``` <table> <thead> <tr> <th style="text-align:left;"> </th> <th style="text-align:left;"> country </th> <th style="text-align:left;"> continent </th> <th style="text-align:left;"> year </th> <th style="text-align:left;"> lifeExp </th> <th style="text-align:left;"> pop </th> <th style="text-align:left;"> gdpPercap </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> </td> <td style="text-align:left;"> Afghanistan: 1 </td> <td style="text-align:left;"> Africa :52 </td> <td style="text-align:left;"> Min. :2007 </td> <td style="text-align:left;"> Min. :39.61 </td> <td style="text-align:left;"> Min. :1.996e+05 </td> <td style="text-align:left;"> Min. : 277.6 </td> </tr> <tr> <td style="text-align:left;"> </td> <td style="text-align:left;"> Albania : 1 </td> <td style="text-align:left;"> Americas:25 </td> <td style="text-align:left;"> 1st Qu.:2007 </td> <td style="text-align:left;"> 1st Qu.:57.16 </td> <td style="text-align:left;"> 1st Qu.:4.508e+06 </td> <td style="text-align:left;"> 1st Qu.: 1624.8 </td> </tr> <tr> <td style="text-align:left;"> </td> <td style="text-align:left;"> Algeria : 1 </td> <td style="text-align:left;"> Asia :33 </td> <td style="text-align:left;"> Median :2007 </td> <td style="text-align:left;"> Median :71.94 </td> <td style="text-align:left;"> Median :1.052e+07 </td> <td style="text-align:left;"> Median : 6124.4 </td> </tr> <tr> <td style="text-align:left;"> </td> <td style="text-align:left;"> Angola : 1 </td> <td style="text-align:left;"> Europe :30 </td> <td style="text-align:left;"> Mean :2007 </td> <td style="text-align:left;"> Mean :67.01 </td> <td style="text-align:left;"> Mean :4.402e+07 </td> <td style="text-align:left;"> Mean :11680.1 </td> </tr> <tr> <td style="text-align:left;"> </td> <td style="text-align:left;"> Argentina : 1 </td> <td style="text-align:left;"> Oceania : 2 </td> <td style="text-align:left;"> 3rd Qu.:2007 </td> <td style="text-align:left;"> 3rd Qu.:76.41 </td> <td style="text-align:left;"> 3rd Qu.:3.121e+07 </td> <td style="text-align:left;"> 3rd Qu.:18008.8 </td> </tr> <tr> <td style="text-align:left;"> </td> <td style="text-align:left;"> Australia : 1 </td> <td style="text-align:left;"> NA </td> <td style="text-align:left;"> Max. :2007 </td> <td style="text-align:left;"> Max. :82.60 </td> <td style="text-align:left;"> Max. :1.319e+09 </td> <td style="text-align:left;"> Max. :49357.2 </td> </tr> <tr> <td style="text-align:left;"> </td> <td style="text-align:left;"> (Other) :136 </td> <td style="text-align:left;"> NA </td> <td style="text-align:left;"> NA </td> <td style="text-align:left;"> NA </td> <td style="text-align:left;"> NA </td> <td style="text-align:left;"> NA </td> </tr> </tbody> </table> --- ## Test Kruskala-Wallisa - przykład - Czy oczekiwana dalsza długość życia różni się pomiędzy kontynentami? ```r kruskal.test(lifeExp ~ continent, data = gapminder2007) ``` ``` ## ## Kruskal-Wallis rank sum test ## ## data: lifeExp by continent ## Kruskal-Wallis chi-squared = 88.095, df = 4, p-value < 2.2e-16 ``` --- ## Test Kruskala-Wallisa - przykład ```r library(ggplot2) ggplot(gapminder2007, aes(continent, lifeExp)) + geom_boxplot() ``` <img src="10_wiele_grup_files/figure-html/unnamed-chunk-9-1.png" style="display: block; margin: auto;" /> --- ## Test Friedmana - Test wykonywany dla pomiarów powtarzanych (liczba powtórzeń większa od dwóch) --- ## Test Friedmana - przykład ```r summary(gapminder) ``` <table> <thead> <tr> <th style="text-align:left;"> </th> <th style="text-align:left;"> country </th> <th style="text-align:left;"> continent </th> <th style="text-align:left;"> year </th> <th style="text-align:left;"> lifeExp </th> <th style="text-align:left;"> pop </th> <th style="text-align:left;"> gdpPercap </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> </td> <td style="text-align:left;"> Afghanistan: 12 </td> <td style="text-align:left;"> Africa :624 </td> <td style="text-align:left;"> Min. :1952 </td> <td style="text-align:left;"> Min. :23.60 </td> <td style="text-align:left;"> Min. :6.001e+04 </td> <td style="text-align:left;"> Min. : 241.2 </td> </tr> <tr> <td style="text-align:left;"> </td> <td style="text-align:left;"> Albania : 12 </td> <td style="text-align:left;"> Americas:300 </td> <td style="text-align:left;"> 1st Qu.:1966 </td> <td style="text-align:left;"> 1st Qu.:48.20 </td> <td style="text-align:left;"> 1st Qu.:2.794e+06 </td> <td style="text-align:left;"> 1st Qu.: 1202.1 </td> </tr> <tr> <td style="text-align:left;"> </td> <td style="text-align:left;"> Algeria : 12 </td> <td style="text-align:left;"> Asia :396 </td> <td style="text-align:left;"> Median :1980 </td> <td style="text-align:left;"> Median :60.71 </td> <td style="text-align:left;"> Median :7.024e+06 </td> <td style="text-align:left;"> Median : 3531.8 </td> </tr> <tr> <td style="text-align:left;"> </td> <td style="text-align:left;"> Angola : 12 </td> <td style="text-align:left;"> Europe :360 </td> <td style="text-align:left;"> Mean :1980 </td> <td style="text-align:left;"> Mean :59.47 </td> <td style="text-align:left;"> Mean :2.960e+07 </td> <td style="text-align:left;"> Mean : 7215.3 </td> </tr> <tr> <td style="text-align:left;"> </td> <td style="text-align:left;"> Argentina : 12 </td> <td style="text-align:left;"> Oceania : 24 </td> <td style="text-align:left;"> 3rd Qu.:1993 </td> <td style="text-align:left;"> 3rd Qu.:70.85 </td> <td style="text-align:left;"> 3rd Qu.:1.959e+07 </td> <td style="text-align:left;"> 3rd Qu.: 9325.5 </td> </tr> <tr> <td style="text-align:left;"> </td> <td style="text-align:left;"> Australia : 12 </td> <td style="text-align:left;"> NA </td> <td style="text-align:left;"> Max. :2007 </td> <td style="text-align:left;"> Max. :82.60 </td> <td style="text-align:left;"> Max. :1.319e+09 </td> <td style="text-align:left;"> Max. :113523.1 </td> </tr> <tr> <td style="text-align:left;"> </td> <td style="text-align:left;"> (Other) :1632 </td> <td style="text-align:left;"> NA </td> <td style="text-align:left;"> NA </td> <td style="text-align:left;"> NA </td> <td style="text-align:left;"> NA </td> <td style="text-align:left;"> NA </td> </tr> </tbody> </table> --- ## Test Friedmana - przykład - Czy oczekiwana dalsza długość życia różni się pomiędzy pomiędzy kolejnymi pomiarami (kolejnymi latami)? ```r friedman.test(lifeExp ~ year | country, data = gapminder) ``` ``` ## ## Friedman rank sum test ## ## data: lifeExp and year and country ## Friedman chi-squared = 1326.5, df = 11, p-value < 2.2e-16 ``` --- ## Test Friedmana - przykład ```r ggplot(gapminder, aes(year, lifeExp, group = country)) + geom_point(color = "red") + geom_line() ``` <img src="10_wiele_grup_files/figure-html/unnamed-chunk-13-1.png" style="display: block; margin: auto;" /> --- class: inverse, middle, center # Zadania --- ## Zadania 1. Wczytaj dane `data/pomiary_pol.csv`. Czy pomiędzy województwami lubelskim, mazowieckim, podkarpackim, warmińsko-mazurskim, oraz wielkopolskim istnieją różnice w średniej temperaturze rocznej? Stwórz wizualizację, a następnie wykonaj test statystyczny. 2. Pomiędzy którymi województwami te różnice występują? Jak duże one są? 3. Czy pomiędzy województwami świetokrzyskim, śląskim, opolskim i łódzkim istnieją różnice w sumie rocznej opadu? Stwórz wizualizację, a następnie wykonaj test statystyczny. 4. Czy pomiędzy rokiem 1982 a 1997 zaszła istotna zmiana w oczekiwanej długości życia w Afryce? Stwórz wizualizację, a następnie wykonaj test statystyczny. 5. Czy pomiędzy rokiem 1982 a 1997 zaszła istotna zmiana w PKB na osobę w Eurazji? Stwórz wizualizację, a następnie wykonaj test statystyczny.