Health Metrics: Some Quick Data Runs
In my previous post, I talked about quick and easy way to track physical health. In this post, I share some ways to slice and analyze that data.
General Trends in Health
Using original (not detrended) data, I can eyeball for potential trends in my physical health. There seems to be some cyclical patterns so I definitely need to look into time series analysis.
Probability of Getting Sick
If I define “sick” as any instance when my health score was 3 or less, I then can look at the probabilities of being sick across dayparts and days of the week:
# we define "sick" using original raw scores:
mutate(sick=ifelse(Health <=3,1,0)) %>%
# DATA probability of being sick by daypart and weekdays
sickDpWkd<-daypartdata %>%
select(daypart,wkday,sick) %>%
group_by(daypart,wkday) %>%
summarise_all(funs(mean)) %>%
ungroup() %>%
mutate(sick=round(100*sick,1)) %>%
mutate(daypart=factor(daypart,levels=c("AM","DA","EV"))) %>%
mutate(wkday=factor(wkday,levels=c("Mon","Tue","Wed","Thu","Fri","Sat","Sun")))
# CHART probability of sickness by daypart and weekday
ggplot(sickDpWkd,
aes(x=wkday,
y=sick)) +
geom_col(color="red",
fill="red",
width=.1,
size = 1) +
labs (x = "Weekday",
y = "",
title = "Probability of Being Sick: Daypart x Day of the Week",
subtitle = "") +
theme_minimal() +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank())+
ylim(0,50)+
facet_wrap(~daypart,nrow=3)
ggsave("./IMAGES/HealthSickByDpWkd.png")
The probability of me being sick seems to be higherst on Tuesdays and Fridays evenings:
Symptoms and Ailments Breakdown
I can also look at the frequency of symptoms and their combinations:
library(UpSetR)
symptoms<-dailydata %>%
select(dmy,headache:eyes) %>%
mutate(combo=rowSums(.[,-1]))
symptoms<-as.data.frame(symptoms)
upset(symptoms,
sets=c("headache","cough","congestion","sorethroat","chills","bloating","backpain",
"armpain","eyes","footpain","acidreflux"),
order.by="freq",sets.bar.color = "red",matrix.color="red",show.numbers=FALSE)
ggsave("./IMAGES/HealthSymptoms.png")
Quantifying Severity of Symptoms
By regressing the symptoms and ailments on the overall health score, I can estimate their “severity” in a sense of how much they affect my health:
library(broom)
# relationship between Health and Symptoms
SymptomsXHealth<-hourlydata %>%
select(health,headache:eyes)
mod<-lm(health~.,data=SymptomsXHealth)
tidy(mod)
parameters <- tidy(mod) %>%
mutate(
low = estimate - 1.96*std.error,
high = estimate + 1.96*std.error
) %>%
rename(symptom=term,severity=estimate)
ggplot(parameters, aes(severity, symptom, xmin = low, xmax = high, height = 0)) +
geom_point() +
geom_errorbarh()+
theme_minimal()
ggsave("./IMAGES/SymptomsSeverity.png")
It looks like back pain, dizziness, sore throat, headache, chills and allergy had the highest negative impact on my overall health:
Coming next: predictive models of my health and symptoms, using sleep and weather data.