Štatistika dáva odpoveď na otázky, ako vyhodnotiť namerané alebo inak získané údaje, a ako interpretovať získané výsledky. Popisná štatistika je prvý dotyk s dátami, ktorá nám pomáha veľmi šikovne získať základné potrebné informácie o štatistickom súbore a taktiež predstavu o ich rozdelení, ktorá je potrebná na ďalšie konkrétnejšie skúmanie.
V nasledujúcich kapitolách rozoberiem základné charakteristiky popisnej štatistiky a ich možné grafické zobrazenia.
Štatistický súbor môžeme charakterizova aj pomocou číselných hodnôt, ktoré reprezentujú celý súbor. Tieto číselné hodnoty, tzv. štatistické charakteristiky, môžeme rozdeliť do dvoch základných skupín.
Pre použitie príkladov si zadefinujem list hodnôt s názvom vzorka.
vzorka<-c(1,1,2,2,2,2,3,4,4,4,5,5)
Charakterizujú ako a kde sú dáta umiestnené. Používajú sa:
Určuje najpočetnejšiu hodnotu súboru. Niektoré rozdelenia môžu mať viacero modusov (napr. dva modusy alebo žiadny). Modus je výhodné používať pri porovnávaní súborov.
table(vzorka)
## vzorka
## 1 2 3 4 5
## 2 4 1 3 2
Modus v programe RStudio vieme zadefinovať ako funkciu, ktorá pracuje so vzostupným usporiadaním hodnôt.
modus<-function(vzorka){
uniqx<-unique(vzorka)
uniqx[which.max(tabulate(match(vzorka,uniqx)))]
}
modus(vzorka)
## [1] 2
Delí štatistický súbor, ktorý je vzostupne usporiadaný na dve zhodné časti. Určuje prostrednú hodnotu v poradí. Niekedy lepšie charakterizuje súbor ako priemer, pretože nie je ovplyvnený extrémnymi hodnotami ale početnosťou dát. Analogickým delením súboru na viac častí získame kvantily a z nich štatisticky významné kvartily. Za významné sa považujú najmä Horný(Q3) a Dolný (Q1) kvartil, ktoré za pomoci Tukeyovho testu určia bližší obraz o rozdelení:
median(vzorka)
## [1] 2.5
HORNY<-quantile(vzorka,probs=0.75)
HORNY
## 75%
## 4
DOLNY<-quantile(vzorka,probs=0.25)
DOLNY
## 25%
## 2
IQR(vzorka)
## [1] 2
Medián taktiež vieme zapísať ako druhý kvartil.
quantile(vzorka,probs=0.5)
## 50%
## 2.5
Tukeyov test
Tukeyov test analyzuje outliery, čiže vybočujúce dáta a extremálne hodnoty. Tieto hodnoty sú buď zavádzajúce v skúmaní štatistického súboru alebo sú to hrubé chyby pri meraní. Keď ich nájdeme vieme posúdiť, či je pre naše skúmanie výhodné ich zo súboru odstrániť.
Najprv si porovnám či nachádzam nejaké vybočujúce hodnoty (k=1.5) alebo extremalne hodnoty (k=3).
Q1<-quantile(vzorka,probs=0.25)
Q3<-quantile(vzorka,probs=0.75)
IQR<-IQR(vzorka)
k1<-1.5
k3<-3
(vzorka<(Q1-k1*IQR))
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
(vzorka>(Q3+k1*IQR))
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Všetky hodnoty sú pri tomto súbore v poriadku. Na ukážku si preto vytvorím novú vzorku:
chyby<-c(1,150,150,154,158,156,155,5000)
Q1<-quantile(chyby,probs=0.25)
Q3<-quantile(chyby,probs=0.75)
IQR<-IQR(chyby)
k1<-1.5
k3<-3
(chyby<(Q1-k1*IQR))
## [1] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
(chyby>(Q3+k1*IQR))
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
Teraz už vidím, že mi to našlo nejaké hodnoty ale stále neviem na akom mieste v súbore sa nachádzajú a akú majú hodnotu.
which(chyby<(Q1-k1*IQR))
## [1] 1
which(chyby>(Q3+k1*IQR))
## [1] 8
Týmto príkazom som našla miesto na ktorom sa nachádzajú. Teraz ich môžem presne identifikovať ako hodnoty:
chyby[chyby<(Q1-k1*IQR)]
## [1] 1
chyby[chyby>(Q3+k1*IQR)]
## [1] 5000
Najmenšia a najväčšia hodnota v štatistickom súbore.
min(vzorka)
## [1] 1
max(vzorka)
## [1] 5
Súčet hodnôt v štatistickom súbore delený jeho rozsahom.
sum(vzorka)/length(vzorka)
## [1] 2.916667
Geometricky si môžeme predstaviť aritmetický priemer ako ťažisko štatistického súboru. Je citlivý na vybočujúce hodnoty a preto nie je vhodný na popísanie strednej hodnoty dát, ktoré sú vyšikmené.
mean(vzorka)
## [1] 2.916667
Príkaz summary
Príkaz summary je praktický ak robíme s veľkým obsahom dát alebo potrebujeme skrátiť čas. Tento príkaz nám vypíše hodnoty minima, prvého kvartilu, mediánu, aritmetického priemeru, tretieho kvartilu a maxima v jednej tabuľke.
summary(vzorka)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 2.000 2.500 2.917 4.000 5.000
Príkaz Summarize Na tento príkaz je potrebné použiť knižnicu FSA. Rozdiel medzi Summarize a summary je, že Summarize vypíše aj počet dát a ich smerodajnú odchýľku.
library(FSA)
## Warning: package 'FSA' was built under R version 4.1.3
## ## FSA v0.9.4. See citation('FSA') if used in publication.
## ## Run fishR() for related website and fishR('IFAR') for related book.
Summarize(vzorka)
## n mean sd min Q1 median Q3 max
## 12.000000 2.916667 1.443376 1.000000 2.000000 2.500000 4.000000 5.000000
Charakterizujú variačné rozpätie. Sledujeme odchýlky od charakteristiky polohy. Používajú sa:
Pre použitie nasledovných príkazov budeme potrebovať si nainštalovať tieto balíčky.
library(psych)
##
## Attaching package: 'psych'
## The following object is masked from 'package:FSA':
##
## headtail
library(moments)
## Warning: package 'moments' was built under R version 4.1.3
Jej veľkosť závisí od každej nameranej hodnoty štatistického súboru. Počítame ju ako aritmetický priemer absolútnych hodnôt všetkých odchýľok od ich aritmetického priemeru.
Umožňuje porovnať mieru variability niekoľkých súborov s odlišnou úrovňou hodnôt.
sd(vzorka)/mean(vzorka)*100
## [1] 49.48717
Taktiež sa používa názov variancia alebo disperzia. Počítame ho ako aritmetický priemer štvorcov odchýlok hodnôt od ich aritmetického priemeru.
var(vzorka)
## [1] 2.083333
Určuje variabilitu hodnôt štatistického súboru. Je to druhá odmocnina rozptylu.
sqrt(var(vzorka))
## [1] 1.443376
Ak nadobúda veľké hodnoty, je to kvôli extrémnym hodnotám medzi dátami.
sd(vzorka)
## [1] 1.443376
Popisuje koncentráciu prvkov súboru v blízkosti určitej hodnoty. Podľa koeficientu špicatosti určujeme rozdelenie:
kurtosis(vzorka)
## [1] 1.636562
Určuje nesúmernosť rozdelenia hodnôt a dáva predstavu o tvare rozdelenia. Podľa koeficientu šikmosti určujeme rozdelenie:
skewness(vzorka)
## [1] 0.1495496
Na vizualizáciu hodnôt používame rôzne typy grafických zobrazení. Každý graf má iné prednosti a preto je dobré vo väčšine použiť ich kombináciu. Základné typy grafov:
Základné grafické zobrazenie hodnôt je bodový/krivkový graf.
plot(vzorka,xlab="počet",ylab="hodnota")
plot(vzorka,type="l",xlab="počet",ylab="hodnota")
Krabicový graf ukazuje strednú hodnotu-medián (hrubá čierna čiara) aj odchýľky (outliery a extremálne hodnoty, nie sú súčasťou obdĺžnika, sú spojené čiarkovanou čiarou alebo znázornené bodkami) a preto je tiež výhodné ho použiť pri popisnej štatistike.
boxplot(vzorka)
boxplot(chyby)
pie(table(vzorka))
Avšak tieto typy grafov nám nepovedia o početnosti dát toľko ako histogram alebo stĺpcový graf. Stĺpcový graf je estetickejšie použiť pri menšom počte dát ako histogram. Ak však chcem použiť zobrazenie týchto grafov dáta musia byť uložené v tabuľke.
tabulka<-data.frame(vzorka)
Na histogram a stĺpcový graf použijeme balíček ggplot2.
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.1.3
##
## Attaching package: 'ggplot2'
## The following objects are masked from 'package:psych':
##
## %+%, alpha
ggplot(tabulka,mapping = aes(x=vzorka))+
labs(x="hodnota",y="pocet")+
geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
ggplot(tabulka,mapping = aes(x=vzorka))+
labs(x="hodnota",y="pocet")+
geom_bar()
V tejto časti prenesiem teoretický úvod do praktického príkladu. Spracúvať budem dáta o priemernej teplote v Bratislave a v Nitre.
| Mesiac | Bratislava | Nitra |
|---|---|---|
| 1 | -1.0 | -1.2 |
| 2 | 0.8 | 0.6 |
| 3 | 5.2 | 4.8 |
| 4 | 9.8 | 9.5 |
| 5 | 15.1 | 14.8 |
| 6 | 17.8 | 17.6 |
| 7 | 19.9 | 19.3 |
| 8 | 19.8 | 19.1 |
| 9 | 15.3 | 14.6 |
| 10 | 9.9 | 9.6 |
| 11 | 3.7 | 3.9 |
| 12 | 0.4 | 0.3 |
Bratislava<-c(-1.0,0.8,5.2,9.8,15.1,17.8,19.9,19.8,15.3,9.9,3.7,0.4)
Nitra<-c(-1.2,0.6,4.8,9.5,14.8,17.6,19.3,19.1,14.6,9.6,3.9,0.3)
tab<-data.frame(Bratislava,Nitra)
tab
## Bratislava Nitra
## 1 -1.0 -1.2
## 2 0.8 0.6
## 3 5.2 4.8
## 4 9.8 9.5
## 5 15.1 14.8
## 6 17.8 17.6
## 7 19.9 19.3
## 8 19.8 19.1
## 9 15.3 14.6
## 10 9.9 9.6
## 11 3.7 3.9
## 12 0.4 0.3
Za pomoci príkazu summary si vyhodnotím prvú časť popisnej štatistiky - charakteristiku polohy vzhľadom na každú oblasť.
summary(tab)
## Bratislava Nitra
## Min. :-1.000 Min. :-1.200
## 1st Qu.: 2.975 1st Qu.: 3.075
## Median : 9.850 Median : 9.550
## Mean : 9.725 Mean : 9.408
## 3rd Qu.:15.925 3rd Qu.:15.500
## Max. :19.900 Max. :19.300
Z tohto porovnania vidím, že dáta sa až tak nelíšia od seba navzájom a preto dáta vykreslím pomocou boxplotu.
boxplot(tab)
Aj tu sa mi potvrdilo, že dáta nie sú veľmi odlišné. Keďže tých dát nie
je až tak veľa stačí mi pozrieť sa príkazom table, či sa niektoré
teploty opakujú.
table(Nitra)
## Nitra
## -1.2 0.3 0.6 3.9 4.8 9.5 9.6 14.6 14.8 17.6 19.1 19.3
## 1 1 1 1 1 1 1 1 1 1 1 1
table(Bratislava)
## Bratislava
## -1 0.4 0.8 3.7 5.2 9.8 9.9 15.1 15.3 17.8 19.8 19.9
## 1 1 1 1 1 1 1 1 1 1 1 1
Zisťujem, že nie a preto vykreslovať histogram nemá v tomto prípade zmysel.
Pozriem sa teda na outliery a extremálne hodnoty.
Q1<-quantile(Bratislava,probs=0.25)
Q3<-quantile(Bratislava,probs=0.75)
IQR<-IQR(Bratislava)
k1<-1.5
k3<-3
(Bratislava<(Q1-k1*IQR))
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
(Bratislava>(Q3+k1*IQR))
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Q1<-quantile(Nitra,probs=0.25)
Q3<-quantile(Nitra,probs=0.75)
IQR<-IQR(Nitra)
k1<-1.5
k3<-3
(Nitra<(Q1-k1*IQR))
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
(Nitra>(Q3+k1*IQR))
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Vidím, že sa tu nenachádzajú žiadne outliery ani extremálne hodnoty, takže môžem usúdiť, že pri meraní neprišlo k žiadnym chybám, ktoré by ovplyvňovali následné štatistické testy.
kurtosis(Bratislava)
## [1] 1.501608
kurtosis(Nitra)
## [1] 1.507968
skewness(Bratislava)
## [1] -0.02716786
skewness(Nitra)
## [1] -0.03712064
Pri kontrole špicatosti mi oba štatistické súbory vyšli ako ploché rozdelenie (a<3) a pri skúmaní šikmosti ako zošikmené doľava (a<0), čo môžeme vidieť aj na grafoch.
plot(Bratislava,type="b",xlab = "mesiac",ylab = "teplota",main = "Bratislava")
plot(Nitra,type="b",xlab = "mesiac",ylab = "teplota",main = "Nitra")
Skontrolujem ešte charakteristiku rozptylu.
sd(Bratislava)/mean(Bratislava)
## [1] 0.8017104
sd(Bratislava)
## [1] 7.796634
var(Bratislava)
## [1] 60.7875
sd(Nitra)/mean(Nitra)
## [1] 0.8104912
sd(Nitra)
## [1] 7.625371
var(Nitra)
## [1] 58.14629
Všetky hodnoty sú si veľmi blízke aj pre Bratislavu aj pre Nitru.
Smerodajná odchýľka nie je veľká, keďže ako sme si už vyššie overili súbor nemá extrémne hodnoty. Rozptyl je taktiež malý keďže nie sú pozorované žiadne významne veľké odchýľky, teploty stúpajú prirodzene.
Tieto štatistické súbory sú dôsledné, presné a dá sa s nimi ďalej pekne pracovať. Nie je potrebné ich upravovať ani vynechávať niektoré hodnoty, pretože tam žiadne zavádzajúce hodnoty nie sú.
Masarykova univerzita - Statistické metody a zpracování dat https://is.muni.cz/el/1431/podzim2015/Z1069/um/50668892/Statistika_2_popisna_statistika.pdf
Popisná štatistika https://ooze.fberg.tuke.sk/wp-content/uploads/2017/07/Popisna_statistika-1.pdf
Univerzita Konštantína Filozofa v Nitre - Základy štatistiky pre pedagógov http://www.km.fpv.ukf.sk/upload_publikacie/20120130_90405__1.pdf