library(gapminder)
library(dplyr)
5 Statystyki opisowe
Statystyki opisowe wykorzystuje się do przedstawienia ogólnej charakterystyki danych.
Statystyki opisowe dzielimy na:
Miary położenia - określają przeciętny poziom oraz rozmieszczenie wartości zmiennej:
- Miary przeciętne - np. średnia arytemtyczna - charakteryzują średni lub typowy poziom wartości zmiennej; mówią zatem o przeciętnym poziomie rozważanej zmiennej;
- Wartość modalna - wartość najczęściej występująca w zbiorze danych;
- Kwantyle - dzielą zbiorowość na określone części, np. 4, 10, 100 części.
Miary rozrzutu - określają granice zmienności danej zmiennej:
- rozstęp;
- rozstęp kwartylowy;
- odchylenie standardowe.
Miary asymetrii i koncentracji.
- skośność;
- kurtoza.
data('gapminder', package ='gapminder')
<- filter(gapminder, year==2007) dane2007
5.1 Podstawowe statystyki
Zestaw podstawowych statystyk opisowych obliczany jest za pomocą funkcji summary()
. Funkcja ta oblicza wartość minimalną, wartość maksymalną, pierwszy i trzeci kwartyl, medianę oraz średnią.
summary(dane2007)
country continent year lifeExp
Afghanistan: 1 Africa :52 Min. :2007 Min. :39.61
Albania : 1 Americas:25 1st Qu.:2007 1st Qu.:57.16
Algeria : 1 Asia :33 Median :2007 Median :71.94
Angola : 1 Europe :30 Mean :2007 Mean :67.01
Argentina : 1 Oceania : 2 3rd Qu.:2007 3rd Qu.:76.41
Australia : 1 Max. :2007 Max. :82.60
(Other) :136
pop gdpPercap
Min. :1.996e+05 Min. : 277.6
1st Qu.:4.508e+06 1st Qu.: 1624.8
Median :1.052e+07 Median : 6124.4
Mean :4.402e+07 Mean :11680.1
3rd Qu.:3.121e+07 3rd Qu.:18008.8
Max. :1.319e+09 Max. :49357.2
5.2 Statystyki opisowe: Miary położenia
5.2.1 Średnia arytmetyczna
- Obliczana jest jako iloraz sumy liczb i ilości tych liczb.
- Jest najczęściej używaną miarą charakteryzującą rozkład cechy
- Wady: czuła na wartości odstające
<- mean(dane2007$lifeExp)
srednia_lifeExp srednia_lifeExp
[1] 67.00742
Obliczyć średnią wartość dla PKP (gdpPercap) w 2007 roku.
5.2.2 Średnia ważona
<- weighted.mean(dane2007$lifeExp, dane2007$pop) srednia_w_lifeExp
5.2.3 Średnia harmoniczna
= function(x){
harmonic_mean 1 / mean(1 / x)
}
= c(6, 3.2) #km/h
rzeka harmonic_mean(rzeka)
[1] 4.173913
5.2.4 Średnia geometryczna
= function(x){
geometric_mean = length(x)
n prod(x) ^ (1 / n)
}
<- c(1.026392, 1.011959)
zmiana geometric_mean(zmiana)
[1] 1.01915
5.2.5 Kwantyle
Kwantyle to wartości cechy, które dzielą analizowany zbiór danych na określone części pod względem liczby jednostek. Części te pozostają w stosunku do siebie w określonych proporcjach:
- Kwartyle - podział na 4 części:
- Kwartyl pierwszy (Q1)
- Mediana - kwartyl drugi
- Kwartyl trzeci (Q3)
- Decyle - podzial na 10 części
- Percentyle - podział na 100 częsci
Funkcja quantile()
oblicza dowolną wartość kwantyli. Argument probs pozwala na zdefyniowanie dowolnych wartości, które mają zostać wyliczone. Argument ten przyjmuje wartości z przedziału od 0 do 1.
Kwartyle
Funkcja quantile()
domyślnie zwraca wartośći kwartyli.
<- quantile(dane2007$lifeExp)
kwartyle kwartyle
0% 25% 50% 75% 100%
39.61300 57.16025 71.93550 76.41325 82.60300
Kwartyle są także obliczane przez funkcję summary()
, która dodatkowo zwraca także wartości minimalną, maksymalną oraz średnią.
Decyle
W poniższym przykładzie seq(0,1,0.1) zwraca sekwencję wartości od 0 do 1 z krokiem co 0.1. Odpowiada to podziałowi danych na 10 równych części.
<- quantile(dane2007$lifeExp, probs = seq(0, 1, 0.1))
decyle decyle
0% 10% 20% 30% 40% 50% 60% 70% 80% 90%
39.6130 48.1734 54.1814 59.8127 67.0006 71.9355 73.2048 75.4719 78.2668 79.8223
100%
82.6030
Percentyle
W poniższym przykładzie zbiór zostanie podzielony na 100 równych części.
<- quantile(dane2007$lifeExp, probs = seq(0, 1, 0.01))
percentyle head(percentyle, 10)
0% 1% 2% 3% 4% 5% 6% 7%
39.61300 42.20582 42.53488 42.62397 43.21484 43.87365 45.17202 46.16868
8% 9%
46.40872 46.73593
Dowolne wartości kwantyli
W poniższym przykładzie zostanie wyliczony 5 oraz 95 percentyl.
<- quantile(dane2007$lifeExp, probs = c(0.05, 0.95))
q q
5% 95%
43.87365 80.74060
Obliczyć pierwszy, trzeci kwartyl oraz decyle dla gdpPercap.
Mediana
Mediana to wartość, która dzieli zbiór danych na 2 równe części. Mediana obliczana jest przez funkcję median()
.
<- median(dane2007$lifeExp)
median_lifeExp median_lifeExp
[1] 71.9355
Obliczyć medianę dla gdpPercap.
Mediana a średnia arytmetyczna
- dla rozkładu symetrycznego mediana oraz średnia będą równe.
- mediana jest lepszą miarą w przypadku rozkładów skośnych.
- średnia jest bardziej czuła na wartości odstające.
- średnia jest bardziej przydatna dla małych zbiorów danych.
Podsumowanie: Warto podawać obie wartości.
5.2.6 Wartość modalna
- wartość cechy, która w zbiorze danych występuje najczęściej. W R nie ma wbudowanej funkcji do obliczania tej statystyki.
5.3 Statystyki opisowe: Miary rozrzutu
5.3.1 Minimum i maksimum
<- min(dane2007$lifeExp)
min_lifeExp min_lifeExp
[1] 39.613
<- max(dane2007$lifeExp)
max_lifeExp max_lifeExp
[1] 82.603
range(dane2007$lifeExp)
[1] 39.613 82.603
5.3.2 Rozstęp
- najprostsza miara zmienności
- różnica między wartości maksymalną oraz wartością minimalną
- wrażliwy na wartości odstające
<- max(dane2007$lifeExp) - min(dane2007$lifeExp) range_lifeExp
Uwaga! W R funkcja range()
zwraca wektor składający się z dwóch wartości - minimalnej oraz maksymalnej, a nie rostęp (różnicę między tymi wartościami).
Obliczyć rozstęp dla gdpPercap
5.3.3 Rozstęp kwartylowy
- różnica między kwartylem trzecim i kwartylem pierwszym
<- IQR(dane2007$lifeExp) IQR_lifeExp
Obliczyć rozstęp kwartylowy dla gdpPercap.
5.3.4 Wariancja
- wariancja oraz odchylenie standardowe mierzą jak daleko dane rozchodzą się od średniej.
<- var(dane2007$lifeExp) var_lifeExp
5.3.5 Odchylenie standardowe
obliczane jako pierwiastek z wariancji
obok średniej jest jednym z najczęściej stosowanych parametrów statystycznych:
- jest obliczane ze wszystkich obserwacji w zbiorze danych
- im zbiór danych jest bardziej zróżnicowany tym większe odchylenie standardowe.
małe odchylenie standardowe - wartości są blisko średniej
duże odchylenie standardowe - wartości są daleko od średniej.
<- sd(dane2007$lifeExp)
sd_lifeExp sd_lifeExp
[1] 12.07302
Jakie jest odchylenie standardowe dla gdpPercap?
5.4 Opisywanie danych nominalnych
5.4.1 Częstość
table(dane2007$continent)
Africa Americas Asia Europe Oceania
52 25 33 30 2
table(dane2007$continent) / length(dane2007$continent) * 100
Africa Americas Asia Europe Oceania
36.619718 17.605634 23.239437 21.126761 1.408451
5.5 Statystykiw grupach
Pakiet dplyr
pozwala także na obliczenie statystyk według grup, np. średnia długość trwania życia na poszczególnych kontynentach.
- Średnia oczekiwana długość życia w 2007 roku według kontynentów.
Obliczenie statystyk w grupach wymaga najpierw pogrupowania danych (funkcja group_by()
).
<- filter(gapminder, year == 2007)
gapminder2007 <- group_by(gapminder2007, continent)
by_continent <- summarize(by_continent,
smr_by_continent mean_le = mean(lifeExp))
smr_by_continent
# A tibble: 5 × 2
continent mean_le
<fct> <dbl>
1 Africa 54.8
2 Americas 73.6
3 Asia 70.7
4 Europe 77.6
5 Oceania 80.7
Powyższy kod można zapisać także z wykorzystaniem operatora łączącego %>%
<- gapminder %>%
mean_by_continent filter(year == 2007) %>%
group_by(continent) %>%
summarize(mean_le = mean(lifeExp))
mean_by_continent
# A tibble: 5 × 2
continent mean_le
<fct> <dbl>
1 Africa 54.8
2 Americas 73.6
3 Asia 70.7
4 Europe 77.6
5 Oceania 80.7
Oblicz średnią oczekiwaną długość trwania życia w poszczególnych latach.
- Średnia oczekiwana długość życia w podziale na kontynenty oraz lata.
<- group_by(gapminder, continent, year)
by_continent_year <- summarize(by_continent_year,
smr_by_continent_year mean_le = mean(lifeExp))
`summarise()` has grouped output by 'continent'. You can override using the
`.groups` argument.
smr_by_continent_year
# A tibble: 60 × 3
# Groups: continent [5]
continent year mean_le
<fct> <int> <dbl>
1 Africa 1952 39.1
2 Africa 1957 41.3
3 Africa 1962 43.3
4 Africa 1967 45.3
5 Africa 1972 47.5
6 Africa 1977 49.6
7 Africa 1982 51.6
8 Africa 1987 53.3
9 Africa 1992 53.6
10 Africa 1997 53.6
# ℹ 50 more rows
Oblicz średnią wartość gdpPercap w 2007 roku w podziale na kontynenty.
Oblicz średnią wartość gdpPercap w podziale na poszczególne kontynenty oraz lata. Przedstaw wynik w “układzie szerokim” - każdy wiersz to określony kontynent, a każda kolumna to określony rok.
5.6 Braki danych
W R braki danych zazwyczaj kodowane są jako NA - Not Available.
NA + 1
[1] NA
2*NA
[1] NA
= c(1,2,NA)
x mean(x)
[1] NA
mean(x, na.rm = TRUE)
[1] 1.5