class: center, middle, inverse, title-slide .title[ # Statystyka i wizualizacja danych ] .subtitle[ ## Analiza korelacji ] .author[ ### Jakub Nowosad
nowosad@amu.edu.pl
] --- class: inverse, middle, center # Korelacja liniowa --- ## Korelacja liniowa - Korelacja jest miarą powiązania pomiędzy dwiema lub większą liczbą zmiennych - Współczynniki korelacji przyjmują wartości z przedziału od -1,00 do +1,00: - Wartość -1,00 - reprezentuje doskonałą korelację ujemną - Wartość +1,00 - reprezentuje doskonałą korelacją dodatnią - Wartość 0.00 - brak korelacji <!-- Korelacja liniowa <iframe src="http://glimmer.rstudio.com/wisconsindpi/correlation/" ></iframe> --> --- ## Korelacja liniowa <div style='text-align: center;'><img height='450' width='650' src='fig/Correx.png'/> </div> --- ## Korelacja liniowa - http://guessthecorrelation.com/ - https://gallery.shinyapps.io/correlation_game/ --- ## Korelacja liniowa W przypadku zaobserwowania korelacji dwóch zmiennych (A i B) możliwe są sytuacje: - A wpływa na (powoduje) B - B wpływa na A - C wpływa na A i B - A wpływa na B i B wpływa na A - A wpływa na C; C wpływa na B - nie istnieje relacja przyczynowo-skutkowa pomiędzy zmienną A i B (korelacja jest przypadkowa) --- ## Korelacja, a przyczynowość? http://www.tylervigen.com/spurious-correlations <img src="fig/korelacja.jpeg" width="70%" style="display: block; margin: auto;" /> --- class: inverse, middle, center # Testy korelacji --- ## Testy korelacji - **Test korelacji liniowej Pearsona** - bada zależność dwóch zmiennych losowych o rozkładzie normalnym - **Test korelacji rang Spearmana** - stosowany w przypadku naruszenia założenia normalności (np. występowanie obserwacji odstających) --- ## Korelacja liniowa ```r library(gapminder) gapminder2007 = subset(gapminder, year == 2007) gapminder2007_s = gapminder2007[c(4, 5, 6)] ``` **Czy pomiędzy zmiennymi w zbiorze `gapminder2007_s` można dostrzec zależności liniowe?** --- ## Testy korelacji ```r library(ggplot2) ggplot(gapminder2007_s, aes(lifeExp, gdpPercap)) + geom_point() ``` <img src="12_korelacja_files/figure-html/unnamed-chunk-3-1.png" style="display: block; margin: auto;" /> --- ## Testy korelacji Która metoda powinna tutaj zostać użyta? Dlaczego? ```r cor(gapminder2007_s$lifeExp, gapminder2007_s$gdpPercap, use = "complete.obs", method = "pearson") ``` ``` ## [1] 0.6786624 ``` ```r cor(gapminder2007_s$lifeExp, gapminder2007_s$gdpPercap, use = "complete.obs", method = "spearman") ``` ``` ## [1] 0.8565899 ``` --- ## Testy korelacji ```r cor.test(gapminder2007_s$lifeExp, gapminder2007_s$gdpPercap, use = "complete.obs", method = "pearson") ``` ``` ## ## Pearson's product-moment correlation ## ## data: gapminder2007_s$lifeExp and gapminder2007_s$gdpPercap ## t = 10.933, df = 140, p-value < 2.2e-16 ## alternative hypothesis: true correlation is not equal to 0 ## 95 percent confidence interval: ## 0.5786217 0.7585843 ## sample estimates: ## cor ## 0.6786624 ``` --- ## Testy korelacji ```r cor.test(gapminder2007_s$lifeExp, gapminder2007_s$gdpPercap, use = "complete.obs", method = "spearman") ``` ``` ## ## Spearman's rank correlation rho ## ## data: gapminder2007_s$lifeExp and gapminder2007_s$gdpPercap ## S = 68434, p-value < 2.2e-16 ## alternative hypothesis: true rho is not equal to 0 ## sample estimates: ## rho ## 0.8565899 ``` --- ## Testy korelacji ```r cor_spearman = cor(gapminder2007_s, use = "complete.obs", method = "spearman") ``` <table> <thead> <tr> <th style="text-align:left;"> </th> <th style="text-align:right;"> lifeExp </th> <th style="text-align:right;"> pop </th> <th style="text-align:right;"> gdpPercap </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> lifeExp </td> <td style="text-align:right;"> 1.000 </td> <td style="text-align:right;"> 0.003 </td> <td style="text-align:right;"> 0.857 </td> </tr> <tr> <td style="text-align:left;"> pop </td> <td style="text-align:right;"> 0.003 </td> <td style="text-align:right;"> 1.000 </td> <td style="text-align:right;"> -0.065 </td> </tr> <tr> <td style="text-align:left;"> gdpPercap </td> <td style="text-align:right;"> 0.857 </td> <td style="text-align:right;"> -0.065 </td> <td style="text-align:right;"> 1.000 </td> </tr> </tbody> </table> --- ## Testy korelacji ```r library(corrplot) corrplot(cor_spearman) ``` <img src="12_korelacja_files/figure-html/unnamed-chunk-10-1.png" style="display: block; margin: auto;" /> --- ## Testy korelacji ```r set.seed(25) x = rnorm(1000) y = x + rnorm(1000) df = data.frame(x, y) ``` --- ## Testy korelacji ```r library(ggplot2) ggplot(df, aes(x, y)) + geom_point() + stat_smooth(method = lm) ``` ``` ## `geom_smooth()` using formula = 'y ~ x' ``` <img src="12_korelacja_files/figure-html/unnamed-chunk-12-1.png" style="display: block; margin: auto;" /> --- ## Testy korelacji Zbadanie normalności rozkładu ```r shapiro.test(x) ``` ``` ## ## Shapiro-Wilk normality test ## ## data: x ## W = 0.99811, p-value = 0.3298 ``` ```r shapiro.test(y) ``` ``` ## ## Shapiro-Wilk normality test ## ## data: y ## W = 0.99854, p-value = 0.5832 ``` --- ## Testy korelacji ```r cor.test(x, y, method = "pearson") ``` ``` ## ## Pearson's product-moment correlation ## ## data: x and y ## t = 29.263, df = 998, p-value < 2.2e-16 ## alternative hypothesis: true correlation is not equal to 0 ## 95 percent confidence interval: ## 0.6447237 0.7115721 ## sample estimates: ## cor ## 0.679556 ``` --- ## Testy korelacji ```r cor.test(x, y, method = "spearman") ``` ``` ## ## Spearman's rank correlation rho ## ## data: x and y ## S = 56065572, p-value < 2.2e-16 ## alternative hypothesis: true rho is not equal to 0 ## sample estimates: ## rho ## 0.6636062 ``` --- ## Testy korelacji - alternatywa - Test korelacji Pearsona dla zmiennych poddanych procesowi winsoryzacji ```r library(PairedData) winsor.cor.test(x, y, tr = 0.1) ``` ``` ## ## winsorized correlation, trim=0.1 ## ## data: x and y ## t = 27.867, df = 798, p-value < 2.2e-16 ## alternative hypothesis: true (winsorized) correlation is not equal to 0 ## sample estimates: ## cor ## 0.6615164 ``` <!-- http://smarterpoland.pl/index.php/2014/02/korelacje/ --> --- class: middle, center <img src="fig/correlation.png" width="100%" /> --- class: inverse, middle, center # Zadania --- ## Zadania 1. Używając danych z pakietu **gapminder** dla roku 1987 zwizualizuj relację pomiędzy populacją a oczekiwaną długością życia. Wylicz korelację i wykonaj odpowiedni test. Co oznacza jego wynik? 2. Używając danych z pakietu **gapminder** dla roku 1987 zwizualizuj relację pomiędzy populacją a PKB na osobę. Wylicz korelację i wykonaj odpowiedni test. Co oznacza jego wynik? 3. Wczytaj dane `data/pomiary_pol.csv`. Sprawdź czy istnieje korelacja pomiędzy temperaturą minimalną a maksymalną we wrześniu. Co może oznaczać ten wynik? 4. Sprawdź czy istnieje korelacja pomiędzy temperaturą minimalną w kwietniu a temperaturą minimalną we wrześniu. Co może oznaczać ten wynik?