6  Popisná statistika

Popisná statistika má za cíle souhrnně popsat soubor (spíše než použít data k získání informací o populaci, o které se předpokládá, že vzorek dat reprezentuje).

Cíle cvičení
  • Provést import datové sady
  • Být schopen popsat číselné proměnné v datech popsat s pomocí uvedených statistik

6.1 Import dat

V hydrologii pracujeme s datovými sadami, které mají rúznou podobu. Nejběžnějším výměnným formát jsou stále obecné *.xls/*.xlsx, *.txt, *.csv (comma separated values). S pomocí těchto formátů jsou často katalogizována data z automatických měření. Dále méně časté formáty *.json (javascript object notation), *.shp (shapefile), *.laz, *.nc (NetCDF file), *.parquet (Apache parqet). A jako poslední doménově specifické *.RData, nebo *.rds. Formátů je velké množství, nicméně je velmi obtížné narazit na některý, pro který neexistuje v R možnost importu ať už v základní konfiguraci nebo s pomocí externích balíčků.

V RStudio se nachází poměrně propracovaný průvodce importem dat, který naklikneme pod záložkou Environment > Import Dataset.

Kód
global_temperatures <- read.csv(file = "./data/JonesGlobalT.csv", 
                                row.names = 1)
head(x = global_temperatures, n = 5)
  YEAR    JAN    FEB    MAR    APR    MAY    JUN    JUL    AUG    SEP    OCT
1 1850 -0.702 -0.284 -0.732 -0.570 -0.325 -0.213 -0.128 -0.233 -0.444 -0.452
2 1851 -0.303 -0.362 -0.485 -0.445 -0.302 -0.189 -0.215 -0.153 -0.108 -0.063
3 1852 -0.308 -0.477 -0.505 -0.559 -0.209 -0.038 -0.016 -0.195 -0.125 -0.216
4 1853 -0.177 -0.330 -0.318 -0.352 -0.268 -0.179 -0.059 -0.148 -0.409 -0.359
5 1854 -0.360 -0.280 -0.284 -0.349 -0.230 -0.215 -0.228 -0.163 -0.115 -0.188
     NOV    DEC ANNUAL
1 -0.190 -0.268 -0.375
2 -0.030 -0.067 -0.223
3 -0.187  0.083 -0.224
4 -0.256 -0.444 -0.271
5 -0.369 -0.232 -0.246
Kód
global_temperature_yr <- aggregate(x = . ~ YEAR,
                                   FUN = mean,
                                   data = global_temperatures)
head(x = global_temperature_yr, n = 5)
1
Agregace dat do průměrů za roční období.
  YEAR    JAN    FEB    MAR    APR    MAY    JUN    JUL    AUG    SEP    OCT
1 1850 -0.702 -0.284 -0.732 -0.570 -0.325 -0.213 -0.128 -0.233 -0.444 -0.452
2 1851 -0.303 -0.362 -0.485 -0.445 -0.302 -0.189 -0.215 -0.153 -0.108 -0.063
3 1852 -0.308 -0.477 -0.505 -0.559 -0.209 -0.038 -0.016 -0.195 -0.125 -0.216
4 1853 -0.177 -0.330 -0.318 -0.352 -0.268 -0.179 -0.059 -0.148 -0.409 -0.359
5 1854 -0.360 -0.280 -0.284 -0.349 -0.230 -0.215 -0.228 -0.163 -0.115 -0.188
     NOV    DEC ANNUAL
1 -0.190 -0.268 -0.375
2 -0.030 -0.067 -0.223
3 -0.187  0.083 -0.224
4 -0.256 -0.444 -0.271
5 -0.369 -0.232 -0.246
Kód
par(mfrow = c(1, 2))
with(data = global_temperature_yr, expr = plot(YEAR, JAN, type = "l"))
with(data = global_temperature_yr, 
     expr = boxplot(ANNUAL, horizontal = TRUE))

Úloha
  1. Nahrajte data do prostředí s pomocí vhodně parametrizované read.___() funkce.
  2. Doplňte hydrologický rok.
  3. Proveďte agregaci dat průměrem pro jednotlivé měsíce.
  4. Vyneste do grafu pomocí funkce plot().

6.2 Statistický soubor

Je základní jednotkou popisné statistiky, skládá se z množiny všech objektů, které jsou nositely určitého znaku.

6.2.1 Základní soubor (populace)

Soubor všech jedinců, u nichž být zaznamenán výskyt sledovaného znaku.

6.2.2 Výběrový soubor (výběr)

Je soubor o konečném počtu \(n\) prvků základního souboru, u kterého je prováděno měření charakteristik.

Výběrový soubor vzniká realizací náhodného výběru.

Níže uvedené funkce jsou počítané s pomocí následujícího vektoru

Kód
set.seed(1)
x <- round(rnorm(50), 4)
x
##  [1] -0.6265  0.1836 -0.8356  1.5953  0.3295 -0.8205  0.4874  0.7383  0.5758
## [10] -0.3054  1.5118  0.3898 -0.6212 -2.2147  1.1249 -0.0449 -0.0162  0.9438
## [19]  0.8212  0.5939  0.9190  0.7821  0.0746 -1.9894  0.6198 -0.0561 -0.1558
## [28] -1.4708 -0.4782  0.4179  1.3587 -0.1028  0.3877 -0.0538 -1.3771 -0.4150
## [37] -0.3943 -0.0593  1.1000  0.7632 -0.1645 -0.2534  0.6970  0.5567 -0.6888
## [46] -0.7075  0.3646  0.7685 -0.1123  0.8811

6.3 Míry polohy

Pro obě extrémní polohy (\(\min\) a \(\max\)) jsou v R stejnojmenné funkce.

Název Funkce Vzorec
minimum/maximum min(x)/max(x)) \(\max(x) - \min(x)\)
výběrový kvantil quantile(x) -
aritmetický průměr mean(x) \(\dfrac{1}{n}\sum_{i=1}^{n}x_i\)
medián median(x) -
modus - -

6.3.1 Výběrový kvantil

Kód
t(sapply(X = 1:7, FUN = function(i) quantile(x, type = i)))
1
Využití anonymní funkce function(i) vektorizované pro rozsah hodnot 1:7 na pozici type ve funkci quantile()
          0%       25%    50%      75%   100%
[1,] -2.2147 -0.394300 0.0746 0.738300 1.5953
[2,] -2.2147 -0.394300 0.1291 0.738300 1.5953
[3,] -2.2147 -0.415000 0.0746 0.738300 1.5953
[4,] -2.2147 -0.404650 0.0746 0.717650 1.5953
[5,] -2.2147 -0.394300 0.1291 0.738300 1.5953
[6,] -2.2147 -0.399475 0.1291 0.744525 1.5953
[7,] -2.2147 -0.372075 0.1291 0.727975 1.5953

6.3.1.1 Medián

Aritmetický průměr hodnot na pozicích \(\frac{n}{2}\) a \(\frac{n}{2+1}\) v seřazeném souboru.

6.3.2 Modus

Za modus se označuje nejčastěji se vyskytující hodnota v souboru. Četnost výskytu hodnot na reálné ose se nahrazuje buďto hustotou (funkce density()) nebo je možné použít kombinaci funkcí cut() a table().

Kód
table(round(x = x, digits = 0))
table(cut(x, breaks = 10))
dens <- density(x = x)
max_dens <- which.max(dens$y)
plot(dens, main = "Jádrový odhad hustoty x")
segments(x0 = dens$x[max_dens], 
         y0 = 0, 
         x1 = dens$x[max_dens], 
         y1 = dens$y[max_dens], 
         lwd = 1.5)
1
Funkce table() provede součty speficikovaných hodnot. V tomto případě po zaokrouhlení na celá čísla.
2
Nyní s pomocí funkce cut() rozlišíme četnosti do 10 intervalů a následně spočteme počet hodnot v těchto intervalech.
3
Jádrový odhad hustoty. \[ \hat{f}(x)=\dfrac{1}{nh}\sum_{i=1}^{n}\mathsf{K}\left(\dfrac{x-x_i}{h}\right) \] kde \(\mathsf{K}\) je jádrová funkce, \(h\) je šířka pásma (zhlazovací funkce) a \(x_i\) jsou hodnoty.


-2 -1  0  1  2 
 2  8 22 16  2 

 (-2.22,-1.83]  (-1.83,-1.45]  (-1.45,-1.07] (-1.07,-0.691] (-0.691,-0.31] 
             2              1              1              3              6 
(-0.31,0.0713] (0.0713,0.452]  (0.452,0.833]   (0.833,1.21]     (1.21,1.6] 
            11              7             11              5              3 

6.3.3 Harmonický průměr

Aritmetický průměr převrácených hodnot.

\[ \bar{x_h} = \dfrac{n}{\sum\limits_{i=1}^{n}\frac{1}{x_i}} \]

6.3.4 Průměr stupně \(\alpha\)

Označuje obecný vzorec průměru (zahrnující aritmetický, harmonický, geometrický apod.)

\[ \bar{x}_\alpha(x_1, x_2, \ldots, x_n) = \left(\dfrac{1}{n}\sum_{i=1}^{n}x_i^\alpha\right)^\frac{1}{\alpha} \]

Kód
min(x)
max(x)
max(x) - min(x)
range(x)
## [1] -2.2147
## [1] 1.5953
## [1] 3.81
## [1] -2.2147  1.5953
1
Statistiky minimum & maximum
2
Rozpětí
Úloha
  1. Napište funkci pro výpočet obecného vzorce průměru \(\alpha\) a srovnejte s výstupem funkce mean.

6.4 Míry variability

Výběrový rozptyl a směrodatnou odchylku spočteme v R pomocí funkcí var() (variance) a sd() standard deviation. Zatímco variační rozpětí popisuje rozpětí celého souboru, mezikvartilové rozpětí se omezuje na rozpětí poloviny hodnot, omezené \(Q3\) a \(Q1\) neboli \(q_{75}\) a \(q_{25}\).

Název Funkce Vzorec
rozptyl var(x) \(\sum\limits_{i=1}^{n}\dfrac{(x_i - \bar{x})^2}{n-1}\)
směrodatná odchylka sd(x) \(\dfrac{1}{n-1}\sum\limits_{i=1}^{n}\sqrt{(x_i - \bar{x})^2}\)
variační rozpětí range(x) \(\max(x) - \min(x)\)
mezikvartilové rozpětí IQR(x) \(\mathrm{Q}3 - \mathrm{Q}_1\)
variační koeficient mean(x)/sd(x) \(\dfrac{s_x}{\bar{x}}\)

6.4.1 Střední chyba aritmetického průměru

\[ s_x = \dfrac{s}{\sqrt{n}} \]

6.4.2 fivenum() & summary()

Pokud nás nezajímá pouze konkrétní statistika, jsou k dispozici funkce vracející více hodnot najednou.

Kód
fivenum(x)
[1] -2.2147 -0.3943  0.1291  0.7383  1.5953
Kód
summary(x)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
-2.2147 -0.3721  0.1291  0.1004  0.7280  1.5953 
Poznámka

Funkce summary() je tzv. S3 generic, to znamená, že její chování je definované v závislosti na objekt, na který je volána. Podívejte se na výstup methods(summary). Pokud volána funkci na numerický vektor, tak je vybrána metoda summary.numeric().

6.5 Rekapitulace

  1. Máte vektor hodnot: \(0.64\), \(0.98\), \(-0.49\), \(0.75\), \(-1.35\), \(1.65\), \(1.12\), \(-1.04\), \(1.05\), \(0.29\), \(-0.6\), \(-0.08\), \(1.45\), \(-1.87\), \(-0.07\), \(-0.02\), \(0.62\), \(0.01\), \(-0.26\). Nalezněte s pomocí R:
  1. průměr  
  2. \(q_{10\textrm{p}}\)  
  3. medián .  
  1. Doplňte funkci read.___() aby výsledek byl
  2. Z datové sady vyberte sloupce