Ukážka kódu
library(readxl)
library (DT)
dat <- read_xlsx("C:/Users/julka/Desktop/Sleep_Efficiency.xlsx")
datatable(dat, options= list(pageLength=10), caption="Súbor údajov o účinnosti spánku")Rozhodla som sa spracovať Súbor údajov o účinnosti spánku.
Tento dataset obsahuje informácie o skupine respondentov a ich spánkových návykoch. Celkovo bolo sledovaných 452 osôb, čo tvorí relatívne veľký súbor dát, a teda môžeme povedať, že výsledky skúmania budú pomerne objektívne a všeobecné. Každá sledovaná osoba je identifikovaná jedinečným ID a zaznamenáva sa aj jej vek a pohlavie. Informácie sú rozdelené do nasledujúcich stĺpcov:
| Názov stĺpca | Popis |
|---|---|
| ID | jedinečný identifikátor pre každý testovaný subjekt |
| Age | vek testovanej osoby |
| Gender | pohlavie (muž alebo žena) |
| BedTime | čas, kedy testovaná osoba každú noc ide spať |
| Wakeup time | čas, kedy sa testovaná osoba každé ráno zobudí |
| Sleep duration | celkový čas, počas ktorého testovaný subjekt spal (v hodinách) |
| Sleep efficiency | miera podielu času stráveného v posteli ku času spánku |
| REM sleep percentage | percento celkového času spánku stráveného v REM fáze |
| Deep sleep percentage | percento celkového času spánku stráveného v hlbokom spánku |
| Light sleep percentage | percento celkového času spánku stráveného v ľahkom spánku |
| Awakenings | koľkokrát sa testovaná osoba prebudí počas noci |
| Caffeine consumption | množstvo kofeínu spotrebovaného za 24 hodín pred spaním (v mg) |
| Alcohol consumption | množstvo alkoholu skonzumovaného za 24 hodín pred spaním (v unciách) |
| Smoking status | či testovaná osoba fajčí alebo nie |
| Exercise frequency | koľkokrát testovaná osoba cvičí každý týždeň |
Cieľom nášho skúmania je zistiť, ktoré sledované údaje či už negatívne alebo pozitívne ovplyvňujú kvalitu spánku. Konkrétne, medzi sledovanými údajmi sa nachádzajú informácie o množstve užitého kofeínu a alkoholu či o tom, ako často respondent vykonáva nejakú fyzickú aktivitu. Spolu s týmito údajmi budeme sledovať aj dĺžku istých fáz spánku, a zároveň jej koreláciu so životným štýlom.
Najprv dáta načítame do interaktívnej tabuľky, pomocou ktorej sa dokážeme s dátami jednoducho zoznámiť, a teda neskôr ľahšie analyzovať. Vďaka vlastnostiam danej tabuľky vieme filtrovať zobrazenie len tých informácií, ktoré sú pre nás či už podstatné alebo jednoducho zaujímavé.
library(readxl)
library (DT)
dat <- read_xlsx("C:/Users/julka/Desktop/Sleep_Efficiency.xlsx")
datatable(dat, options= list(pageLength=10), caption="Súbor údajov o účinnosti spánku")Medzi základne informácie o respondentoch patrí pohlavie a vek. V nasledujúcich grafoch sa pozrieme na pomer zastúpenia pohlaví a následne zobrazíme vekové rozloženie práve v závislosti od pohlavia.
pocty_hodnot <- table(dat[[3]])
library(ggplot2)
library(gridExtra)
ggplot(data.frame(pocty_hodnot), aes(x = "", y = Freq, fill = names(pocty_hodnot))) +
geom_bar(stat = "identity", alpha=0.6) +
coord_polar(theta = "y") +
ggtitle("Pohlavie") +
labs(fill = "Hodnoty", xlab=FALSE, ylab=FALSE) +
scale_fill_manual(values=c("#f352af", "#5255f3"))Výskumu sa zúčastnil takmer rovnaký počet žien a mužov. V nasledujúcej analýze údajov nebudeme sledovať, či výsledky závisia od pohlavia respondenta alebo nie.
library(ggplot2)
ggplot(dat, aes(x=Age, fill=Gender)) +
geom_histogram( color="#e9ecef", alpha=0.6, position = 'identity') +
labs(title = "Histogram veku respondetov", x = "Vek", y = "Počet") +
scale_fill_manual(values=c("#eb5b5b", "#5271f3")) Z vyššie uvedeného histogramu vidíme, že výskumu sa zúčastnilo najmenej respondetov od 0 do približne 18 rokov a nad 60 rokov. Naopak najviac je žien v strednom veku (25-40 rokov) a mužov v preddôchodkovom veku (50-60 rokov). Tieto pozorovania si overíme výpočtom priemeru a mediánu.
Vzorec na priemerný vek je: \[ x_p= \frac{1}{n} \cdot\ \sum_{i=1}^n x_i \] kde xp je výsledný priemer, n počet prvkov a xi jednotlivé prvky
Postup na výpočet mediánu závisí od toho, či máme párny alebo nepárny počet hodnôt:
data_muzi<- dat[-which(dat$Gender == "Female"), ]
data_zeny<- dat[-which(dat$Gender == "Male"), ]
# Výpočet hodnôt a uloženie do premennej
vysledky_priemer <- round(c( mean(data_zeny$Age), mean(data_muzi$Age)),0)
vysledky_median <- c( median(data_zeny$Age), median(data_muzi$Age))
nazvy <- c("Ženy", "Muži")
# Generovanie tabuľky pomocou kable()
tabulka <- data.frame(Pohlavie = nazvy, Priemer = vysledky_priemer, Medián = vysledky_median)
# Výpis tabuľky v kóde R
knitr::kable(tabulka)| Pohlavie | Priemer | Medián |
|---|---|---|
| Ženy | 37 | 36 |
| Muži | 43 | 47 |
Po overení pozorovaní výpočtom sme naozaj zistili, že tohto výskumu sa zúčastnilo navjviac žien v strednom veku a mužov v preddôchodkom veku.
library(lubridate)
library(ggplot2)
# konvertovanie dátumu a času
dat[[4]] <- ymd_hms(dat[[4]])
# vytvorenie grafu pomocou ggplot2
ggplot(dat, aes(x = format(dat[[4]], "%H:%M"))) +
labs(title = "Čas, kedy idú respondenti spať", x = "Čas", y = "Počet") +
geom_bar(fill="#52f3c5", color="#e9ecef", alpha=0.7)V predchádzajúcom grafe môžeme vidieť, že pri zaspávaní značne prevláda čas 00:00. Po polnoci je rozloženie už veľmi podobné a nevidíme tam žiadne výrazné výchylky.
library(lubridate)
library(ggplot2)
# konvertovanie dátumu a času
dat[[5]] <- ymd_hms(dat[[5]])
# vytvorenie grafu pomocou ggplot2
ggplot(dat, aes(x = format(dat[[5]], "%H:%M"))) +
labs(title = "Čas, kedy respondenti vstávaju", x = "Čas", y = "Počet") +
geom_bar(fill="#bb52f3", color="#e9ecef", alpha=0.7)Respondenti najčastejšie stávajú o 5:00, 7:00 alebo o 9:00 hodine.
Tieto zistené informácie ideme bližšie analyzovať. Zaujíma nás o aké vekové kategórie sa jedná. Myslíme si, že neskoro večer idú spať predovšetkým študenti, teda veková kategória 20-25 rokov. Skoro ráno budú vstávať ľudia do práce, teda respondenti v produktívnom veku. V najbližších výpočtoch ideme zisťovať, či sú naše predikcie správne alebo nie.
library(stringr)
# vytvorenie vektoru obsahujúceho indexy riadkov, kde sa nachádza čas 00:00:00 UTC
indexy <- str_detect(dat$Bedtime, "00:00:00")
# filtrovanie dát podľa indexov
data_filtrovanie <- dat[indexy, ]
# Výpočet hodnôt a uloženie do premennej
vysledky_priemer <- median(data_filtrovanie$Age)
vysledky_median <- round(mean(data_filtrovanie$Age),0)
# Generovanie tabuľky pomocou kable()
tabulka <- data.frame(Priemer = vysledky_priemer, Medián = vysledky_median)
# Výpis tabuľky v kóde R
knitr::kable(tabulka, caption = "Respondenti, ktorí idú spať o 0:00")| Priemer | Medián |
|---|---|
| 30 | 37 |
library(stringr)
# vytvorenie vektoru obsahujúceho indexy riadkov, kde sa nachádza čas 05:00:00 UTC
indexy <- str_detect(dat$`Wakeup time`, "05:00:00")
# filtrovanie dát podľa indexov
data_filtrovanie <- dat[indexy, ]
# Výpočet hodnôt a uloženie do premennej
vysledky_priemer <- median(data_filtrovanie$Age)
vysledky_median <- round(mean(data_filtrovanie$Age),0)
# Generovanie tabuľky pomocou kable()
tabulka <- data.frame(Priemer = vysledky_priemer, Medián = vysledky_median)
# Výpis tabuľky v kóde R
knitr::kable(tabulka, caption = "Respondenti, ktorí vstávajú o 5:00")| Priemer | Medián |
|---|---|
| 43 | 41 |
library(ggplot2)
ggplot(dat, aes(x=`Sleep duration` )) +
geom_bar( color="#e9ecef", alpha=0.6, fill="#f35277") +
labs(title = "Histogram času spánku", x = "Čas (v hodinách)", y ="Počet") Najviac ľudí spí 7 hodín, no tento čas sa už ráta ako hraničné minumum. Dostatok spánku, čo je viac ako 8 hodín, má percentuálne menej respondentov.
My sa budeme zaujímať respodentami, ktorí spia menej ako 7 hodín a pomocou nám dostupným dát, hľadať možné príčiny tejto čiastočnej spánkovej deprivácie.
Vďaka pestrým informáciam, ktoré sa nachádzajú v nami sledovanom súbore dát, vieme hľadať možné príčiny či súvislosti s nedostatočnou dĺžkou spánku. Do nasledujúcich grafov si teda zobrazíme dáta, ktoré by mohli súvisieť s nedostatkom spánku.
library(gridExtra)
library(ggplot2)
riadky<- dat[[6]]<7
data_filtrovanie <- dat[riadky, ]
pocty_hodnot <- table(data_filtrovanie[[14]])
# graf 1
gg1 <- ggplot(data.frame(pocty_hodnot), aes(x = "", y = Freq, fill = names(pocty_hodnot))) +
geom_bar(stat = "identity", alpha=0.6) +
coord_polar(theta = "y") +
ggtitle("Status fajčiara") +
labs(fill = "Hodnoty") +
scale_fill_manual(values=c("#f35952", "#52f359"))
# graf 2
gg2 <- ggplot(data_filtrovanie, aes(x=data_filtrovanie[[12]])) +
geom_bar(color="#e9ecef", alpha=0.6, fill="#f3af52") +
labs(title = "Histogram množstva kofeínu", x = "Množstvo (v mg)", y ="Počet")
# graf 3
gg3 <- ggplot(data_filtrovanie, aes(x=data_filtrovanie[[13]])) +
geom_bar(color="#e9ecef", alpha=0.6, fill="#f352db") +
labs(title = "Histogram množstva alkoholu", x = "Množstvo (v oz)", y ="Počet")
# graf 4
gg4 <- ggplot(data_filtrovanie, aes(x=data_filtrovanie[[11]])) +
geom_bar(color="#e9ecef", alpha=0.6, fill="#52acf3") +
labs(title = "Histogram počtu zobudení", x = "Počet zobudení", y ="Počet")
# usporiadanie grafov do 2 riadkov a 2 stlpcov
grid.arrange(gg1, gg2, gg3, gg4, ncol=2, nrow=2)Také isté grafy vykreslíme aj pre respondentov s dostatkom spánku, t. j. pre tých, ktorí spia dlhšie ako 7 hodín.
library(gridExtra)
library(ggplot2)
riadky1<- dat[[6]]>7
data_filtrovanie1 <- dat[riadky1, ]
pocty_hodnot1 <- table(data_filtrovanie1[[14]])
# graf 1
gg1 <- ggplot(data.frame(pocty_hodnot1), aes(x = "", y = Freq, fill = names(pocty_hodnot1))) +
geom_bar(stat = "identity", alpha=0.6) +
coord_polar(theta = "y") +
ggtitle("Status fajčiara") +
labs(fill = "Hodnoty") +
scale_fill_manual(values=c("#f37952", "#7ef352"))
# graf 2
gg2 <- ggplot(data_filtrovanie1, aes(x=data_filtrovanie1[[12]])) +
geom_bar(color="#e9ecef", alpha=0.6, fill="#5952f3") +
labs(title = "Histogram množstva kofeínu", x = "Množstvo (v mg)", y ="Počet")
# graf 3
gg3 <- ggplot(data_filtrovanie1, aes(x=data_filtrovanie1[[13]])) +
geom_bar(color="#e9ecef", alpha=0.6, fill="#52dbf3") +
labs(title = "Histogram množstva alkoholu", x = "Množstvo (v oz)", y ="Počet")
# graf 4
gg4 <- ggplot(data_filtrovanie1, aes(x=data_filtrovanie1[[11]])) +
geom_bar(color="#e9ecef", alpha=0.6, fill="#f3e752") +
labs(title = "Histogram počtu zobudení", x = "Počet zobudení", y ="Počet")
# usporiadanie grafov do 2 riadkov a 2 stlpcov
grid.arrange(gg1, gg2, gg3, gg4, ncol=2, nrow=2)Teraz vieme jednoducho porovnať, či dané dáta korelujú s dĺžkou spánku. Dokážeme spozorovať nasledujúce informácie:
Takmer polovica respondentov s nedostatkom spánku označila hodnotu “Som fajčiar”. V druhej skupine grafov je takýchto ľudí percentuálne o dosť menej. Vo viacerých štúdiach a vedeckých článkoch bolo dokázané, že nikotín negatívne ovplyvňuje kvalitu spánku. Presnejšie vplýva na celkovú dĺžku spánku a taktiež skracuje dĺžku trvania hlbokej fázy.
Množstvo kofeínu je v oboch prípadoch približne rovnako zastúpene. Avšak vieme si všimnúť, že ľudí s nulovou konzumáciou kofeínu je percentuálne viacej v skupine respondentov s dostatkom spánku.
V prvej skupine grafov nie je veľké zastúpenie kategórie ľudí, ktorí sa cez noc ani raz nezobudili. V druhej skupine grafov je toto zastúpenie vyššie.
Užite alkoholu v danej situácii výrazne nekoreluje.
Podľa doteraz už vykonaných výskumov a štúdií vieme, že nikotín skracuje dĺžku trvania hlbokej fázy spánku. V tejto kapitole ideme analyzovať, či platia tieto informácie aj v našom súbore dát.
library(ggplot2)
library(gridExtra)
riadky<- dat[[14]]=="Yes"
data_filtrovanie <- dat[riadky, ]
graf1<-ggplot(data_filtrovanie, aes(x=data_filtrovanie[[9]])) +
geom_bar(color="#e9ecef", alpha=0.6, fill="#b152f3") +
labs(title = "Fajčiari", x = "Počet percent", y = "Počet")
riadky1<- dat[[14]]=="No"
data_filtrovanie1 <- dat[riadky1, ]
graf2<-ggplot(data_filtrovanie1, aes(x=data_filtrovanie1[[9]])) +
geom_bar(color="#e9ecef", alpha=0.6, fill="#89f352") +
labs(title = "Nefajčiari", x = "Počet percent", y = "Počet")
grid.arrange(graf1, graf2, ncol=2)Na prvý pohľad vidíme istú koreláciu dĺžky hlbokého spánku závisi od užívanie nikotínu, no pozorovanie ideme overiť výpočtom priemeru tejto hodnoty pre oba prípady.
# Výpočet hodnôt a uloženie do premennej
fajciari <- round(mean(data_filtrovanie[[9]]),2)
nefajciari <- round(mean(data_filtrovanie1[[9]]),2)
# Generovanie tabuľky pomocou kable()
tabulka <- data.frame(Fajčiari = fajciari, Nefajčiari = nefajciari)
# Výpis tabuľky v kóde R
knitr::kable(tabulka, caption="Vplyv užívania nikotínu na priemerné percento dĺžky hlbokého spánku")| Fajčiari | Nefajčiari |
|---|---|
| 47.89 | 55.37 |
Naozaj vidíme, že fajčenie negatívne oplyvňuje dĺžku hlbokého spánku, a teda môžeme potvrdiť pravdivosť doterajších výskumov.
Cvičenie prispieva k pokojnému a zdravému spánku. Fyzická aktivita predlžuje čas strávený v hlbokom spánku a ten je kľúčový pre regeneráciu tela. Hlboký spánok pomáha posilňovať imunitu, podporuje zdravie srdca a reguluje stres a úzkosť (Mathhew Walker, Phd. 2017).
Ideme skúmať, či respodenti s krátkou hlbokou fázou spánku naozaj vykonávajú menej fyzickej aktivity, ako tí, čo majú spánok kvalitný. Vo všeobecnosti by mal hlboký spánok tvoriť aspoň 30 % celkového času spánku, práve preto rozdelíme respodentov do dvoch skupín: tí čo majú hlboký spánok percentuálne kratší a tí, čo ho majú dlhší.
library(ggplot2)
library(gridExtra)
riadky<- dat[[9]]<30
data_filtrovanie <- dat[riadky, ]
graf3<-ggplot(data_filtrovanie, aes(x=data_filtrovanie[[15]])) +
geom_bar(color="#e9ecef", alpha=0.6, fill="#f3527e") +
labs(title = "Hlboký spánok pod 30%", x = "Počet cvičení do týždňa", y = "Počet")
riadky1<- dat[[9]]>30
data_filtrovanie1 <- dat[riadky1, ]
graf4<-ggplot(data_filtrovanie1, aes(x=data_filtrovanie1[[15]])) +
geom_bar(color="#e9ecef", alpha=0.6, fill="#52dbf3") +
labs(title = "Hlboký spánok nad 30%", x = "Počet cvičení do týždňa", y = "Počet")
grid.arrange(graf3, graf4, ncol=2)Vidíme, že fyzická aktivita naozaj vplýva na kvalitu spánku. Po porovnaní grafov vieme jednoducho usúdiť, že ľudi, ktorí cvičia častejšie majú hlboký spánok dlhší, ako tí čo cvičia menej alebo necvičia vôbec.
Vďaka predchádzajúcim grafom a výpočtom sme zistili, že čiastočná spánkova deprivácia koreluje so životným štýlom, ktorý vedú jednotliví respodenti. Vo výskume mali výsledky lepšie tí ľudia, ktorí nefajčili, neužívali kofeín či vykonávali pravidelne fyzickú aktivitu. Menej často sa cez noc budili a mali výrazne dlhší spánok. Môžeme povedať, že náš cieľ bol splnený. Naozaj sme zistili čo a ako vplýva na kvalitu spánku.