A couple of months back, I presented what I now realise is a piece of bad data analysis. At the outset, there is nothing special about this – I present bad data analysis all the time at work. In fact, I may even argue that as a head of Data Science and BI, I’m entitled to do this. Anyway, this is not about work.
In that piece, I had looked at some of the data I’ve been diligently collecting about myself for over a year, correlated it with the data collected through my Apple Watch, and found a correlation that on days I drank alcohol, my sleeping heart rate average was higher.
And so I had concluded that alcohol is bad for me. Then again, I’m an experimenter so I didn’t let that stop me from having alcohol altogether. In fact, if I look at my data, the frequency of having alcohol actually went up after my previous blog post, though for a very different reason.
However, having written this blog post, every time I drank, I would check my sleeping heart rate the next day. Most days it seemed “normal”. No spike due to the alcohol. I decided it merited more investigation – which I finished yesterday.
First, the anecdotal evidence – what kind of alcohol I have matters. Wine and scotch have very little impact on my sleep or heart rate (last year with my Ultrahuman patch I’d figured that they had very little impact on blood sugar as well). Beer, on the other hand, has a significant (negative) impact on heart rate (I normally don’t drink anything else).
Unfortunately this data point (what kind of alcohol I drank or how much I drank) I don’t capture in my daily log. So it is impossible to analyse it scientifically.
Anecdotally I started noticing another thing – all the big spikes I had reported in my previous blogpost on the topic were on days when I kept drinking (usually with others) and then had dinner very late. Could late dinner be the cause of my elevated heart rate? Again, in the days after my previous blogpost, I would notice that late dinners would lead to elevated sleeping heart rates (even if I hadn’t had alcohol that day). Looking at my nightly heart rate graph, I could see that the heart rate on these days would be elevated in the early part of my sleep.
The good news is this (dinner time) is a data point I regularly capture. So when I finally got down to revisiting the analysis yesterday, I had a LOT of data to work with. I won’t go into the intricacies of the analysis (and all the negative results) here. But here are the key insights.
If I regress my resting heart rate against the binary of whether I had alcohol the previous day, I get a significant regression, with a R^2 of 6.1% (i.e. whether I had alcohol the previous day or not explains 6.1% of the variance in my sleeping heart rate). If I have had alcohol the previous day, my sleeping heart rate is higher by about 2 beats per minute on average.
Call: lm(formula = HR ~ Alcohol, data = .) Residuals: Min 1Q Median 3Q Max -9.6523 -2.6349 -0.3849 2.0314 17.5477 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 69.4849 0.3843 180.793 < 2e-16 *** AlcoholYes 2.1674 0.6234 3.477 0.000645 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 3.957 on 169 degrees of freedom Multiple R-squared: 0.06676, Adjusted R-squared: 0.06123 F-statistic: 12.09 on 1 and 169 DF, p-value: 0.000645
Then I regressed my resting heart rate on dinner time (expressed in hours) alone. Again a significant regression but with a much higher R^2 of 9.7%. So what time I have dinner explains a lot more of the variance in my resting heart rate than whether I’ve had alcohol. And each hour later I have my dinner, my sleeping heart rate that night goes up by 0.8 bpm.
Call: lm(formula = HR ~ Dinner, data = .) Residuals: Min 1Q Median 3Q Max -7.6047 -2.4551 -0.0042 2.0453 16.7891 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 54.7719 3.5540 15.411 < 2e-16 *** Dinner 0.8018 0.1828 4.387 2.02e-05 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 3.881 on 169 degrees of freedom Multiple R-squared: 0.1022, Adjusted R-squared: 0.09693 F-statistic: 19.25 on 1 and 169 DF, p-value: 2.017e-05
Finally, for the sake of completeness, I regressed with both. The interesting thing is the adjusted R^2 pretty much added up – giving me > 16% now (so effectively the two (dinner time and alcohol) are uncorrelated). The coefficients are pretty much the same once again.
Call: lm(formula = HR ~ Dinner, data = .) Residuals: Min 1Q Median 3Q Max -7.6047 -2.4551 -0.0042 2.0453 16.7891 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 54.7719 3.5540 15.411 < 2e-16 *** Dinner 0.8018 0.1828 4.387 2.02e-05 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 3.881 on 169 degrees of freedom Multiple R-squared: 0.1022, Adjusted R-squared: 0.09693 F-statistic: 19.25 on 1 and 169 DF, p-value: 2.017e-05
So the takeaway is simple – alcohol might be okay, but have dinner at my regular time (~ 6pm). Also – if I’m going out drinking, I better finish my dinner and go. And no – having beer won’t work – it is going to be another dinner in itself. So stick to wine or scotch.
I must mention things I analysed against and didn’t find significant – whether I have coffee, what time I sleep, the time gap between dinner time and sleep time – all of these have no impact on my resting heart rate. All that matters is alcohol and when I have dinner.
And the last one is something I should never compromise on.