Malcolm Barrett

PhD Student in Epidemiology

Selected Publications

in Obstetrics and Gynecology,2017

Recent Publications

More Publications

. Intrauterine Device Use and Cervical Cancer Risk: A Systematic Review and Meta-analysis. in Obstetrics and Gynecology, 2017.

Project PubMed

. Symptom Distress Among Diverse Patients Referred for Community-Based Palliative Care: Sociodemographic and Medical Correlates. in Journal of Pain and Symptom Management, 2017.

Project PubMed

. Race and Ethnicity Do Not Clinically Associate with Quality of Life Among Patients with Chronic Severe Pain in a Federally Qualified Health Center. in Pain Medicine, 2017.


Recent Posts

TL;DR: Why should I use here? The here package makes it easier to use sub-directories within projects It’s robust to other ways people open and run your code Like its base R cousin, file.path(), it writes paths safely across operating systems Like a lot of people, when I learned R, I was taught to put setwd() and rm(list = ls()) at the beginning of scripts. Getting rid of any leftovers in the environment and setting the working directory so I can use relative paths made sense to me.


Last week, I presented ggdag at JSM in Vancouver. As you can imagine, I had a lot of conversations with people about DAGs, confounding, colliders, and all the types of bias that can arise in research. One strange type of bias came up a couple of times that I don’t see discussed very often: measuring either the effect you are studying (x) or a variable along a confounding pathway (z) incorrectly can make it appear as if there is an interaction between x and z, even if there isn’t one.


I’m pleased to announce the release of ggdag 0.1.0 on CRAN! ggdag uses the powerful dagitty package to create and analyze structural causal models and plot them using ggplot2 and ggraph in a tidy, consistent, and easy manner. You can use dagitty objects directly in ggdag, but ggdag also includes wrappers to make DAGs using a more R-like syntax: # install.packages("ggdag") library(ggdag) dag <- dagify(y ~ x + z, x ~ z) %>% tidy_dagitty() dag ## # A tibble: 4 x 8 ## name x y direction to xend yend circular ## <chr> <dbl> <dbl> <fct> <chr> <dbl> <dbl> <lgl> ## 1 x 3.


Update with markovifyR Thanks to Maëlle Salmon, who referred me to this post by Julia Silge and Nick Larsen, I explored doing this using the markovifyR package, and the results are unbelievable. See the bottom of the post for an updated batch of sonnets! Original post I recently saw Katie Jolly’s post, in which she produced Rupi Kuar-style poems using Markov Chains in R. I absolutely loved it, so I decided to try it with Shakespeare’s 154 sonnets using her post as a skeleton.



R Packages

DAG analysis and visualization, visualization for meta-analyses, tools for causal inference, and more

Methods in Epidemiology

Understanding how bias affects results


Cervical cancer, cancer symptoms

Predicting Follow-Up Eye Care

What factors influence when a patient follows up for eye care?

Vision and Quality of Life

Humans are visual creatures. How does vision loss affect quality of life?


I went into epidemiology because I saw how many talented clinicians there were in community health that needed help with analysis. When the people we serve donate their time and data, quality study design and analysis is the best way to make good on our promises.

I can help with:

  • Study design
  • Analysis plans
  • Coding and modeling
  • Instruction in R and other statistical tools
  • Data visualization