Käesolevas õppematerjalis on esitatud Sissejuhatus R-i kursuse projekti täitmise skeem andmestiku NHANES.csv näitel.

Sissejuhatus

Andmestiku kirjeldus

NHANES (National Health and Nutrition Examination Survey) on US riikliku tervisestatistika keskuse (NCHS) poolt läbiviidud uuringute programm, mille eesmärk on hinnata Ameerika Ühendriikide täiskasvanute ja laste tervislikku seisundit ja toitumist ning jälgida aja jooksul toimuvaid muutusi. Antud projektis kasutatud andmestik sisaldab andmeid, mis koguti NHANES uuringute käigus aastatel 2009–2012.

Andmekogum sisaldab info 7235 vähemalt 20-aastase USA tsiviilisiku kohta, mille sisuks on nende isikute füüsilisi, demograafilisi, toitumis- ja elustiiliga seotud parameetreid nagu sugu, vanus, rass, haridustase, abielustaatus, sissetulek, vaesuse tase, eluaseme tubade arv, eluaseme omandamise staatus, töötamise staatus, kaal, pikkus, pulsisagedus, süstoolne ja diastoolne vererõhk, üldkolesterooli tase, diabeedi olemasolu, tervisele enesehinnang, halba füüsilise ja mentaalse enesetunde päevade arv kuus, huvide kaoga ja dipressiooniga seotud päevade arv, unetundide arv, unehäire probleemid, füüsiline aktiivsus, suitsutamine, alkoholi, marihuaana ja narkootikumide tarvitamine, seksuaalne enesemääratlus.

Andmestiku tunnuste kirjeldused asuvad failis NHANES_descr.txt Moodle`is.

Uurimise eesmärk ja ülesanded

Antud projekti eesmärgiks on kolesterooli tasemele mõjuvate faktorite leidmine. Kolesterooli tase ei tähenda üht kindlat numbrit, vaid tähistab mitut näitajat, mida nimetatakse üldkolesterooliks ning heaks ja halvaks kolesterooliks. Uuritav tunnus on üldkolesterool Y=TotChol, mmol/L. Kõrgenud üldkolesterool ei ole tervislik, sest see viitab asjaolule, et hea ja halva kolesterooli suhe on paigast ära. Liigne kolesterool on üks olulisimaid südame- ja veresoonkonna haiguste tekkepõhjustest (näiteks infarkt ja insult). (https://www.benu.ee/kolesterooli-tase-millal-on-phjust-muretseda)

Sõnastame järgmised tööhüpoteesid:

  1. Üldkolesterooli tase on seotud inimese füüsilise aktiivsusega: madalama füüsilise aktiivsusega inimestel üldkolesterooli tase on kõrgem.

  2. Üldkolesterooli tase on seotud diabeedi olemasoluga: kõrgema üldkolesterooli tasemega inimestel on kõrgem diabeedi esinemise oht.

  3. Üldkolesterooli tase on seotud inimese kehamassiindeksiga: kõrgema üldkolesterooli tasemega inimestel on kõrgem kehamassiindeks.

Uuringu käik ja meetodid

Antud projektis püstitatud hüpoteeside kontrollimiseks on kasutatud andmete eeltöötluse, visualiseerimise ja kirjeldava analüüsi meetodeid.

Uuringu etapid on järgmised:

  1. Andmete ettevalmistamine: andmete puhastamine (duplikaatide ja puuduvate väärtuste eemaldamine), uute tunnuste moodustamine, tunnuste tüüpide teisendamine.

  2. Tunnuste ja nendevaheliste seoste kirjeldamine.

  3. Püstitatud tööhüpoteeside kontrollimine. Tööhüpoteesi 1 kontrollimiseks võrdleme karpdiagrammide abil uuritava tunnuse keskmised väärtused ja mediaanid vastava kategoriaalse tunnuse rühmades. Tööhüpoteesi 2 kontrollimiseks jaotame uuritava tunnuse väärtused klassidesse ja kontrollime sõltuvust kahe kategoriaalse tunnuse vahel tulpdiagrammi abil. Tööhüpoteesi 3 kontrollimiseks uurime kahe tunnuse kooskäitumist hajuvusdiagrammi abil.

  4. Järelduste tegemine.

Projekt on täidetud programmeerimiskeele R ja RStudio tarkvara kasutusel. Projekti täitmisel on kasutatud õppeine RKE142 Sissejuhatus R-i Moodle`i kursuse õppematerjale.

Andmete lugemine

Loeme andmeid R-i (Moodle`ist fail NHANES.csv), andmestik NHANES.csv enne peab olema salvestatud sama kausta, kus asub teie rmd-fail

nhanes <- read.csv2("NHANES.csv", dec = ".") 

Andmestiku tabelina väljastamiseks sobib funktsioon datatable() paketist “DT” (enne on vaja paketi installida ja aktiveerida install.packages(“DT”); library(“DT”)), info selle paketi kohta leiate siit: https://rstudio.github.io/DT/options.html.

library(DT)
datatable(nhanes, options=list(scrollX=1,pageLenght=5,searching = FALSE,scroller = TRUE,scrollY=200))

Ülevaade andmestiku struktuurist

Funktsioon str()

Kõige lihtasam ja kiirem viis esitada andmestiku struktuurist ülevaade on funktsiooni str() kasutamine:

str(nhanes)
## 'data.frame':    7235 obs. of  33 variables:
##  $ ID             : int  51624 51624 51624 51630 51647 51647 51647 51654 51656 51657 ...
##  $ SurveyYr       : chr  "2009_10" "2009_10" "2009_10" "2009_10" ...
##  $ Gender         : chr  "male" "male" "male" "female" ...
##  $ Age            : int  34 34 34 49 45 45 45 66 58 54 ...
##  $ Race1          : chr  "White" "White" "White" "White" ...
##  $ Education      : chr  "High School" "High School" "High School" "Some College" ...
##  $ MaritalStatus  : chr  "Married" "Married" "Married" "LivePartner" ...
##  $ HHIncomeMid    : int  30000 30000 30000 40000 87500 87500 87500 30000 100000 70000 ...
##  $ Poverty        : num  1.36 1.36 1.36 1.91 5 5 5 2.2 5 2.2 ...
##  $ HomeRooms      : int  6 6 6 5 6 6 6 5 10 6 ...
##  $ HomeOwn        : chr  "Own" "Own" "Own" "Rent" ...
##  $ Work           : chr  "NotWorking" "NotWorking" "NotWorking" "NotWorking" ...
##  $ Weight         : num  87.4 87.4 87.4 86.7 75.7 75.7 75.7 68 78.4 74.7 ...
##  $ Height         : num  165 165 165 168 167 ...
##  $ Pulse          : int  70 70 70 86 62 62 62 60 62 76 ...
##  $ BPSysAve       : int  113 113 113 112 118 118 118 111 104 134 ...
##  $ BPDiaAve       : int  85 85 85 75 64 64 64 63 74 85 ...
##  $ TotChol        : num  3.49 3.49 3.49 6.7 5.82 5.82 5.82 4.99 4.24 6.41 ...
##  $ Diabetes       : chr  "No" "No" "No" "No" ...
##  $ HealthGen      : chr  "Good" "Good" "Good" "Good" ...
##  $ DaysPhysHlthBad: int  0 0 0 0 0 0 0 10 0 4 ...
##  $ DaysMentHlthBad: int  15 15 15 10 3 3 3 0 0 0 ...
##  $ LittleInterest : chr  "Most" "Most" "Most" "Several" ...
##  $ Depressed      : chr  "Several" "Several" "Several" "Several" ...
##  $ SleepHrsNight  : int  4 4 4 8 8 8 8 7 5 4 ...
##  $ SleepTrouble   : chr  "Yes" "Yes" "Yes" "Yes" ...
##  $ PhysActive     : chr  "No" "No" "No" "No" ...
##  $ AlcoholDay     : int  NA NA NA 2 3 3 3 1 2 6 ...
##  $ AlcoholYear    : int  0 0 0 20 52 52 52 100 104 364 ...
##  $ Smoke100n      : chr  "Smoker" "Smoker" "Smoker" "Smoker" ...
##  $ Marijuana      : chr  "Yes" "Yes" "Yes" "Yes" ...
##  $ HardDrugs      : chr  "Yes" "Yes" "Yes" "Yes" ...
##  $ SexOrientation : chr  "Heterosexual" "Heterosexual" "Heterosexual" "Heterosexual" ...

Funktsiooni str() rakendamise tulemusena saime teada, et andmestikus on 7235 objekti ja 33 muutujat. Esimene muutuja ID on objekti identifitseerimisnumber, mis sisuliselt ei ole tunnus, aga objekti identifikaator. Seega andmestikus on tegelikult 32 tunnust. Funktsiooni str() abil näeme ka iga tunnuse tüüpi ja rida esimest väärtust ning saame kontrollida, kas tunnuse tüübid on lugemisel õigesti määratud.

Parema ülevaate andmestiku struktuurist annab funktsioon skim() paketist skimr https://cran.r-project.org/web/packages/skimr/vignettes/skimr.html (install.packages(“skimr”)). Eraldi siin on esitatud sümboltüüpi tunnuste ja arvuliste tunnuste kirjeldused:

library(skimr)
skim(nhanes)
Data summary
Name nhanes
Number of rows 7235
Number of columns 33
_______________________
Column type frequency:
character 17
numeric 16
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
SurveyYr 0 1.00 7 7 0 2 0
Gender 0 1.00 4 6 0 2 0
Race1 0 1.00 5 8 0 5 0
Education 14 1.00 9 14 0 5 0
MaritalStatus 4 1.00 7 12 0 6 0
HomeOwn 49 0.99 3 5 0 3 0
Work 1 1.00 7 10 0 3 0
Diabetes 2 1.00 2 3 0 2 0
HealthGen 757 0.90 4 9 0 5 0
LittleInterest 798 0.89 4 7 0 3 0
Depressed 794 0.89 4 7 0 3 0
SleepTrouble 0 1.00 2 3 0 2 0
PhysActive 0 1.00 2 3 0 2 0
Smoke100n 0 1.00 6 10 0 2 0
Marijuana 2526 0.65 2 3 0 2 0
HardDrugs 1702 0.76 2 3 0 2 0
SexOrientation 2615 0.64 8 12 0 3 0

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
ID 0 1.00 61903.83 5889.13 51624.00 56901.50 62056.00 67003.00 71915.00 ▇▇▇▇▇
Age 0 1.00 47.17 16.95 20.00 33.00 46.00 60.00 80.00 ▇▇▇▆▅
HHIncomeMid 603 0.92 57779.70 32787.81 2500.00 30000.00 50000.00 87500.00 100000.00 ▃▆▃▂▇
Poverty 537 0.93 2.94 1.67 0.00 1.36 2.91 5.00 5.00 ▃▅▃▃▇
HomeRooms 55 0.99 6.14 2.26 1.00 4.00 6.00 7.00 13.00 ▂▆▇▂▁
Weight 57 0.99 82.22 21.23 37.00 67.10 79.50 94.10 230.70 ▆▇▁▁▁
Height 53 0.99 168.79 10.09 134.50 161.40 168.70 176.00 200.40 ▁▃▇▅▁
Pulse 254 0.96 72.49 11.92 40.00 64.00 72.00 80.00 136.00 ▂▇▃▁▁
BPSysAve 264 0.96 121.00 17.15 78.00 109.00 119.00 130.00 226.00 ▂▇▂▁▁
BPDiaAve 264 0.96 70.14 12.46 0.00 64.00 71.00 78.00 116.00 ▁▁▆▇▁
TotChol 390 0.95 5.07 1.06 1.53 4.29 4.99 5.72 13.65 ▂▇▁▁▁
DaysPhysHlthBad 764 0.89 3.53 7.74 0.00 0.00 0.00 3.00 30.00 ▇▁▁▁▁
DaysMentHlthBad 762 0.89 4.22 8.04 0.00 0.00 0.00 4.00 30.00 ▇▁▁▁▁
SleepHrsNight 17 1.00 6.89 1.34 2.00 6.00 7.00 8.00 12.00 ▁▅▇▁▁
AlcoholDay 2407 0.67 2.87 2.93 1.00 1.00 2.00 3.00 82.00 ▇▁▁▁▁
AlcoholYear 1409 0.81 75.70 103.56 0.00 3.00 24.00 104.00 364.00 ▇▁▁▁▁

Peale andmestiku objektide ja tunnuste arvust funktsiooni skim() annab teada, et andmestikus on 17 sümboltüüpi ja 16 arvulist tunnust (üks neist on ID, mis sisuliselt ei ole tunnus). Näeme iga tunnuse korral puuduvate väärtuste arvu, saame teada puuduvate väärtuste käsitlemise vajadusest. Iga mittearvulise tunnuse korral on esitatud tunnuse erinevate väärtuste arv ja kõige sagedamini esinevatest väärtustest ülevaaade. Iga arvulise tunnse korral on esitatud tunnuse peamised arvkarakteristikud ja väärtuste sagedusjaotused.

Näeme, et andmestikus on palju puuduvate väärtustega probleemsed tunnused (SexOrientation 2615, Marijuana 2526, AlcoholDay 2407).

Andmete eeltöötlus

Andmete eeltöötluse etapil toimub andmete edasiseks analüüsiks ettevalmistamine: andmete lugemine, tunnuste tüüpide kontrollimine, puhastamine (vigaste väärtuste kontroll ja eemaldamine, duplikaatide eemaldamine, puuduvate väärtuste kontroll ja asendamine või eemaldamine, mittesobivate tunnuste kustutamine) ja ka tunnuste teisendamine ning uute tunnuste moodustamine.

Andmestiku puhastamine

Andmestiku puhastamise etapil toimub vigaste väärtuste kontroll ja eemaldamine, duplikaatide eemaldamine, puuduvate väärtuste kontroll ja asendamine või eemaldamine, mittesobivate tunnuste kustutamine

Duplikaatide kontroll

Duplikaatridade kontrollimiseks võib kasutada R-i funktsiooni duplicated():

sum(duplicated(nhanes))
## [1] 2581

Andmestikus on 2581 duplikaati. Eemaldame neid:

nhanes <- nhanes[!duplicated(nhanes) , ]
sum(duplicated(nhanes))
## [1] 0

Puuduvate väärtuste kontroll

Puuduvate väärtuste olemsolu kontrollimiseks kasutatakse funktsiooni is.na(). Leiame puuduvate väärtuste koguarvu andmestikus

sum(is.na(nhanes))
## [1] 11866

Puuduvate väärtuste koguarv on 11866.

Puuduvate väärtustega objektide arvu leidmiseks kasutatakse funktsiooni complete.cases(). Leiame puuduvate väärtuste objektide arvu andmestikus

sum(!complete.cases(nhanes))
## [1] 2703

Puuduvate väärtustega objektide koguarv on 2703.

Leiame mitu puuduvat väärtust igal tunnusel on funktsiooni apply() abil.

apply(is.na(nhanes),2,sum)
##              ID        SurveyYr          Gender             Age           Race1 
##               0               0               0               0               0 
##       Education   MaritalStatus     HHIncomeMid         Poverty       HomeRooms 
##               9               4             418             366              38 
##         HomeOwn            Work          Weight          Height           Pulse 
##              34               1              39              41             186 
##        BPSysAve        BPDiaAve         TotChol        Diabetes       HealthGen 
##             194             194             273               1             521 
## DaysPhysHlthBad DaysMentHlthBad  LittleInterest       Depressed   SleepHrsNight 
##             528             526             551             550              12 
##    SleepTrouble      PhysActive      AlcoholDay     AlcoholYear       Smoke100n 
##               0               0            1642             984               0 
##       Marijuana       HardDrugs  SexOrientation 
##            1739            1207            1808

Kui eemaldame kõik 2703 puuduvate väärtustega objekti, siis see on liiga suur info kadu. Kategoriaalsete tunnuste puhul puuduvaid väärtusi on võimalik asendada uue kategooriaga “Unknown”.

Asendame mittearvuliste tunnuste puuduvaid väärtusi väärtusega “Unknown”. Selleks esiteks leiame mittearvuliste tunnustega veergude numbrid, kasutades mittearvuliste tunnuste filtreerimist Filter(is.character,NHANES):

CharVar<- names(Filter(is.character,nhanes))
nhanes[,CharVar][is.na(nhanes[,CharVar])] <- "Unknown"

Kustutame tunnus “AlcoholDay”, mis sisaldab liiga palju (1642) puuduvat väärtust

nhanes <- subset(nhanes,select=-AlcoholDay)

Edasi eemaldame puuduvate väärtustega NA objekte funktsiooni na.omit() abil:

nhanes <- na.omit(nhanes)

Kontrollime puuduvate väärtuste olemasolu:

sum(!complete.cases(nhanes))
## [1] 0

Nüüd puuduvaid väärtusi pole, jäi andmestikku 3153 objekti

sum(complete.cases(nhanes))
## [1] 3153

Uute tunnuste moodustamine

Lisame andmestikule tööülesandes mainitud kehamassiindeksi BMI, millemmõõtmisühikuks on kg/m²:

nhanes$BMI <- nhanes$Weight/((nhanes$Height/100)^2)

Faktortunnuste moodustamine

Asendame edasiseks analüüsiks sümbol-tüüpi tunnused faktoriteks:

nhanes <- as.data.frame(unclass(nhanes),stringsAsFactors = TRUE)

Ettevalmistatud ndmestiku struktuur:

skim(nhanes)
Data summary
Name nhanes
Number of rows 3153
Number of columns 33
_______________________
Column type frequency:
factor 17
numeric 16
________________________
Group variables None

Variable type: factor

skim_variable n_missing complete_rate ordered n_unique top_counts
SurveyYr 0 1 FALSE 2 200: 1693, 201: 1460
Gender 0 1 FALSE 2 mal: 1672, fem: 1481
Race1 0 1 FALSE 5 Whi: 2056, Bla: 410, Mex: 292, Oth: 208
Education 0 1 FALSE 6 Som: 986, Col: 921, Hig: 667, 9 -: 398
MaritalStatus 0 1 FALSE 7 Mar: 1729, Nev: 580, Div: 298, Liv: 272
HomeOwn 0 1 FALSE 4 Own: 2084, Ren: 987, Oth: 80, Unk: 2
Work 0 1 FALSE 3 Wor: 1962, Not: 1070, Loo: 121
Diabetes 0 1 FALSE 2 No: 2786, Yes: 367
HealthGen 0 1 FALSE 5 Goo: 1251, Vgo: 993, Fai: 469, Exc: 351
LittleInterest 0 1 FALSE 4 Non: 2409, Sev: 519, Mos: 215, Unk: 10
Depressed 0 1 FALSE 4 Non: 2467, Sev: 491, Mos: 186, Unk: 9
SleepTrouble 0 1 FALSE 2 No: 2313, Yes: 840
PhysActive 0 1 FALSE 2 Yes: 1701, No: 1452
Smoke100n 0 1 FALSE 2 Non: 1641, Smo: 1512
Marijuana 0 1 FALSE 3 Yes: 1430, No: 882, Unk: 841
HardDrugs 0 1 FALSE 3 No: 2187, Yes: 532, Unk: 434
SexOrientation 0 1 FALSE 4 Het: 2166, Unk: 884, Bis: 63, Hom: 40

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
ID 0 1 61555.93 5855.86 51624.00 56580.00 61420.00 66584.00 71915.00 ▇▇▇▇▇
Age 0 1 47.13 17.04 20.00 33.00 46.00 60.00 80.00 ▇▇▇▆▅
HHIncomeMid 0 1 56589.76 32521.41 2500.00 30000.00 50000.00 87500.00 100000.00 ▃▆▃▂▇
Poverty 0 1 2.90 1.66 0.00 1.33 2.82 4.86 5.00 ▃▅▃▃▇
HomeRooms 0 1 6.12 2.21 1.00 5.00 6.00 7.00 13.00 ▂▆▇▂▁
Weight 0 1 83.45 21.02 39.10 68.30 80.90 95.10 223.00 ▆▇▁▁▁
Height 0 1 169.57 9.85 141.20 162.40 169.60 176.60 200.40 ▁▆▇▅▁
Pulse 0 1 72.19 11.68 40.00 64.00 72.00 80.00 128.00 ▁▇▅▁▁
BPSysAve 0 1 121.03 17.01 78.00 110.00 119.00 129.00 226.00 ▂▇▂▁▁
BPDiaAve 0 1 70.19 12.52 0.00 63.00 71.00 78.00 116.00 ▁▁▇▇▁
TotChol 0 1 5.07 1.07 1.53 4.29 4.99 5.72 13.65 ▂▇▁▁▁
DaysPhysHlthBad 0 1 3.56 7.76 0.00 0.00 0.00 3.00 30.00 ▇▁▁▁▁
DaysMentHlthBad 0 1 4.04 7.82 0.00 0.00 0.00 4.00 30.00 ▇▁▁▁▁
SleepHrsNight 0 1 6.87 1.34 2.00 6.00 7.00 8.00 12.00 ▁▅▇▁▁
AlcoholYear 0 1 72.37 101.67 0.00 2.00 24.00 104.00 364.00 ▇▁▁▁▁
BMI 0 1 28.95 6.65 15.02 24.32 27.89 32.27 69.04 ▆▇▂▁▁

Lõppandmestikus on 17 faktortunnust ja 16 arvulist tunnust (koos ID tunnusega).

Andmete kirjeldav analüüs

Kirjeldava andmeanalüüsi etapil esitatakse tunnuste väärtuste jaotuse diagrammid, sagedustabelid, аrvulised karakteristikud ning tehakse ka erindite analüüs.

Antud projekti eesmärgiks on üldkolesterooli tasemele mõjuvate faktorite leidmine ehk uuritavaks tunnuseks on Y=TotChol.

Arvuliste tunnuste kirjeldus

Filtreerime andmestikust arvulised tunnused välja (peale tunnust ID) ja leiame tunnuste kõige olulisemad arvkarakteristikud. Andmestiku arvuliste tunnuste kõik valjalikud arvkarakteristikud on võimalik saada paketi FSA (kui see pakett ei ole veel installitud, on vaja installida: install.packages(“FSA”)) funktsiooni Summarize() abil.

Arvuliste tunnuste arvkarakteristikud:

library(FSA)
sapply(Filter(is.numeric, nhanes[,-1]),Summarize)
## $Age
##          n       mean         sd        min         Q1     median         Q3 
## 3153.00000   47.13448   17.03794   20.00000   33.00000   46.00000   60.00000 
##        max 
##   80.00000 
## 
## $HHIncomeMid
##         n      mean        sd       min        Q1    median        Q3       max 
##   3153.00  56589.76  32521.41   2500.00  30000.00  50000.00  87500.00 100000.00 
## 
## $Poverty
##            n         mean           sd          min           Q1       median 
## 3153.0000000    2.8977513    1.6621291    0.0000000    1.3300000    2.8200000 
##           Q3          max     percZero 
##    4.8600000    5.0000000    0.8563273 
## 
## $HomeRooms
##           n        mean          sd         min          Q1      median 
## 3153.000000    6.121789    2.211188    1.000000    5.000000    6.000000 
##          Q3         max 
##    7.000000   13.000000 
## 
## $Weight
##          n       mean         sd        min         Q1     median         Q3 
## 3153.00000   83.45094   21.02460   39.10000   68.30000   80.90000   95.10000 
##        max 
##  223.00000 
## 
## $Height
##           n        mean          sd         min          Q1      median 
## 3153.000000  169.571266    9.851191  141.200000  162.400000  169.600000 
##          Q3         max 
##  176.600000  200.400000 
## 
## $Pulse
##          n       mean         sd        min         Q1     median         Q3 
## 3153.00000   72.18522   11.68240   40.00000   64.00000   72.00000   80.00000 
##        max 
##  128.00000 
## 
## $BPSysAve
##          n       mean         sd        min         Q1     median         Q3 
## 3153.00000  121.03013   17.00711   78.00000  110.00000  119.00000  129.00000 
##        max 
##  226.00000 
## 
## $BPDiaAve
##            n         mean           sd          min           Q1       median 
## 3153.0000000   70.1896606   12.5166714    0.0000000   63.0000000   71.0000000 
##           Q3          max     percZero 
##   78.0000000  116.0000000    0.3488741 
## 
## $TotChol
##           n        mean          sd         min          Q1      median 
## 3153.000000    5.070466    1.071470    1.530000    4.290000    4.990000 
##          Q3         max 
##    5.720000   13.650000 
## 
## $DaysPhysHlthBad
##           n        mean          sd         min          Q1      median 
## 3153.000000    3.563907    7.759990    0.000000    0.000000    0.000000 
##          Q3         max    percZero 
##    3.000000   30.000000   65.429749 
## 
## $DaysMentHlthBad
##           n        mean          sd         min          Q1      median 
## 3153.000000    4.037425    7.818402    0.000000    0.000000    0.000000 
##          Q3         max    percZero 
##    4.000000   30.000000   58.166825 
## 
## $SleepHrsNight
##           n        mean          sd         min          Q1      median 
## 3153.000000    6.865842    1.343136    2.000000    6.000000    7.000000 
##          Q3         max 
##    8.000000   12.000000 
## 
## $AlcoholYear
##          n       mean         sd        min         Q1     median         Q3 
## 3153.00000   72.36949  101.67172    0.00000    2.00000   24.00000  104.00000 
##        max   percZero 
##  364.00000   17.50714 
## 
## $BMI
##           n        mean          sd         min          Q1      median 
## 3153.000000   28.950780    6.652804   15.024439   24.316376   27.888843 
##          Q3         max 
##   32.271757   69.037786

Visualiseerime arvuliste tunnuste jaotused histogrammide ja karpdiagrammide abil. Sellisel etapil jätame uuritava tunnuse Y=TotChol välja ja uurime selle jaotuse eraldi detailsemalt. Kõige parem on panna iga tunnuse histogramm ja karpdiagrammide kõrvuti. Karpdiagrammidel punase punktiga on märgistatud keskväärtuse punkt:

# Arvuliste tunnuste jaotuste visualiseerimine
par(mfrow = c(2, 2))
numvar <- Filter(is.numeric, nhanes[,-1])
numvar <- subset(numvar,select=-TotChol)
for (i in 1:ncol(numvar)){
        hist(numvar[,i],  col="skyblue",ylab="Sagedus",
             xlab=names(numvar)[i], main="Sageduste histogramm",
             cex.main=0.9,cex.axis=0.7,cex.lab=0.8)
        
        boxplot(numvar[,i], col="skyblue", horizontal=1, 
                xlab=names(numvar)[i], main="Karpdiagramm",
                cex.main=0.9, cex.axis=0.7,cex.lab=0.8)
        points(mean(numvar[,i]), 1, col = "red", pch = 18)
        text(mean(numvar[,i]), 0.95, "mean", col="red", cex=0.5)    
}

Näeme, et tunnus Age on praktiliselt ühtlase jaotusega. Vasakpoolse asümmeetriaga on tunnused Income, Poverty ja diastoolne vererõhk. Tunnused Height ja SleepHrsNight. Ülejäänud tunnused on parempoolse asümmeetriaga. Praktiliselt kõikidel tunnustel (peale Age, Income ja poverty) on erindid, kuid need ei ole vigased väärtused, need väärtused on väärtuste mõistlikes piirides.

Kategoriaalsete tunnuste kirjeldus

Esitame faktortunnuste väärtuste sagedused tulpdiagrammidel. Enne filtreerime andmestikust faktortunnused.

# Faktortunnuste jaotuste visualiseerimine
non_num <-Filter(is.factor, nhanes)
par(mfrow = c(2, 2))
par(mar=c(7,4,4,2))
for (i in 1:ncol(non_num)){
        barplot(table(non_num[,i]),  
        col="skyblue",ylab="Sagedus",xlab=names(non_num)[i], 
        main="Sageduste tulpdiagramm",cex.main=0.9,
        cex.axis=0.6,cex.lab=0.6, las=2, cex.names = 0.45)
}

Esitame kategoriaalsete tunnuste väärtuste sagedustabelid:

# Faktortunnuste sagedustabelid
sapply(non_num,table)
## $SurveyYr
## 
## 2009_10 2011_12 
##    1693    1460 
## 
## $Gender
## 
## female   male 
##   1481   1672 
## 
## $Race1
## 
##    Black Hispanic  Mexican    Other    White 
##      410      187      292      208     2056 
## 
## $Education
## 
##      8th Grade 9 - 11th Grade   College Grad    High School   Some College 
##            178            398            921            667            986 
##        Unknown 
##              3 
## 
## $MaritalStatus
## 
##     Divorced  LivePartner      Married NeverMarried    Separated      Unknown 
##          298          272         1729          580           83            2 
##      Widowed 
##          189 
## 
## $HomeOwn
## 
##   Other     Own    Rent Unknown 
##      80    2084     987       2 
## 
## $Work
## 
##    Looking NotWorking    Working 
##        121       1070       1962 
## 
## $Diabetes
## 
##   No  Yes 
## 2786  367 
## 
## $HealthGen
## 
## Excellent      Fair      Good      Poor     Vgood 
##       351       469      1251        89       993 
## 
## $LittleInterest
## 
##    Most    None Several Unknown 
##     215    2409     519      10 
## 
## $Depressed
## 
##    Most    None Several Unknown 
##     186    2467     491       9 
## 
## $SleepTrouble
## 
##   No  Yes 
## 2313  840 
## 
## $PhysActive
## 
##   No  Yes 
## 1452 1701 
## 
## $Smoke100n
## 
## Non-Smoker     Smoker 
##       1641       1512 
## 
## $Marijuana
## 
##      No Unknown     Yes 
##     882     841    1430 
## 
## $HardDrugs
## 
##      No Unknown     Yes 
##    2187     434     532 
## 
## $SexOrientation
## 
##     Bisexual Heterosexual   Homosexual      Unknown 
##           63         2166           40          884

Analüüsime sagedustabelite abil faktortunnuste rühmade objektide arvud. Kui rühmas on vähe objekti, siis ei saa teha üldistusi vähearvulise rühma põhjal. Minimaalne soovitav objektide arv rühmas, et oleks võimalik üldistusi teha on 15-20. Kui rühmas on vaid üks objekt, rühma standardhälbe arvutamisel tekib jagamine nulliga, ja rühma kõik arvkarakteristikud ei ole võimalik leida. Väikesed rühmad tuleb analüüsist välja jätta või suuremaks teha rühmade ühendamise teel. Antud näite korral probleemsed rühmad on rühmad väärtusega “Unknown”, mis olid tehtud puuduvate väärtuste eemaldamise etapil. Osutub, et puuduvate väärtustega objektid oli mõistlik eemaldada, peale tunnust SexOrientation, kus väärtusega “Unknown” on 884 objekti.

Uuritava tunnuse Y=TotChol analüüs

Uuritav tunnus Y=TotChol on pidev arvuline tunnus. Visualiseerime tunnuse väärtuste jaotuse:

par(mfrow = c(1, 2))
hist(nhanes$TotChol,  col="skyblue",ylab="Sagedus",
     xlab="HDL-kolesterooli tase", main="Sageduste histogramm",cex.main=0.9)
boxplot(nhanes$TotChol, col="skyblue", horizontal=1,
        xlab="HDL-kolesterooli tase", main="Karpdiagramm",
        cex.main=0.9,range=3)
points(mean(nhanes$TotChol), 1, col = "red", pch = 18)
text(mean(nhanes$TotChol), 0.95, "mean", col="red", cex=0.5)    

Tunnuse TotChol jaotus on parempoolse asümmeetriaga, on olemas rida erindeid.

Erindite ehk anomaalväärtuste analüüs. Karpdiagrammi parameeter range lubab eraldada vaid olulisemaid erindeid (standardne väärtus: range=1.5, parameetrit on võimalik suurendada olulisemate erindite eraldamiseks). Kui parameeter range=3, siis on olemas kolm olulisemat erindit paremalt. Erindite väärtused:

erind <- boxplot(nhanes$TotChol,range=3,plot=FALSE)$out
erind 
## [1] 13.65 12.28 10.29

Objektid, mis esinevad erinditena:

library(knitr) # lisame tabeli HTML-vormistamiseks paketi "knitr"
kable(nhanes[which(nhanes$TotChol%in%erind) , ])
ID SurveyYr Gender Age Race1 Education MaritalStatus HHIncomeMid Poverty HomeRooms HomeOwn Work Weight Height Pulse BPSysAve BPDiaAve TotChol Diabetes HealthGen DaysPhysHlthBad DaysMentHlthBad LittleInterest Depressed SleepHrsNight SleepTrouble PhysActive AlcoholYear Smoke100n Marijuana HardDrugs SexOrientation BMI
1692 62146 2009_10 male 43 White Some College Married 30000 1.12 10 Own NotWorking 91.2 177.9 100 139 96 13.65 No Fair 0 7 Several Several 8 No No 208 Smoker No Yes Heterosexual 28.81661
2013 64229 2011_12 female 50 White High School Married 12500 0.73 8 Rent Working 97.6 163.5 84 120 78 12.28 No Good 0 0 None None 5 No Yes 0 Non-Smoker Yes No Heterosexual 36.51021
2060 64497 2011_12 male 60 White 8th Grade NeverMarried 22500 1.39 3 Own NotWorking 89.9 165.7 86 143 96 10.29 Yes Fair 20 1 None Most 7 Yes No 0 Smoker Unknown No Unknown 32.74271

Kõikidel juhtumitel anomaalne suur üldkolesterooli tase on ülekaaluga inimestel (BMI > 28).

Tunnuse arvkarakteristikud:

library(kableExtra) # lisame tabeli HTML-vormistamiseks paketi "kableExtra"
arvkar <- Summarize(nhanes$TotChol, digits = 2)
kable_styling(kable(t(arvkar)))
n mean sd min Q1 median Q3 max
3153 5.07 1.07 1.53 4.29 4.99 5.72 13.65

Seoste analüüs

Seosed arvuliste tunnuste vahel

Visualiseerime seoseid andmestiku arvuliste tunnuste vahel funktsiooni plot() abil. Suure tunnuste arvu visualiseerimiseks kasutage koodiploki optsioonides fig.height=10, fig.width=19:

{r,message=FALSE,warning=FALSE, fig.height=10, fig.width=19}

numvar <- Filter(is.numeric, nhanes[,-1])
# Seosed arvuliste tunnuste vahel
plot(numvar,pch=20,col="steelblue")

Mind huvitab sihttunnuse Y=TotChol seos teiste arvulite tunnustega. Antud andmestikus tugevad seosed tunnusega Y=TotChol puuduvad. On olemas nõrk kasvav sõltuvus tunnuse “TotChol” tunnustega “Pulse”, “BPDiaAve” ja “SleepHrsNight” ehk inimestel, kellel on kõrgem pulssisagedus, diastoolne vererõhk ja kes rohkem magab, nendel on kolesterooli tase kõrgem.

Uuritava tunnuse seos faktortunnustega

Selleks, et vaadata sihttunuse sõltuvust mittervulistest tunnustest, koostame karpdiagrammid:

# Seos faktortunnuste vahel
par(mfrow=c(2,2))
par(mar=c(5,4,4,2))
for (i in 1:ncol(non_num)){
        boxplot(nhanes$TotChol~non_num[,i], 
        col="skyblue",xlab ="",ylab ="",las=2,
        cex.axis=0.5,cex.lab=0.7,cex.main=0.8, 
        main=paste("TotChol vs" ,names(non_num)[i]))
}

Lisame diagrammidele ka arvkarakteristikud rühmades:

# Rühmade arvkarakteristikud
library(FSA)

for (i in 1:ncol(non_num)){
        tabel <- Summarize(nhanes$TotChol~non_num[,i], digits=2)
        names(tabel)[1] <- names(non_num)[i]
        print(tabel)
        cat("\n")
}
##   SurveyYr    n mean   sd  min   Q1 median   Q3   max
## 1  2009_10 1693 5.13 1.07 2.69 4.34   5.04 5.77 13.65
## 2  2011_12 1460 5.00 1.07 1.53 4.27   4.94 5.64 12.28
## 
##   Gender    n mean   sd  min   Q1 median   Q3   max
## 1 female 1481 5.17 1.08 1.53 4.42   5.07 5.79 12.28
## 2   male 1672 4.98 1.06 2.17 4.22   4.91 5.64 13.65
## 
##      Race1    n mean   sd  min   Q1 median   Q3   max
## 1    Black  410 4.91 0.96 2.82 4.22   4.84 5.56  8.15
## 2 Hispanic  187 5.04 1.03 2.66 4.28   4.99 5.64  7.94
## 3  Mexican  292 5.04 1.01 2.43 4.40   4.97 5.67  8.61
## 4    Other  208 4.93 1.03 2.79 4.16   4.81 5.54  8.87
## 5    White 2056 5.12 1.11 1.53 4.34   5.04 5.77 13.65
## 
##        Education   n mean   sd  min   Q1 median   Q3   max
## 1      8th Grade 178 4.93 1.10 2.43 4.23   4.98 5.66 10.29
## 2 9 - 11th Grade 398 5.08 1.04 2.17 4.32   5.07 5.69  8.82
## 3   College Grad 921 5.04 1.01 2.79 4.29   4.97 5.59  9.90
## 4    High School 667 5.08 1.15 2.30 4.27   4.97 5.74 12.28
## 5   Some College 986 5.11 1.07 1.53 4.32   5.02 5.77 13.65
## 6        Unknown   3 6.30 1.81 4.22 5.72   7.21 7.34  7.47
## 
##   MaritalStatus    n mean   sd  min   Q1 median   Q3   max
## 1      Divorced  298 5.27 1.19 2.79 4.40   5.11 5.99  9.05
## 2   LivePartner  272 4.95 1.05 1.53 4.22   4.91 5.59  8.82
## 3       Married 1729 5.10 1.07 2.17 4.34   5.04 5.72 13.65
## 4  NeverMarried  580 4.88 0.99 2.74 4.22   4.78 5.48 10.29
## 5     Separated   83 5.09 0.93 3.23 4.56   5.02 5.56  8.09
## 6       Unknown    2 4.66 0.09 4.60 4.63   4.66 4.70  4.73
## 7       Widowed  189 5.26 1.11 2.40 4.42   5.28 6.00  8.04
## 
##   HomeOwn    n mean   sd  min   Q1 median   Q3   max
## 1   Other   80 4.93 1.10 2.66 4.27   4.84 5.51  8.61
## 2     Own 2084 5.13 1.08 1.53 4.36   5.07 5.77 13.65
## 3    Rent  987 4.96 1.04 2.40 4.22   4.86 5.59 12.28
## 4 Unknown    2 4.95 0.20 4.81 4.88   4.95 5.02  5.09
## 
##         Work    n mean   sd  min   Q1 median   Q3   max
## 1    Looking  121 5.19 1.04 3.23 4.53   5.02 5.84  8.25
## 2 NotWorking 1070 5.08 1.17 1.53 4.27   5.02 5.74 13.65
## 3    Working 1962 5.06 1.02 2.40 4.32   4.99 5.69 12.28
## 
##   Diabetes    n mean   sd  min   Q1 median   Q3   max
## 1       No 2786 5.10 1.05 1.53 4.35   5.04 5.74 13.65
## 2      Yes  367 4.83 1.20 2.17 3.98   4.71 5.50 10.29
## 
##   HealthGen    n mean   sd  min   Q1 median   Q3   max
## 1 Excellent  351 5.10 1.07 2.90 4.34   4.99 5.72  9.90
## 2      Fair  469 5.03 1.19 2.17 4.27   4.99 5.69 13.65
## 3      Good 1251 5.03 0.99 2.74 4.29   4.97 5.66 12.28
## 4      Poor   89 5.25 1.38 2.87 4.27   5.20 6.13  9.34
## 5     Vgood  993 5.11 1.08 1.53 4.34   5.04 5.74  9.31
## 
##   LittleInterest    n mean   sd  min   Q1 median   Q3   max
## 1           Most  215 5.25 1.08 2.40 4.45   5.25 5.90  8.22
## 2           None 2409 5.05 1.06 1.53 4.29   4.99 5.69 12.28
## 3        Several  519 5.11 1.13 2.43 4.33   5.02 5.72 13.65
## 4        Unknown   10 5.12 1.26 3.03 4.22   5.40 6.08  6.70
## 
##   Depressed    n mean   sd  min   Q1 median   Q3   max
## 1      Most  186 5.25 1.13 2.40 4.41   5.28 5.87 10.29
## 2      None 2467 5.05 1.05 1.53 4.29   4.99 5.68 12.28
## 3   Several  491 5.09 1.13 2.43 4.29   5.02 5.74 13.65
## 4   Unknown    9 5.10 1.34 3.03 3.96   5.43 6.18  6.70
## 
##   SleepTrouble    n mean   sd  min   Q1 median   Q3   max
## 1           No 2313 5.07 1.07 2.43 4.29   4.99 5.69 13.65
## 2          Yes  840 5.08 1.07 1.53 4.32   5.02 5.72 10.29
## 
##   PhysActive    n mean   sd  min   Q1 median   Q3   max
## 1         No 1452 5.08 1.10 1.53 4.34   5.00 5.72 13.65
## 2        Yes 1701 5.06 1.05 2.40 4.29   4.99 5.69 12.28
## 
##    Smoke100n    n mean   sd  min   Q1 median   Q3   max
## 1 Non-Smoker 1641 5.09 1.04 2.30 4.37   5.02 5.69 12.28
## 2     Smoker 1512 5.05 1.10 1.53 4.27   4.97 5.72 13.65
## 
##   Marijuana    n mean   sd  min   Q1 median   Q3   max
## 1        No  882 5.12 1.05 2.69 4.38   5.04 5.69 13.65
## 2   Unknown  841 5.07 1.12 2.17 4.27   5.02 5.77 10.29
## 3       Yes 1430 5.04 1.05 1.53 4.29   4.97 5.69 12.28
## 
##   HardDrugs    n mean   sd  min   Q1 median   Q3   max
## 1        No 2187 5.06 1.04 2.69 4.32   5.02 5.69 12.28
## 2   Unknown  434 4.93 1.14 2.17 4.14   4.85 5.59  9.05
## 3       Yes  532 5.21 1.14 1.53 4.42   5.14 5.90 13.65
## 
##   SexOrientation    n mean   sd  min   Q1 median   Q3   max
## 1       Bisexual   63 4.82 1.00 2.79 4.22   4.81 5.36  8.09
## 2   Heterosexual 2166 5.08 1.06 1.53 4.34   4.99 5.69 13.65
## 3     Homosexual   40 5.02 1.09 3.05 4.22   4.99 5.79  7.01
## 4        Unknown  884 5.07 1.11 2.17 4.27   5.02 5.77 10.29

Kõige märgitavam seos on tunnusega Depressed. Inimestel, kellel on dipressioon, keskmine kolesterooli tase on kõrgem.

Tööhüpoteeside kontrollimine

Tööhüpotees 1. Üldkolesterooli tase on seotud inimese füüsilise aktiivsusega: madalama füüsilise aktiivsusega inimestel üldkolesterooli tase on kõrgem.

Selle hüpoteesi kontrollimiseks vaatleme järgmist karpdiagrammi:

boxplot(nhanes$TotChol~nhanes$PhysActive, col="skyblue",xlab ="",ylab ="",cex.main=0.8, main="TotChol vs PhysActive")

ja arvkarakteristikud rühmades:

library(FSA)   
Summarize(TotChol~PhysActive,data=nhanes, digits = 3) 
##   PhysActive    n  mean    sd  min   Q1 median   Q3   max
## 1         No 1452 5.082 1.097 1.53 4.34  5.005 5.72 13.65
## 2        Yes 1701 5.061 1.049 2.40 4.29  4.990 5.69 12.28

Näeme, et keskmised rühmades on praktiliselt võrdsed, ehk üldkolesterooli tase ei sõltu inimese füüsilisest aktiivsusest.

Võime veel uurida seost naiste ja meeste rühmades eraldi, et kontrollida sõltuvust soost:

boxplot(TotChol~PhysActive+Gender, data=nhanes,at = c(1:2, 4:5),
        col = c("lightblue","steelblue"))

ja arvkarakteristikud:

library(FSA)   
Summarize(TotChol~PhysActive+Gender,data=nhanes, digits = 3) 
##   PhysActive Gender   n  mean    sd  min    Q1 median   Q3   max
## 1         No female 712 5.191 1.080 1.53 4.465   5.07 5.87  9.31
## 2        Yes female 769 5.151 1.081 2.40 4.400   5.07 5.77 12.28
## 3         No   male 740 4.977 1.104 2.17 4.263   4.86 5.64 13.65
## 4        Yes   male 932 4.986 1.017 2.69 4.220   4.94 5.64  9.90

Naistel üldiselt keskmine kolesterooli tase on kõrgem, kui meestel, kuid füüsilise aktiivsusega seost pole.

Tööhüpotees 2. Üldkolesterooli tase on seotud diabeedi olemasoluga: kõrgema üldkolesterooli tasemega inimestel on kõrgem diabeedi esinemise oht.

Selle hüpoteesi kontrollimiseks jaotame uuritava tunnuse väärtused klassidesse ja kontrollime sõltuvust kahe kategoriaalse tunnuse vahel tulpdiagrammi abil. Esiteks kodeerime uuritava tunnuse Y=TotChol väärtused järgmise eeskirja järgi (https://www.benu.ee/kolesterooli-tase-millal-on-phjust-muretseda):

  • < 5 Normal

  • [5-6.5) Borderline

  • [6.5-7.8] High

  • 7.8< Very High

nhanes$Chol_Cat <- ifelse(nhanes$TotChol<5, "Normal",
                ifelse(nhanes$TotChol>=5&nhanes$TotChol<6.5,"Borderline",
                ifelse(nhanes$TotChol>=6.5&nhanes$TotChol<7.8, "High", 
                "Very High")))

Muudame uue tunnuse faktoriks ja järjestame selle tasemed loodiliselt:

nhanes$Chol_Cat <- factor(nhanes$Chol_Cat, levels=c("Normal","Borderline","High","Very High"))

visualiseerime uue tunnuse väärtuste jaotuse:

barplot(prop.table(table(nhanes$Chol_Cat))*100, col="skyblue", ylab="Suhteline sagedus, %", xlab="Kolesterooli tasemed", main="Suhteliste sageduste tulpdiagramm", cex.main=0.9)

Näeme, et kõrgendatud kolesterooli tasemega inimesi andmestikus on ca 10%.

Uurime kolesterooli taseme seost diabeedi olemasoluga tulpdiagrammi abil:

par(mar=c(4,6,4,4),mgp=c(5,1,0))
barplot(prop.table(table(nhanes$Diabetes,nhanes$Chol_Cat),2)*100,
        col =c ("skyblue","steelblue"),horiz=T , las=1, ylab="Kolesterooli tase", cex.names = 0.7, main = "Kolesterool ja diabeet",cex.main=0.9)
        

legend("topright",legend=c("No", "Yes"),title="Diabetes",title.cex=0.7, 
       x.intersp=0.2,bty="n", fill = c("skyblue","steelblue"),
       inset=c(-0.1,0), xpd=TRUE,cex=0.7)

ja sama diagramm tabeli kujul

round(prop.table(table(nhanes$Diabetes,nhanes$Chol_Cat),2)*100,2)
##      
##       Normal Borderline  High Very High
##   No   85.76      91.76 87.56     86.00
##   Yes  14.24       8.24 12.44     14.00

Tegelikult suurem diabeedi diagnoosiga inimeste osakaal on rühmas, kus kolesterooli tase on normaalne ja kõige väiksem see osakaal on nenede inimeste seas, kelle kolesterooli tase on piiripealne.

Tööhüpotees 3. Üldkolesterooli tase on seotud inimese kehamassiindeksiga: kõrgema üldkolesterooli tasemega inimestel on kõrgem kehamassiindeks.

Selle hüpoteesi kontrollimiseks vaatleme järgmist hajuvusdiagrammi, kus eraldame veel värviga meeste ja naiste rühmad:

with(nhanes, plot(BMI, TotChol, main = "BMI vs TotChol", col=Gender,pch=20))
legend("topright", legend=c("male","femle"),
col = unique(nhanes$Gender),pch=18,bty = "n")

Hajuvusdiagramm ei näita selget kahanevat seost BMI ja üldkolesterooli taseme vahel ei üldiselt ega ka meeste ja naiste rühmades eraldi.

Kokkuvõte

Antud projekti eesmärgiks oli üldkolesterooli tasemele mõjuvate faktorite leidmine.

Projekti käigus kontrolliti järgmised tööhüpoteesid:

  1. Üldkolesterooli tase on seotud inimese füüsilise aktiivsusega: madalama füüsilise aktiivsusega inimestel üldkolesterooli tase on kõrgem.

  2. Üldkolesterooli tase on seotud diabeedi olemasoluga: kõrgema üldkolesterooli tasemega inimestel on kõrgem diabeedi esinemise oht.

  3. Üldkolesterooli tase on seotud inimese kehamassiindeksiga: kõrgema üldkolesterooli tasemega inimestel on kõrgem kehamassiindeks.

Projekti tulemusena tööhüpoteesid ei leidnud kinnitust: üldkolesterooli tase antud andmestikus ei sõltu inimese füüsilisest aktiivsusest ega diabeedi olemasolust või kehamassiindeksist.

Samas on leitud, et

  • naistel üldkolesterooli tase on keskmiselt kõrgem, kui meestel;

  • nimestel, kellel on dipressioon, keskmine kolesterooli tase on kõrgem;

  • on olemas nõrk kasvav sõltuvus tunnuse “TotChol” tunnustega “Pulse”, “BPDiaAve” ja “SleepHrsNight” ehk inimestel, kellel on kõrgem pulssisagedus, diastoolne vererõhk ja kes rohkem magab, nendel on kolesterooli tase kõrgem.