's Avatar

@appliedepi.bsky.social

Improving Applied Epidemiology worldwide. Increasing the knowledge and resources of Epidemiologists no matter who or where they are. Creator of the EpiRHandbook: https://epirhandbook.com/

374 Followers  |  28 Following  |  70 Posts  |  Joined: 11.11.2024  |  1.9894

Latest posts by appliedepi.bsky.social on Bluesky

join – Applied Epi

We're hiring!

Applied Epi is looking for a capable epidemiologist for a full-time 1-year remote contractor position.

Take a look at our website for more details on the role and how to apply: appliedepi.org/about/join.h...

Application deadline: July 31, 2025.

14.07.2025 12:43 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 1

🚨 Rare opportunity! Our advanced R courses start end of July:

πŸ“ˆ Time series & outbreak detection in R
πŸ“Š Intro to Stats in R
πŸ—ΊοΈ Intro to GIS in R
πŸ–₯️ Shiny in R
πŸ“ Advanced R Markdown

Plus: Lots of Intro to R courses running all summer! 🌞

Taught live by experienced epidemiologists. 🌍

πŸ”— appliedepi.org

10.06.2025 17:26 β€” πŸ‘ 4    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
Post image

β€œI’ve taken several R trainings - this is the BEST!”
πŸ“’ New courses posted! Intro to R for public health
πŸ—“οΈ 40 hours part-time, synchronous, with unlimited 1-on-1 coaching and options for ALL time zones.
✏️ Register: appliedepi.org/training/pub...

13.03.2025 09:52 β€” πŸ‘ 1    πŸ” 3    πŸ’¬ 0    πŸ“Œ 0
Post image

πŸ“’ Last week to apply for the Applied Epi scholarships!

Transition your team to R with free or discounted courses and services.

Why apply?
βœ”οΈ Full or partial scholarships
βœ”οΈ Focused on strengthening public health capacity

πŸ—“οΈ Apply by Feb 10, 2025! 🌐 appliedepi.org/training/scholarships-ae

03.02.2025 20:51 β€” πŸ‘ 1    πŸ” 3    πŸ’¬ 0    πŸ“Œ 0
Applied Epi

πŸ“’ Ready to move your team to R? Applied Epi’s scholarships are OPEN!

βœ… Funding available for teams in LMICs
βœ… Even teams of 1 can apply with leadership support
βœ… Deadline: Feb 10, 2025

Why team applications? Collaboration ensures a smooth transition to R! Apply today: 🌐 appliedepi.org

27.01.2025 15:55 β€” πŸ‘ 3    πŸ” 2    πŸ’¬ 0    πŸ“Œ 0
Post image

🚨 Applications are NOW OPEN for Applied Epi’s 2025 scholarships! 🚨

πŸ’‘ For teams in low- & middle-income countries working in epidemiology, this is your chance to access funding for courses and support services that help transition to R.

πŸ—“οΈ Deadline: Feb 10, 2025
🌐 Apply here: appliedepi.org

21.01.2025 01:22 β€” πŸ‘ 5    πŸ” 4    πŸ’¬ 0    πŸ“Œ 0
Post image

πŸŽ‰ R scholarship applications open on January 20!

If your team (government or nonprofit) works in applied epidemiology in a low- or middle-income country, you could get access to our Intro to R course and Support Desk! Details: appliedepi.org/training/sch...
#Rstats #epitwitter

17.01.2025 17:04 β€” πŸ‘ 7    πŸ” 7    πŸ’¬ 0    πŸ“Œ 1

The main takeaways are:

1) Ggplot customization possibilities are pretty endless.
2) Merry Christmas and happy holidays to you all!

πŸŽ„πŸŽ„πŸŽ„

24.12.2024 20:57 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

That code shows other cool things too, like how we added in a new font ("Grand Hotel") for the ggplot title.

We used the {showtext} package for this: font_add_google() loads the font from Google Fonts, and showtext_auto() ensures R applies the font to the plot.

24.12.2024 20:57 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Video thumbnail

Repeatedly rerunning the code is quite fun

24.12.2024 20:57 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

And how did we get Santa's coordinates?

Since he didn't share his location, we created a function (get_random_night_coords()) to randomly generate coordinates of a location with a current local time between 11pm and 3am, assuming those are his working hours!

Close enough!

24.12.2024 20:57 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

Both of these figures are created with ggplot2, and use a saved PNG file of Santa.

geom_image() from {ggimage} places the image at specified coordinates, reading from the file path.

Here's the ggplot code for the second figure:

24.12.2024 20:57 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

And if you want his current location:

24.12.2024 20:57 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Video thumbnail

πŸŽ„ Merry Christmas Eve, everyone! πŸŽ„

To wrap up this advent calendar, here’s our final tip:

Did you know you can use your own images in ggplot?

Check out this festive example with a cartoon of Santa β€”on his (surprisingly inefficient?) route tonight! πŸŽ…βœ¨

#DataViz #RStats

24.12.2024 20:57 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

coalesce() is from the {dplyr} package. It returns the first non-missing value from a set of columns, based on the order you specify.

It’s not just for dates, but for any use-case where you need to pick one value from across columns!

23.12.2024 20:38 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

Today's post is for anyone with bdays this time of the year. We see you!

This includes our Exec Director, an expert in "combo Xmas/bday" presents! Happy birthday Neale! πŸŽ‚

On that note, ever work with multiple date columns but need to pick one? Use coalesce() to easily prioritize a value!

#Rstats

23.12.2024 20:38 β€” πŸ‘ 19    πŸ” 2    πŸ’¬ 1    πŸ“Œ 0

Can you recommend any other holiday or Christmas-related R packages? We'd love to know!

22.12.2024 21:25 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

Here's the code if you like the "minimalist" aesthetic.

That said, it does show the versality of ggplot!

22.12.2024 21:25 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

P.s. Before finding the {christmas} package I was ready to make this the main event for this post:

22.12.2024 21:25 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

πŸŽ„Day 22: An R Christmas Tree πŸŽ„

There's still time to write your Christmas cards!

And what better captures the yuletide spirit than...R...

Seriously though, check out the {christmas} package by Jose Barrera-Gomez.. Stunning!

22.12.2024 21:25 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
Custom ggplot functions! Hi all! I’m pasting in some example code to create a custom ggplot function. This example creates different epicurves using the Ebola linelist from Applied Epi’s introcourse. It allows you to defin...

And finally, if you want the function code pasted above, you can get it from the Applied Epi Community: community.appliedepi.org/t/custom-ggp...

Enjoy!

#RStats #Dataviz

22.12.2024 00:24 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Tidy eval helpers β€” tidyeval This page lists the tidy eval tools reexported in this package from rlang. To learn about using tidy eval in scripts and packages at a high level, see the dplyr programming vignette and the ggplot2 in...

You can make the function more complex, but don't overdo it - too many arguments could become hard to understand and edit!

It's all about balance and the best solution for your problemπŸ€“

Learn more here:
epirhandbook.com/en/new_pages...
ggplot2.tidyverse.org/reference/ti...

22.12.2024 00:24 β€” πŸ‘ 3    πŸ” 1    πŸ’¬ 1    πŸ“Œ 0
Post image

Want to further customize colours? 🎨

The example above uses the same colour palette for each plot, with scale_fill_brewer().

For custom colours, you can also define a palette inside scale_fill_manual() - or as a separate object that you refer to (as discussed yesterday).

22.12.2024 00:24 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0


Why the squiggly brackets {{x}}? πŸ€” They're for tidy evaluation!

{{ }} allows ggplot() to recognize the inputs for "xvalue" and "fillvalue" as column names from your data.

Without them, your function won’t know how to evaluate these column names properly!

22.12.2024 00:24 β€” πŸ‘ 0    πŸ” 1    πŸ’¬ 1    πŸ“Œ 0

The code defines a function for an epicurve with geom_histogram(), taking three inputs:

1️⃣dataset object name ("data"),
2️⃣column name for the x axis ("xvalue"),
3️⃣column name for the fill colour ("fillvalue").

So you can easily make epicurves with different breakdowns or date types!

22.12.2024 00:24 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

See how short and readable the code for producing three epicurves becomes 🀩.

The function approach allows you to control data-related formatting (e.g. in the scale_* functions) AND non-data formatting (in theme()).

22.12.2024 00:24 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

πŸŽ„Day 21: Ggplot efficiency part 3πŸŽ„

Need many plots with the same style/formatting but slightly different inputs?

πŸ’‘Create a custom ggplot function!

Define your plot upfront in the function, with all the long formatting code. Then run the function for each new plot with different inputs.

22.12.2024 00:24 β€” πŸ‘ 110    πŸ” 11    πŸ’¬ 2    πŸ“Œ 2

This means:
1️⃣ Plots are easier to interpret (e.g. specific values always the same colours)
2️⃣ The actual ggplot code is shorter
3️⃣ You only need to edit the palette(s) in one location.

*chef's kiss*

Part 3 tomorrow!

#Dataviz #Ggplot #Epi

21.12.2024 03:31 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

πŸŽ„Day 20: Ggplot efficiency: part 2 πŸŽ„

Visualizing the same variables in different ways (e.g. sex by time/place)?

πŸ’‘Tip: Easily standardize colour palettes by defining them once at the start of your code.

Then reuse the palettes within scale_fill_manual() or scale_color_manual() across plots.

21.12.2024 03:31 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
30Β  ggplot basics – The Epidemiologist R Handbook

Don't understand what this post is talking about but want to?

You can start here: epirhandbook.com/en/new_pages...

Happy plotting!

#RStudio #Dataviz

20.12.2024 01:27 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

@appliedepi is following 20 prominent accounts