Author: Jean-Etienne Poirrier

Trend in Coronavirus cases in Maryland, USA (2)

Following up on my previous post, here are updated trends in Coronavirus cases in Maryland (USA), the state I live in. I am writing a second post because the Maryland Department of Health (MDH) updated its dashboard with way more data than before (more on this below). Before continuing, please note that the same disclaimer as in my previous post applies here (in short: read the CDC and MDH websites for official information).

The new type of data that the MDH released is: the total number of hospitalizations and releases, more granular age categories and the number of cases by sex. And on March 28, we saw the return of the number of negative tests!

Here are the plots that I will try to update daily (last update: March 28, 2020):

Trend in total Coronavirus cases in Maryland, USA, 2020 - up to March 28, 2020
Trend in Coronavirus cases in Maryland counties, USA, 2020 - up to March 28, 2020
Trend in Coronavirus cases by age groups in Maryland, USA, 2020 - up to March 28, 2020

On March 28, MDH reintroduced the total number of negative cases (11,516). Having the total number of cases done is important because it allows to understand better the disease dynamic than just the number of positive cases …

Suppose you have 992 positive cases (like on March 28) but no total number of cases tested. It’s a lot – or maybe it’s not much, who knows? It depends on how many were tested. Up to that day, imagine that only 1,000 people were tested – this becomes a lot of positive cases because 99% of people tested turned out to be positive. Now, MDH said they actually tested 12,508 people – this means that 7.9% of people tested turn out to be positive. Given the few tests available, testing is reserved for people who are believed to be at risk (more or less ; read the MDH testing FAQ here). So less than 10% of people tested (thought to be at risk) turn out to be actually infected. That’s good!

End of March, the MDH also released more granular data on the age categories of the people tested positive. Age groups 30-39 and 40-49 have most cases. Therefore, mostly adults are impacted, probably among people working (who are not or can’t do social distancing). Given hospitalization and death rates are lower in these age groups than in older adults (most hospitalizations, ICU admissions and deaths are occurred among adults aged ≥65 years with the highest percentage of severe outcomes among persons aged ≥85 years, according to the March 26 CDC paper), we’ll hopefully see less dreadful cases in adults than in older people.

To be continued …

All the data and scripts are on a Github repository if you want to play.

Trend in Coronavirus cases in Maryland, USA

Disclaimer: Although I work in infectious diseases, I’m not a specialist in Coronavirus. For the most up-to-date information on Coronavirus in the US, please visit the CDC website. For the most up-to-date information on Coronavirus in Maryland, please visit the Maryland Department of Health. That being said, now you can proceed at your own risk 😉

This post was updated by another one on March 28. Read it here.

Living in Maryland during the Coronavirus pandemic, I am interested to follow the number of cases that my state has so far. The Maryland Department of Health (MDH) has now a dashboard representing the count of positive cases and the breakdown by different counties. It’s nice but it only includes the latest update and the past trend is forgotten. So I decided to plot the number of cases with whatever numbers is given on the dashboard.

Here are the plots that I will try to update daily (last update: March 25, 2020; after that, I continued to update trends on this post):

Trend in total Coronavirus cases in Maryland, USA, 2020 - up to March 25, 2020
Trend in Coronavirus cases in Maryland counties, USA, 2020 - up to March 25, 2020
Trend in Coronavirus cases by age groups in Maryland, USA, 2020 - up to March 25, 2020

Now, a bit of background … I started this as a simple exercise with no other intention than plotting the trend of cases tested positive since Maryland started reporting cases (March 9, 2020). After a few days, it stopped reporting the total of negative testing done daily. The reason was: “Now that COVID-19 testing has expanded and is available through commercial laboratories, MDH is no longer reporting negative and pending numbers of tests in Maryland. All positive results obtained by commercial laboratories are reported to MDH and included in the confirmed cases count“. Although the reason is certainly understandable, this doesn’t allow us to follow the evolution of testing in general in the state. Testing and the availability of tests is a sensitive topic in the US …

On March 15, the MDH started to report the number of positive tests in each county. Initially, only 8 (of 24) states had cases. On March 16, the total count for Anne Arundel county dropped from 2 to 1. I don’t know the reason.

On March 17, MDH reported an increase in positive cases detected higher than previously. This can be due to a lot of things (increase in testing, increase in cases per se, …). Frederick County reported its first case.

On March 19, MDH unfortunately reported the first death due to Coronavirus. The total number of positive tests reported is now above 100. Allegany County and Calvert County reported their first positive tests. Today, I also started to split my graph in 3: one for the total number of cases, one for the cases by counties and the last one by age group. This reporting by age group was started on March 17 by MDH. We see the burden is mainly in adults younger than 65 – but this may be simply due to higher level of testing in this population (again, without the number of tests done, you can’t really conclude anything).

On March 20, first cases appeared in Wicomico County and Worcester County. It seems that the number of positive tests is increasing faster (again, without the total number of tests done, you can’t really conclude anything).

On March 23, we see that all counties, except Allegany, Kent and Dorchester, have cases now. I changed the y-axis of the total number of cases to a log scale (therefore it gives a “flatter” look to the curve). But we are still in a rapidly increasing phase of the disease …

On March 24, we now have more than 300 positive tests, among which 107 in Montgomery County alone.

I continued to update the different trends in another post here.

All the data and scripts are on a Github repository if you want to play.

Programming Merit Badge presentation (2020)

This year, my elder son graduated from Cub Scouts to Scouts (time flies very fast!) and I signed up to be a counselor for Programming (and Public Health) in his troop.

Today, February 1st, 2020, was Merit Badge Day and I taught 6 scouts what is programming and the basics of programming in Python (and Scratch – but they all knew that already) (and nobody chose Public Health …).

I am now sharing my presentation and a few tips and tricks. Feel free to re-use, improve and give me any feedback to make it better.

Here are the presentation files (they are also on GitHub):

I want to highlight that some content was taken from other counselors who made their presentations available online too:

The Boys Life magazine has also a dedicated page with a lot of resources for this Merit Badge. One of the nice features is that scouts can see the same simple program coded in different programming languages, allowing to compare them. They can be the basis for some of their requirements too.

It was the first time I gave this Merit Badge and having 6 scouts is a good number. You’ll face some issues helping them start programming, especially if all of them are new to programming. Also, it’s interesting to have scouts of approximately the same age: they will have similar reactions and they will be at similar level of programming. I had 5 6-graders and one older scout: the older scout had already a higher level of programming (and he kindly helped younger scouts). Also, big mistake from first-time counselor: do not give them the WiFi password at the beginning of the session! 🙂 Ask them to pre-install Python (if they bring their Windows laptop) and only allow them on internet when coding … You’ll thank me later 😉

I went through Safety, History of programming and Programming today in about 1 hour and 20 minutes, which was a bit too long (despite the good interaction and participation).

Then I programmed with them a converter between degree Fahrenheit to degree Celsius. Typing with them and running the script line by line was a good way for them to understand basic programming concepts like variables, case-sensitivity, functions and branching. The files we used as examples and code are on GitHub. From no knowledge of Python to this temperature converter: about 1 hour.

Finally, I covered Intellectual Property and Career in 10-15 minutes. That’s a little bit short. We had no time to enter into too many details. But scouts will have the additional pointers at the end of the slides and this will be a good introduction already.

Final thought? It’s time consuming to prepare all this material (and I thank the other counselors who shared their material!) but it’s also very rewarding to see children (well, teens) discover programming! I encourage you to share things you like as Scout Counselor!

283 tweets about flu today

I wanted to use the TwitteR package for R since a long time, I tried but didn’t do much of it. Today I found a few minutes, followed simple recipes (I admit), and looked at the number of tweets about flu today (November 13, 2018). Result: 283 tweets in English (I wanted to focus on the USA but, for some reason, I couldn’t … yet!). That’s not a lot. But remember we are only at the beginning of the influenza season 2018-2019 in the Northern hemisphere.

After some very basic cleaning, here are the words most used: flu, influenza (obviously: I was looking for them!), rt (note to self: remove this indication of a retweet), vaccine, health and get. As I mentioned: we are at the beginning of the flu season in the Northern hemisphere, it’s still time to get vaccinated and protected against flu!

1811130-wordFreq

Now of course, I wanted a word cloud 😉 Here it is:

181113-wordcloud

It’s basically the same graph as above. You don’t get the count but you get the feeling of how important each word is (and you get more words).

I also recently read the recent WIRED article about the need of less stats and more stories about the success of vaccines. And I was wondering if, by following tweets and people on Twitter, tweeting about flu, we could reconstruct stories about influenza and vaccination against it. I’ll try to dedicate a few minutes every now and then, during this season, to this. In the meantime, if you have additional ideas, don’t hesitate to send them to me, comment below, or contact me … on Twitter, obviously! (I’m @jepoirrier)

Time commuting in Belgium

DISO1 – Data I Sit On, episode 1. This post is the first of a series of a few exploring data I collected in the past and that I found interesting to look at again … (I already posted about data I collected, see the Quantified Self tag on this blog)

Life is short and full of different experiences. One of the experiences I don’t specifically enjoy but is integral part of life is commuting. Although I tried to minimize commuting (mainly by choosing home close to the office) and benefit(ed) from good work conditions (flexible working hours, home working, etc.), a big change occurred when I took a new opportunity, in 2015, to work in the Belgian capital, Brussels.

Debian-lover-car-jepoirrier-on-flickr
Traffic jam in Brussels – one of my pictures on Flickr (CC-by-sa)

From where I lived at that time, using public transportation was not a viable option, unfortunately: it implied roughly 2 hours to go one way and changing at least 2 times between bus, train and metro. Anyway Belgium is know for having lots of cars and I benefited from a company car. Since some time, I’m also interested in Quantitative Self so I started collecting data about my daily commute.

What I try to see is the seasonality of commuting (I would initially expect shorter commute time during school breaks), the differences between leaving for work after driving children to school or without driving them, … There is also an extensive literature on the impact of commuting on the quality of life …

So, how did I do that?

The route usually taken, between my home then (in Wavre) and my office then (in Brussels, both in Belgium), is 28km long and the fastest I ever saw on Google maps to drive this distance is about 20-25 minutes.

I took note of the following elements in whatever default note-taking app is there in my phone at that moment (Keep on Android, Notes on iOS). The first field in each row is the date in a %y%m%d format, i.e. year, month and day of month as zero-padded decimal numbers, 2 digits only for each. The second field is the start time in a %H%M format, i.e. hours (24-hour clock) and minutes also as zero-padded decimal numbers, 2 digits only for each. Start time is defined when I enter my car at home, in the morning. The third field is the arrival time (same format as start time), defined as when I stop the engine at work. The fourth and fifth fields are start and arrival times when I go back home, defined and formatted the same way, mutatis mutandis. Any missed start/arrival times is marked as “na” or “NA”. It corresponds, for instance, at times when I leave the office but I stop to meet a client (or more prosaically, to do grocery shopping) before coming back home. I may have missed one or two whole days at max. The data is on Github.

On a daily basis, the little game is to try to figure out which lane is the fastest, if there is a pattern in the journey that makes it faster (I think there is). However, there are so many little things to track in this game that I did not track these small differences. The journey is assumed to take more or less the same route.

At the end, the complete log is saved on my computer and analysed in R (version 3.3.2). The typical measures I’m interested in are departure/arrival times over time, commute duration over time, commute duration per month or per day of the week or per season, … for both the morning and afternoon journeys if applicable. Some funny measures should be the earliest I left for work, the latest I arrived at work, the earliest I left work, the latest I left work, the shortest journey ever (to compare to Google estimate) and the longest journey ever …

An unintended measure here is the amount of time actually spent in the office (on a side note, this is different than productivity – but I didn’t find any unambiguous or flawless measure of productivity so far …). Some interesting variations could be to see the average and median duration of my work days, the shortest day or longest day I had, … (I don’t know if my former employer would be happy or angry to see these results 😉 but note this doesn’t take into account the numerous times I worked from home, even in evenings after having worked the whole day in the office …).

In theory, the fastest I could go is at an average 84km/h (28km in 20 minutes, according to Google Maps, so this is according to traffic, not maximum speed limits). In practice, this is a whole different story …

In a bit more than a year of collected data:

  • the earliest I left home was 6.11 and the latest 10.11;
  • consequently, the earlier I arrived at work was 6.32 and the latest 10.36;
  • the shortest trip to work was 18 minutes and the longest one was 160 minutes (it was on March, 22, 2016, the day of Brussels airport bombing because the office is close to the airport – I still remember);
  • the earliest I left work was 12.34 (I assume half-day of holidays) and the latest 21.24 (I assume lots of work then);
  • consequently, the earlier I arrived back home was 12.59 and the latest 21.43;
  • the shortest trip back home was 7 minutes (there should be some input error here!!!) and the longest trip was 128 minutes (nothing surprising, here, with Brussels traffic jams).

Finally, the shortest stay in office was 242 minutes (4 hours and 2 minutes) – it was that half-day of holidays. And the longest stay in office was 754 minutes (12 hours and 34 minutes).

As always, these things are nice when rendered as graphs …

180215-BxlAllTrafficPoints

A first note it that none of these graphs show any seasonality in the data. At first, I thought I would go faster during school holidays – but it was more a feeling than anything else, as the data show. And although the time at work varied widely over time, the average time spent at work seems to be pretty constant over the year, I was surprised by this:

180215-BxlTimeSpentAtWork

Finally, the time spent in car depending on the departure time is interesting:

180215-BxlTimeSpentInCar

Going to work was clearly split into 2 periods: leaving home (“Start Time”) before 8.30 and after 8.30. That’s because either I went early (and avoided the morning rush hour) or I drove the kids to school and drove to work at the end of rush hour. But although I tried to minimize the journey, the journey after driving the kids to school was still taking more time.

For the evening, going home became a shorter trip if I was able to delay it. And the later I come back, the shorter the trip. (However, if I didn’t drive the kids to school in the morning, the deal is that I would pick them up in the afternoon – fortunately, afterschool care is cheap in Belgium).

All this to come to the quality of life … I didn’t measure anything related to quality of life. I just remember that the first few weeks were very tiring. However, this commuting factor should be added to other tiring factors: learning a new job, adjusting to a new environment, etc. But there is a body of scientific work looking at the quality of life of commuting (I really like this paper as a starter [1], probably because it was published during that period): fatigue, stress, reduced sleep time, heart disease, absenteeism, BMI (weight), … are all linked – in a way – to commuting (either driving or just sitting in public transport).

[1] Künn‐Nelen, A. (2016) Does Commuting Affect Health? Health Econ., 25: 984–1004. doi: 10.1002/hec.3199

And a last point: privacy. This data is from 2015-2016. People who know me (even former colleagues!) know where I worked. And even without knowing me, you know when I leave home, when I leave the office, my pattern of organization, etc. Do I want that? Part of the answer is that I only post this data now, 2-3 years later. On the other hand, here is another free, small dataset!

Next steps? I’m continuing to track my journeys to work, even now we moved to the USA. For privacy reasons, I will not publish those data immediately. But it will be interesting, later, to compare the different patterns and try to understand at least some differences … It would also be interesting to give more time to this small experiment and, for instance, try to capture any impact on mood, productivity, … But this would become a whole different story!

Increasing certainty in flu vaccine effectiveness

According to CDC data, studies are getting better at estimating the influenza vaccine effectiveness.

With the 2017-2018 flu season still going on in the USA, there are already some indication that vaccines have some effectiveness (although its target strains were mismatched). The CDC reports how it measures vaccine effectiveness here and I was interested in their confidence intervals (the interval that takes into account uncertainties to extrapolate to the broader, unknown population).

Here is the same graph as on the CDC page, but with confidence interval:

180223-Flu-vaccine-effectiveness-USA-influenza-season
* 2016-2017 VE are still estimates. ** 2017-2018 interim early estimates may differ from final end-of-season estimates.

You can already notice it above but the graph below confirms that the confidence interval becomes narrower with the various flu season. This can come from various reasons. One obvious reason is that early seasons (< 2007-08) had a very small sample size (< 1,000). But overall, we can notice a gain of certainty around the effectiveness (the lower the line below, the more certainty).

180223-Flu-vaccine-effectiveness-USA-confidence-interval-influenza-season
* 2016-2017 VE are still estimates. ** 2017-2018 interim early estimates may differ from final end-of-season estimates.

As usual, the dataset (and code to generate the graphs above) are on my Github repo.

Euthanasia in the Netherlands and Belgium, 1990-2015

While parsing the general literature, I found this paper from van der Heide et al. (2017) giving some numbers about end-of-life decisions in the Netherlands these past 25 years. I was wondering if one could see similar evolution in Belgium. And I didn’t have to look very far: van der Heide cited another NEJM paper with Belgian numbers (Chambaere et al., 2015 ; an attentive reader will notice “Belgian” data is “only” about Flanders, not the whole Belgium).

If you put together the data about euthanasia itself (not counting other type of end-of-life assistance), you obtain approximately the same proportion and evolution:

euthanasia_NL_BE

I’m not aware of more recent Belgian data using the same methodology (i.e. physician interviews). The Belgian Commission fédérale de Contrôle et d’Évaluation de l’Euthanasie (CFCEE) presented its last report in October 2016. This report contained numbers for years 2014 and 2015. But these numbers were related to euthanasia that were officially requested (and granted) by the Commission. For instance, the Commission granted 1 928 euthanasia for a total of 104 723 deaths in Belgium in 2014 (i.e. 1.84% ; deaths in Belgium in the Open Data repository). If we focus only on requests written in Flemish, we find 2.59% of euthanasia in 2014 (1 523 euthanasia for a total of 58 858 deaths) (note: Flemish is the language spoken in Flanders – the region targeted by interviews in the Chambaere et al. paper – but requests in Flemish might have originated from other regions). One might have found different numbers if one would have used interviews like van der Heide or Chambaere.

Dataset (note there is more data in a Wikipedia article)