4. Lýsandi tölfræði
Í þessum kafla munum við fjalla um algengar lýsistærðir sem notaðar eru
til að lýsa gögnum. Við munum skipta umfjölluninni upp eftir því hvort
verið sé að vinna með talnabreytur eða flokkabreytur. Fyrir
talnabreyturnar munum við kynnast aðferðunum min()
, max()
,
mean()
,median()
, var()
, sd()
, quantile()
, og
IQR()
. Þær eru teknar fyrir í hluta 4.1. Á
flokkbreytur notum við skipanirnar table()
og prop.table
en þær eru
teknar fyrir í hluta 4.2. Að lokum fjallar hluti
4.3 um aðrar gagnlegar skipanir. Þar munum við sjá
aðferðirnar round()
, summary()
og tapply()
.
4.1. Talnabreytur
4.1.1. Talnabreytur
Í þessum hluta munum við skoða lýsistærðir fyrir talnabreytur. Við
byrjum á að sjá hvernig við getum auðveldlega fundið hæsta og lægsta
gildið sem breytan tekur en snúum okkur svo að lýsistærðum sem lýsa
miðju og breytileika talnabreyta. Það er oft svo að það vantar mælingar
í breytunni okkar, þá kemur na.rm = T
stillingin að góðum notum en
hana má nota í nær öllum aðferðunum sem fjallað verður um í þessum
hluta.
4.1.1.1. max()
Athugið
Inntak: nafn á vigri/breytu
Úttak: hæsta gildi
Helstu stillingar: na.rm
Aðferðin max()
gefur hæsta gildið. Viljum við finna hæsta gildið af
3, 4, 7 og 8 gerum við það með
max(c(3,4,7,8))
## [1] 8
en viljum við finna hæsta gildi ákveðinnar breytu gerum við það með að mata aðferðina með nafni breytunnar.
max(puls$haed, na.rm=T)
## [1] 198
4.1.1.2. min()
Athugið
Inntak: nafn á vigri/breytu
Úttak: lægsta gildi
Helstu stillingar: na.rm
Aðferðin min()
gefur lægsta gildið. Viljum við finna lægsta gildið
af 3, 4, 7 og 8 gerum við það með
min(c(3,4,7,8), na.rm=T)
## [1] 3
en viljum við finna lægsta gildi ákveðinnar breytu gerum við það með að mata aðferðina með nafni breytunnar.
min(puls$haed, na.rm=T)
## [1] 150
4.1.2. Miðja
4.1.2.1. mean()
Athugið
Inntak: nafn á vigri/breytu
Úttak: meðaltal
Helstu stillingar: na.rm
Aðferðin mean()
reiknar meðaltal. Viljum við reikna meðaltal
talnanna 3, 4, 7 og 8 gerum við það með:
mean(c(3,4,7,8))
## [1] 5.5
Viljum við reikna meðaltal ákveðinnar breytu gerum við það með að mata aðferðina með nafni breytunnar.
mean(puls$haed, na.rm=T)
## [1] 173.2532
4.1.2.2. median()
Athugið
Inntak: nafn á vigri/breytu
Úttak: miðgildið
Helstu stillingar: na.rm
Aðferðin median()
reiknar miðgildi. Viljum við reikna miðgildi
talnanna 3, 4, 7 og 8 gerum við það með
median(c(3,4,7,8))
## [1] 5.5
en viljum við reikna miðgildi ákveðinnar breytu gerum við það með að mata aðferðina með nafni breytunnar:
median(puls$haed, na.rm=T)
## [1] 172
4.1.3. Breytileiki
4.1.3.1. var()
Athugið
Inntak: nafn á vigri/breytu
Úttak: dreifni
Helstu stillingar: na.rm
Aðferðin var()
reiknar dreifni. Viljum við reikna dreifni talnanna
3, 4, 7 og 8 gerum við það með
var(c(3,4,7,8))
en viljum við reikna dreifni ákveðinnar breytu gerum við það með að mata aðferðina með nafni breytunnar:
var(puls$haed, na.rm=T)
4.1.3.2. sd()
Athugið
Inntak: nafn á vigri/breytu
Úttak: staðalfrávik
Helstu stillingar: na.rm
Aðferðin sd()
reiknar staðalfrávik. Viljum við reikna staðalfrávik
talnanna 3, 4, 7 og 8 gerum við það með
sd(c(3,4,7,8))
## [1] 2.380476
en viljum við reikna staðalfrávik ákveðinnar breytu gerum við það með að mata aðferðina með nafni breytunnar:
sd(puls$haed, na.rm=T)
## [1] 9.774032
4.1.3.3. quantile()
Athugið
Inntak: nafn á vigri/breytu
Úttak: hlutfallsmörk
Helstu stillingar: na.rm, probs
Aðferðin quantile
reiknar út hlutfallsmörk. Sjálfgefna stilling
aðferðarinnar skilar okkur fjórðungamörkunum. Við mötum aðferðina með
nafninu á breytunni:
quantile(puls$haed, na.rm=T)
## 0% 25% 50% 75% 100%
## 150 166 172 181 198
Við getum notað probs
stillinguna til að reikna hvaða hlutfallsmörk
sem er.
4.1.4. Samspil tveggja talnabreyta
4.1.4.1. cor()
Athugið
Inntak: nafn á tveimur vigrum/breytum
Úttak: fylgni
Helstu stillingar: use
Reikna má fylgni milli tveggja breyta í R með cor()
aðferðinni. Við
þurfum að mata aðferðina með heitunum á breytunum sem við ætlum að
reikna fylgnina á milli. Viljum við reikna fylgnina á milli breytanna
haed
og thyngd
notum við skipunina:
cor(puls$haed,puls$thyngd,use="complete.obs")
## [1] 0.6765718
Stillinguna use="complete.obs"
notum við vanti einhverjar mælingar.
Munið að við reiknum aðeins út fylgnistuðul sé línulegt samband á milli
breytanna!
4.2. Flokkabreytur
Í þessum hluta reiknum við út lýsistærðir fyrir flokkabreytur. Við byrjum á að sjá hvernig finna má tíðni og hlutföll á auðveldan hátt og skoðum svo lýsistærðir sem lýsa sambandi tveggja flokkabreyta.
4.2.1. Tíðni og hlutfall
4.2.1.1. table()
Athugið
Inntak: nafn á flokkabreyt(um)
Úttak: tíðni
table()
skipunin telur hversu oft hver og ein útkoma flokkabreytu
kemur fyrir. Viljum við sjá hversu margir nemendur voru í LAN203 og
STÆ209 í gagnasafninu okkar gerum við það með:
table(puls$namskeid)
##
## LAN203 STAE209
## 172 299
Við getum líka matað table()
með tveimur flokkabreytum og þá telur
hún hversu oft hversu mörg viðfangsefni hljóta hverja og eina af
mögulegum samsetningum útkoma beggja breytanna eins og er sýnt hér að
neðan.
table(puls$namskeid,puls$kyn)
##
## kvk kk
## LAN203 111 61
## STAE209 196 103
4.2.1.2. prop.table()
Athugið
Inntak: tafla - úttak úr table()
Úttak: hlutföll
Helstu stillingar: margin
table()
skipunin skilar okkur fjölda/tíðni en viljum við frekar
hlutföll getum við notað prop.table()
aðferðina. Við mötum hana með
því sem table()
aðferðin skilar:
prop.table(table(puls$namskeid))
##
## LAN203 STAE209
## 0.3651805 0.6348195
Séum við að vinna með tvær breytur má mata prop.table()
aðferðina á
þrennan hátt. Viljum við fá heildarhlutföllin gerum við það með:
prop.table(table(puls$namskeid,puls$kyn))
##
## kvk kk
## LAN203 0.2356688 0.1295117
## STAE209 0.4161359 0.2186837
Í töflunni má t.d. sjá að um 23.6% nemenda í gagnasafninu eru kvenkyns nemendur í LAN203. Viljum við aftur á máti skoða hlutföllin eftir línum í töflunni gerum við það með:
prop.table(table(puls$namskeid,puls$kyn),margin=1)
##
## kvk kk
## LAN203 0.6453488 0.3546512
## STAE209 0.6555184 0.3444816
Í töflunni má t.d. sjá að um 64.5% nemenda í LAN203 eru kvenkyns. Viljum við hins vegar skoða hlutföllin eftir dálkum í töflunni gerum við það með:
prop.table(table(puls$namskeid,puls$kyn),margin=2)
##
## kvk kk
## LAN203 0.3615635 0.3719512
## STAE209 0.6384365 0.6280488
Í töflunni má t.d. sjá að um 36.2% kvenkyns nemenda er í LAN203.
Takið eftir að nota má prop.table()
til að reikna lýsistærðirnar
næmi (e. sensitivity) og sértæki (e. specificity).
4.3. Aðrar gagnlegar skipanir
4.3.1. Aðrar gagnlegar skipanir
4.3.1.1. round()
Athugið
Inntak: gildi, vigur, tafla…
Úttak: gildi, vigur, tafla með námunduðum gildum
Helstu stillingar: digits
R skilar stundum óþarflega mörgum aukastöfum. Við getum notað
round()
aðferðina til að stjórna hversu mörgum aukastöfum er skilað.
Við mötum aðferðina með því sem reikna á og fjölda aukastafa sem á að
skila. Skoðum t.d. töfluna hér að ofan. Viljum við aðeins að þremur
aukastöfum sé skilað gerum við það með:
round(prop.table(table(puls$namskeid,puls$kyn),2),3)
##
## kvk kk
## LAN203 0.362 0.372
## STAE209 0.638 0.628
4.3.1.2. summary()
Athugið
Inntak: allt milli himins og jarðar
Úttak: flest það sem þú vilt vita
Við munum rekast á skipunina summary()
nokkrum sinnum í þessari bók.
Skipunin skilar mismunandi úttaki eftir því með hverju hún er mötuð. Sé
hún mötuð með talnabreytu gefur summary()
aðferðin okkur fimm tölu
samantekt og meðaltal. Það er bæði hægt að mata aðferðina með tölum
summary(c(3,4,7,8))
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.00 3.75 5.50 5.50 7.25 8.00
og með nafni breytu:
summary(puls$haed)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 150.0 166.0 172.0 173.3 181.0 198.0 1
Ef breytan sem við erum að skoða er flokkabreyta gefur summary()
aðferðin okkur nafnið á flokkunum og fjölda viðfangsefna í hverjum
flokki.
Það er líka hægt að mata summary()
aðferðina með nafninu á
gagnatöflu og fáum við þá upplýsingar um allar breyturnar í töflunni.
summary(puls)
## id namskeid haed thyngd
## Min. : 1.0 LAN203 :172 Min. :150.0 Min. : 40.00
## 1st Qu.:118.5 STAE209:299 1st Qu.:166.0 1st Qu.: 60.00
## Median :236.0 Median :172.0 Median : 70.00
## Mean :236.0 Mean :173.3 Mean : 71.46
## 3rd Qu.:353.5 3rd Qu.:181.0 3rd Qu.: 80.00
## Max. :471.0 Max. :198.0 Max. :121.00
## NA's :1 NA's :10
## aldur kyn reykir drekkur likamsraekt
## Min. :19.00 kvk:307 ja : 46 ja :389 Min. : 0.000
## 1st Qu.:20.00 kk :164 nei :412 nei : 76 1st Qu.: 2.000
## Median :22.00 NA's: 13 NA's: 6 Median : 4.000
## Mean :24.24 Mean : 4.492
## 3rd Qu.:25.00 3rd Qu.: 6.000
## Max. :70.00 Max. :25.000
## NA's :5
## likamsraektf kronukast fyrriPuls seinniPuls
## Lítil : 85 landvaettir:263 Min. : 42.00 Min. : 42.00
## Miðlungs:191 thorskur :208 1st Qu.: 64.00 1st Qu.: 68.00
## Mikil :190 Median : 71.50 Median : 77.00
## NA's : 5 Mean : 71.98 Mean : 82.21
## 3rd Qu.: 80.00 3rd Qu.: 93.00
## Max. :120.00 Max. :162.00
## NA's :17 NA's :14
## inngrip dagsetning ar namskeidar
## hljop :183 Min. :2013-01-07 Min. :2013 Length:471
## sat_kyrr:286 1st Qu.:2013-01-07 1st Qu.:2013 Class :character
## NA's : 2 Median :2014-01-06 Median :2014 Mode :character
## Mean :2014-01-07 Mean :2014
## 3rd Qu.:2015-01-05 3rd Qu.:2015
## Max. :2015-01-05 Max. :2015
##
4.3.1.3. tapply()
Athugið
Inntak: nafn á talnabreytu, nafn á flokkabreytu og nafn á aðferð fyrir lýsistærð
Úttak: gildi á lýsistærð fyrir talnabreytuna reiknað fyrir sérhvern flokk flokkabreytunnar
tapply()
skipunin getur verið mjög gagnleg viljum við reikna út
lýsistærðir talnabreytu fyrir hvern flokk í flokkabreytu sem tilheyrir
sömu gagnatöflu og talnabreytan. Við mötum tapply()
aðferðina með
nafninu á talnabreytunni, nafninu á flokkabreytunni og nafninu á
aðferðinni sem við viljum beita. Ef það vantar einhver gildi þurfum við
að nota na.rm=TRUE
líkt og áður. Viljum við t.d. reikna út meðaltal
fyrri púlsmælinganna í líkamsræktarhópunum þremur sem við mynduðum hér að
ofan gerum við það með:
tapply(puls$fyrriPuls,puls$likamsraektf,mean,na.rm=TRUE)
## Lítil Miðlungs Mikil
## 75.14815 73.21739 69.13587
4.4. Leiksvæði fyrir R kóða
Hér fyrir neðan er hægt að skrifa R kóða og keyra hann. Notið þetta svæði til að prófa ykkur áfram með skipanir kaflans. Athugið að við höfum þegar sett inn skipun til að lesa inn puls
gögnin sem eru notuð gegnum alla bókina.
# Gogn sott og sett i breytuna puls.
puls <- read.table ("https://raw.githubusercontent.com/edbook/haskoli-islands/main/pulsAll.csv", header=TRUE, sep=";")
# Setjid ykkar eigin koda her fyrir nedan:
# Sem daemi, skipunin head(puls) skilar fyrstu nokkrar radirnar i gognunum
# asamt dalkarheitum.
head(puls)