<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Posts | Waseem Ashfaq</title>
    <link>https://washfaq.netlify.app/post/</link>
      <atom:link href="https://washfaq.netlify.app/post/index.xml" rel="self" type="application/rss+xml" />
    <description>Posts</description>
    <generator>Source Themes Academic (https://sourcethemes.com/academic/)</generator><language>en-us</language><copyright>© 2026</copyright>
    <image>
      <url>https://washfaq.netlify.app/img/sharing_image.jpg</url>
      <title>Posts</title>
      <link>https://washfaq.netlify.app/post/</link>
    </image>
    
    <item>
      <title>Flattening the leaRning curve: Teaching R online during COVID-19</title>
      <link>https://washfaq.netlify.app/post/2020-10-19-teaching-an-r-bootcamp-remotely/</link>
      <pubDate>Mon, 19 Oct 2020 00:00:00 +0000</pubDate>
      <guid>https://washfaq.netlify.app/post/2020-10-19-teaching-an-r-bootcamp-remotely/</guid>
      <description>
&lt;script src=&#34;https://washfaq.netlify.app/rmarkdown-libs/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;
&lt;link href=&#34;https://washfaq.netlify.app/rmarkdown-libs/anchor-sections/anchor-sections.css&#34; rel=&#34;stylesheet&#34; /&gt;
&lt;script src=&#34;https://washfaq.netlify.app/rmarkdown-libs/anchor-sections/anchor-sections.js&#34;&gt;&lt;/script&gt;
&lt;link href=&#34;https://washfaq.netlify.app/rmarkdown-libs/panelset/panelset.css&#34; rel=&#34;stylesheet&#34; /&gt;
&lt;script src=&#34;https://washfaq.netlify.app/rmarkdown-libs/panelset/panelset.js&#34;&gt;&lt;/script&gt;
&lt;script src=&#34;https://washfaq.netlify.app/rmarkdown-libs/fitvids/fitvids.min.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;At this point, you’re probably familiar with the phrase “flatten the curve” — remember back in March when we were all talking about that? It was part of a critical public health messaging campaign aimed at slowing the spread of COVID-19 to prevent hospitals from becoming overwhelmed beyond their capacity. Based on how things are going, we really should &lt;em&gt;still&lt;/em&gt; be talking about that. So allow me to unabashedly steal this catchphrase as a flawed metaphor for teaching and learning R during the era of this pandemic…&lt;/p&gt;
&lt;p&gt;It’s no secret that R has a significant leaRning curve — and, while it seems that more people than ever are now wanting to learn R, almost everyone is having to do it in an online format of some kind. For those who are used to a traditional in-person classroom environment, having a first introduction to R in an online format might make the leaRning curve even steeper (as I said, a flawed metaphor – the concept of a “steep learning curve” is actually the &lt;a href=&#34;https://www.valamis.com/hub/learning-curve#steep-learning-curve&#34;&gt;opposite&lt;/a&gt; of what most people think, but we’ll run with it anyway). After recently teaching an introductory &lt;a href=&#34;https://uopsych-r-bootcamp-2020.netlify.app/&#34;&gt;R Bootcamp&lt;/a&gt; online, I’ve spent a lot of time thinking about strategies to lower the learning threshold and make it easier to conquer any potential fear of learning R – to “flatten the leaRning curve”, as it were.&lt;/p&gt;
&lt;div class=&#34;reader&#34;&gt;
&lt;p&gt;For anyone who might be new to teaching R, teaching online, or both, the goal of this post is to share some valuable lessons I learned and resources I used during this online teaching experience. I hope it may be of some benefit for your own teaching.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;background&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Background&lt;/h1&gt;
&lt;p&gt;Back in Fall 2018, the Department of Psychology at the University of Oregon started to offer a grad-student-led introductory R Bootcamp the week before the start of the new academic year. The bootcamp consists of three 3-4 hour sessions that take place over the course of a week. The idea behind the bootcamp is to give a first exposure to R to incoming students who have little to no background in it before being launched headfirst into using R to analyze data for their first year project and to complete labs and homework assignments for &lt;a href=&#34;https://uopsych.github.io/psy611/&#34;&gt;PSY611&lt;/a&gt;, the first in a series of graduate statistics courses taught entirely in R.&lt;/p&gt;
&lt;p&gt;In addition, as I’ve &lt;a href=&#34;https://washfaq.netlify.app/post/2020-03-08-data-science-training-needs-in-grad-school/index.html&#34;&gt;written about previously&lt;/a&gt;, current grad students, along with other members of the psychology department, have expressed a keen interest in developing a stronger foundation in skills such as basic programming, data wrangling, and data visualization. So the bootcamp also serves as an opportunity for existing R users to get a refresher and deeper dive into those topics for those who want it.&lt;/p&gt;
&lt;p&gt;After spending lot of time thinking about how to improve the data science learning experience for my fellow grad students and having &lt;a href=&#34;https://bcullen.rbind.io/post/2020-09-03-reflections-on-rstudio-instructor-training/&#34;&gt;recently become&lt;/a&gt; an &lt;a href=&#34;https://education.rstudio.com/trainers/people/cullen+brendan/&#34;&gt;RStudio Certified Instructor&lt;/a&gt; in the tidyverse, it was my great privilege to be able to put all of this into action by leading the 3rd Annual UO Psych Bootcamp this year. 🥳&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;the-challenge&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;The challenge&lt;/h1&gt;
&lt;p&gt;However, I found myself facing a rather significant challenge. The R Bootcamp, like many intro R workshops, usually occurs in-person in a large room with a giant projector screen, coffee and snacks, and, most importantly, the ability to run over and look over someone’s shoulder at their computer screen when they need help. Because of COVID-19, I needed to design and deliver a bootcamp for a large group of beginners (many using R for the very first time) entirely over a webcam.&lt;/p&gt;
&lt;p&gt;Moreover, I assumed that student motivation would be at an all-time low and feelings of anxiety and uncertainty would be at an all-time high – especially for those about to start their graduate school journey entirely online, very much contrary to plan. There were a lot of horrible things going on in the world in September 2020, which marked 6 months into the COVID-19 pandemic in the U.S. – people’s loved ones were getting sick, the killing of innocent Black lives continued, a bitter presidential race reached full swing – not to mention devastating wildfires that raged all along the west coast. (Of course, while I wish I could actually write about these events in the past tense, all of these problems continue).&lt;/p&gt;
&lt;p&gt;So, how do you get people excited about learning R amidst all of &lt;em&gt;that&lt;/em&gt;? Needless to say, this felt a little daunting 😨. Fortunately, though, there are people out there who are experts in this sort of thing who have graciously shared their resources and advice, and this helped me immensely to run a successful bootcamp.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;who-attended&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Who attended?&lt;/h1&gt;
&lt;p&gt;52 people registered for the bootcamp. While the majority of those who attended were incoming first-year psychology grad students, we also had a mix of more advanced grad students, undergrads, research assistants, lab managers, staff data analysts, and faculty members from a variety of departments/centers across the University, including the Departments of Psychology, Linguistics, Economics and the Center for Translational Neuroscience.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# import bootcamp registration data 
registration &amp;lt;- read_csv(&amp;quot;uopsych_bootcamp_registration_deidentified.csv&amp;quot;)

# clean data
plot_data &amp;lt;- registration %&amp;gt;% 
  janitor::clean_names() %&amp;gt;% 
  select(position = what_is_your_position_at_uo,
         experience = do_you_have_any_experience_in_r_no_experience_is_required) %&amp;gt;%
  mutate(position = factor(case_when(position %in% c(&amp;quot;Undergraduate&amp;quot;, &amp;quot;Undergraduate student&amp;quot;) ~ &amp;quot;Undergrad Student&amp;quot;, 
                                     position %in% c(&amp;quot;RA&amp;quot;, &amp;quot;Lab Manager&amp;quot;, &amp;quot;Data Analyst&amp;quot;) ~ &amp;quot;Research Staff&amp;quot;,
                              TRUE ~ as.character(position))),
         experience = factor(experience, levels = c(
           &amp;quot;I&amp;#39;ve never heard of it&amp;quot;,
           &amp;quot;I&amp;#39;ve heard of it but have never used it&amp;quot;,
           &amp;quot;I&amp;#39;ve opened it before&amp;quot;,
           &amp;quot;I&amp;#39;ve used it to analyze data&amp;quot;,
           &amp;quot;I use it often to analyze data&amp;quot;)))

# plot positions at UO
theme_set(theme_minimal(base_size = 15)) 
theme_update(legend.position = &amp;quot;none&amp;quot;, 
          plot.title.position = &amp;quot;plot&amp;quot;,
          panel.grid.minor.y = element_blank())

plot_data %&amp;gt;% 
  count(position) %&amp;gt;% 
  ggplot(aes(fct_reorder(position, n), n, fill = position)) + 
  geom_col() +
  coord_flip() + 
  scale_fill_manual(values = get_pal(&amp;quot;Kotare&amp;quot;)) + 
  labs(x = &amp;quot;&amp;quot;, y = &amp;quot;Count&amp;quot;, title = &amp;quot;Participants&amp;#39; roles at University of Oregon&amp;quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;https://washfaq.netlify.app/post/2020-10-19-teaching-an-r-bootcamp-remotely/index_files/figure-html/unnamed-chunk-2-1.png&#34; width=&#34;672&#34; /&gt;&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# plot prior experience 
plot_data %&amp;gt;% 
  count(experience) %&amp;gt;% 
  ggplot(aes(experience, n, fill = experience)) + 
  geom_col() +
  coord_flip() + 
  scale_fill_manual(values = get_pal(&amp;quot;Kaka&amp;quot;))  + 
  labs(x = &amp;quot;&amp;quot;, y = &amp;quot;Count&amp;quot;, title = &amp;quot;Participants&amp;#39; prior experience with R&amp;quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;https://washfaq.netlify.app/post/2020-10-19-teaching-an-r-bootcamp-remotely/index_files/figure-html/unnamed-chunk-3-1.png&#34; width=&#34;672&#34; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;logistics&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Logistics&lt;/h1&gt;
&lt;div id=&#34;zoom-slack&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Zoom + Slack = 👌&lt;/h2&gt;
&lt;p&gt;We ran synchronous sessions live over Zoom. However, rather than use the Zoom chat for communicating with each other and asking questions, we used Slack. A few reasons for this:&lt;/p&gt;
&lt;ol style=&#34;list-style-type: decimal&#34;&gt;
&lt;li&gt;&lt;p&gt;this way people could continue to ask questions outside of the live sessions and a permanent and searchable record of questions and answers would be available for posterity&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Zoom chat can get easily cluttered and doesn’t easily allow you to make threads, which keep things more organized&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Slack has better emojis 🤓.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I was fortunate to have the very knowledgeable and talented &lt;a href=&#34;http://cameronstuartkay.com/&#34;&gt;Cameron Kay&lt;/a&gt; and &lt;a href=&#34;https://ciannabp.com/&#34;&gt;Cianna Bedford-Petersen&lt;/a&gt; as teaching assistants. Cam and Cianna remained on deck throughout the sessions to answer questions on Slack while we went through the material. We also decided that if a student ran into technical issues or felt completely lost, then one of the TA’s would pull them into a breakout room on Zoom to offer one-on-one help.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;rstudio-cloud&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;RStudio Cloud&lt;/h2&gt;
&lt;p&gt;For “Your Turn” exercises, an idea I stole from Alison Hill’s excellent rstudio::conf(2020) &lt;a href=&#34;https://conf20-intro-ml.netlify.app/&#34;&gt;workshop&lt;/a&gt;, we used &lt;a href=&#34;https://rstudio.com/products/cloud/&#34;&gt;RStudio Cloud&lt;/a&gt;, a hosted version of the RStudio IDE available in the web browser. We did this to avoid issues with students installing RStudio on their local machines, as troubleshooting technical issues over Zoom in a large group is not something we felt prepared for. Using RStudio Cloud also allowed me to configure specific IDE settings and pre-load specific packages to allow students to initially avoid technical issues. Lastly, sharing a workspace on RStudio Cloud allowed each student to save their own copy of the projects containing the Your Turn exercises, which in turn made it possible for myself or the TA’s to “peek” into a student’s exercises and help them figure out where their errors were coming from. Overall it went really smoothly, and everyone who filled out the feedback survey said they had no issues using it. I highly recommend using this for your teaching, even if it’s in-person.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;blogdown-site&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Blogdown site&lt;/h2&gt;
&lt;p&gt;To make the bootcamp materials more accessible and shareable, I decided to package them into a website, which I created using the &lt;a href=&#34;https://github.com/rstudio/blogdown&#34;&gt;blogdown&lt;/a&gt; package (see more on this &lt;a href=&#34;#ssn&#34;&gt;below&lt;/a&gt;). Organizing your teaching materials into a website has three clear advantages in my mind:&lt;/p&gt;
&lt;ol style=&#34;list-style-type: decimal&#34;&gt;
&lt;li&gt;&lt;p&gt;A website makes your materials easier to access and more shareable – you send someone a single link they can access on their phone or computer, no need to download anything&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A website is highly sustainable in the sense that it’s easy for students to bookmark and refer back to over and over, and if you push changes to Github with continuous deployment (e.g. via &lt;a href=&#34;https://www.netlify.com/&#34;&gt;Netlify&lt;/a&gt;), students will always have access to the most updated materials. This avoids having to introduce Github and version control, which is a whole other beast to teach to beginners.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Websites are pretty and highly customizble ✨&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;🔗 &lt;a href=&#34;https://uopsych-r-bootcamp-2020.netlify.app/&#34;&gt;uopsych-r-bootcamp-2020.netlify.app&lt;/a&gt;&lt;/p&gt;
&lt;iframe src=&#34;https://uopsych-r-bootcamp-2020.netlify.app/&#34; width=&#34;672&#34; height=&#34;500px&#34;&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;tools&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Tools I learned&lt;/h1&gt;
&lt;div class=&#34;panelset&#34;&gt;
&lt;div id=&#34;xaringanextra&#34; class=&#34;section level3 panel&#34;&gt;
&lt;h3&gt;&lt;code&gt;xaringanExtra&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;📦 &lt;a href=&#34;https://pkg.garrickadenbuie.com/xaringanExtra/&#34;&gt;pkg.garrickadenbuie.com/xaringanExtra&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;i class=&#34;fas fa-user&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://www.garrickadenbuie.com/&#34;&gt;Garrick Aden-Buie&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;{xaringanExtra}&lt;/code&gt; extends the functionality of the already amazing &lt;code&gt;{xaringan}&lt;/code&gt; package by &lt;a href=&#34;https://yihui.org/en/about/&#34;&gt;Yihuie Xie&lt;/a&gt;, and it has become one of my all-time favorite packages. Here are the features I use most often and &lt;em&gt;highly&lt;/em&gt; recommend.&lt;/p&gt;
&lt;p&gt;📖 &lt;a href=&#34;https://pkg.garrickadenbuie.com/xaringanExtra/#/share-again&#34;&gt;Share again&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;video src=&#34;share_again.mov&#34; controls=&#34;&#34;&gt;&lt;a href=&#34;share_again.mov&#34;&gt;Video&lt;/a&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;📖 &lt;a href=&#34;https://pkg.garrickadenbuie.com/xaringanExtra/#/panelset&#34;&gt;Panelset&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;video src=&#34;panelset.mov&#34; controls=&#34;&#34;&gt;&lt;a href=&#34;panelset.mov&#34;&gt;Video&lt;/a&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;📖 &lt;a href=&#34;https://pkg.garrickadenbuie.com/xaringanExtra/#/tile-view&#34;&gt;Tile view&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;video src=&#34;tile_view.mov&#34; controls=&#34;&#34;&gt;&lt;a href=&#34;tile_view.mov&#34;&gt;Video&lt;/a&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;📖 &lt;a href=&#34;https://pkg.garrickadenbuie.com/xaringanExtra/#/extra-styles&#34;&gt;Extra styles&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;video src=&#34;extra_style.mov&#34; controls=&#34;&#34;&gt;&lt;a href=&#34;extra_style.mov&#34;&gt;Video&lt;/a&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;In case it still isn’t obvious enough how much I love this package…&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;
&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;
Ok, {xaringanExtra} continues to blow my freakin&#39; mind 🤯 Here&#39;s a quick demo that shows tile view and &lt;code&gt;embed_xaringan()&lt;/code&gt; in the context of a &lt;a href=&#34;https://twitter.com/hashtag/ggplot2?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#ggplot2&lt;/a&gt; flipbook (h/t &lt;a href=&#34;https://twitter.com/EvaMaeRey?ref_src=twsrc%5Etfw&#34;&gt;&lt;span class=&#34;citation&#34;&gt;@EvaMaeRey&lt;/span&gt;&lt;/a&gt;). &lt;a href=&#34;https://twitter.com/grrrck?ref_src=twsrc%5Etfw&#34;&gt;&lt;span class=&#34;citation&#34;&gt;@grrrck&lt;/span&gt;&lt;/a&gt;, I owe you an absurd amount of beers 🍻 Thank you for all you do for the &lt;a href=&#34;https://twitter.com/hashtag/rstats?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#rstats&lt;/a&gt; community 🙌 &lt;a href=&#34;https://t.co/ucMCbOvopW&#34;&gt;pic.twitter.com/ucMCbOvopW&lt;/a&gt;
&lt;/p&gt;
— Brendan Cullen (&lt;span class=&#34;citation&#34;&gt;@_bcullen&lt;/span&gt;) &lt;a href=&#34;https://twitter.com/_bcullen/status/1310696423239819264?ref_src=twsrc%5Etfw&#34;&gt;September 28, 2020&lt;/a&gt;
&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;p&gt;&lt;a href=&#34;#tools&#34;&gt;Jump back up to see more tools&lt;/a&gt; ⤴️&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;flair&#34; class=&#34;section level3 panel&#34;&gt;
&lt;h3&gt;&lt;code&gt;flair&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;📦 &lt;a href=&#34;https://r-for-educators.github.io/flair/index.html&#34;&gt;r-for-educators.github.io/flair&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;i class=&#34;fas fa-user&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://www.kelly-bodwin.com/&#34;&gt;Kelly Bodwin&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;{flair}&lt;/code&gt; allows you to spice up your code with color-coding and dynamic syntax highlighting. One of the most useful applications is to match colors to concepts – e.g. giving each argument of a function a unique color. I feel like I’ve only scratched the surface with &lt;code&gt;{flair}&lt;/code&gt; and can’t wait to use it more in my teaching going forward.&lt;/p&gt;
&lt;p&gt;Below is a demonstration of color-coding with &lt;code&gt;flair&lt;/code&gt; to introduce &lt;code&gt;dplyr::filter()&lt;/code&gt; and its arguments.&lt;/p&gt;
&lt;div class=&#34;shareagain&#34; style=&#34;min-width:300px;margin:1em auto;&#34;&gt;
&lt;iframe src=&#34;https://uopsych-r-bootcamp-2020.netlify.app/slides/07-slides.html?panelset=arguments&amp;amp;panelset9=arguments6&amp;amp;panelset10=arguments7&amp;amp;panelset11=q14&amp;amp;panelset12=arguments8&amp;amp;panelset13=arguments9&amp;amp;panelset14=q15&amp;amp;panelset15=arguments10&amp;amp;panelset16=example-110&amp;amp;panelset17=q16#22&#34; width=&#34;1600&#34; height=&#34;900&#34; style=&#34;border:2px solid currentColor;&#34; loading=&#34;lazy&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;script&gt;fitvids(&#39;.shareagain&#39;, {players: &#39;iframe&#39;});&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;You can read more about other educational use cases for &lt;code&gt;flair&lt;/code&gt; in this great &lt;a href=&#34;https://education.rstudio.com/blog/2020/05/flair/&#34;&gt;post&lt;/a&gt; on the RStudio Education Blog.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;#tools&#34;&gt;Jump back up to see more tools&lt;/a&gt; ⤴️&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;flipbookr&#34; class=&#34;section level3 panel&#34;&gt;
&lt;h3&gt;&lt;code&gt;flipbookr&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;📦 &lt;a href=&#34;https://evamaerey.github.io/flipbooks/about&#34;&gt;evamaerey.github.io/flipbooks/about&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;i class=&#34;fas fa-user&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://evangelinereynolds.netlify.app/&#34;&gt;Gina Reynolds&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;{flipbookr}&lt;/code&gt; is an amazing teaching tool – it allows you to incrementally build up a plot line by line, which capitalizes on the “blink comparator” method. This means that students are able to easily map a specific change in code to a specific visual change in the corresponding plot output. Flipbooks are also great for demonstrating incremental changes in a data wrangling pipeline, and they’re relatively easy to make!&lt;/p&gt;
&lt;p&gt;&lt;video src=&#34;flipbook.mov&#34; controls=&#34;&#34;&gt;&lt;a href=&#34;flipbook.mov&#34;&gt;Video&lt;/a&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;#tools&#34;&gt;Jump back up to see more tools&lt;/a&gt; ⤴️&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;countdown&#34; class=&#34;section level3 panel&#34;&gt;
&lt;h3&gt;&lt;code&gt;countdown&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;📦 &lt;a href=&#34;https://pkg.garrickadenbuie.com/countdown/&#34;&gt;pkg.garrickadenbuie.com/countdown&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;i class=&#34;fas fa-user&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://www.garrickadenbuie.com/&#34;&gt;Garrick Aden-Buie&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;{coundown}&lt;/code&gt; is another great gem from Garrick and allows you to put timers directly on your slides. This is really useful for timed “Your Turn” exercises or to make sure you stay on track with Q &amp;amp; A sessions or breaks.&lt;/p&gt;
&lt;p&gt;&lt;video src=&#34;countdown.mov&#34; controls=&#34;&#34;&gt;&lt;a href=&#34;countdown.mov&#34;&gt;Video&lt;/a&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;#tools&#34;&gt;Jump back up to see more tools&lt;/a&gt; ⤴️&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;resources-i-recommend&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Resources I recommend&lt;/h1&gt;
&lt;div id=&#34;ssn&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Sharing on short notice&lt;/h2&gt;
&lt;p&gt;&lt;i class=&#34;fas fa-user&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://alison.rbind.io/&#34;&gt;Alison Hill&lt;/a&gt;, &lt;a href=&#34;https://desiree.rbind.io/&#34;&gt;Desirée De Leon&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A super helpful webinar on how best to share your teaching materials online.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i class=&#34;fas fa-video&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://rstudio.com/resources/webinars/sharing-on-short-notice-how-to-get-your-materials-online-with-r-markdown/&#34;&gt;webinar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;i class=&#34;fas fa-images&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://rstudio-education.github.io/sharing-short-notice/&#34;&gt;slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;i class=&#34;fab fa-github&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://github.com/apreshill/share-blogdown&#34;&gt;share-blogdown template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;i class=&#34;fas fa-book&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://education.rstudio.com/blog/2020/04/sharing-on-short-notice/&#34;&gt;blog post&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;teaching-online-on-short-notice&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Teaching online on short notice&lt;/h2&gt;
&lt;p&gt;&lt;i class=&#34;fas fa-user&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://third-bit.com/&#34;&gt;Greg Wilson&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Concrete tips and advice on making the most of teaching via a webcam. There’s a ton of great stuff in here you wouldn’t necessarily think of, including important advice on making your teaching accessible and inclusive in an online format.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i class=&#34;fas fa-video&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://rstudio.com/resources/webinars/teaching-online-at-short-notice/&#34;&gt;webinar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;i class=&#34;fas fa-images&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://docs.google.com/presentation/d/1rE5e2kSFNICNkBJ4iIIgd9eqACi62gxahknKLtw9Hzs/edit#slide=id.g55ddde1eae_0_2&#34;&gt;slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;i class=&#34;fas fa-book&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://education.rstudio.com/blog/2020/03/teaching-online-on-short-notice/&#34;&gt;blog post&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;teaching-r-online-with-rstudio-cloud&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Teaching R online with RStudio Cloud&lt;/h2&gt;
&lt;p&gt;&lt;i class=&#34;fas fa-user&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://www2.stat.duke.edu/~mc301/&#34;&gt;Mine Çetinkaya-Rundel&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A very thorough and easy to follow walk-through of using RStudio Cloud for teaching, highlighting its most useful features.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i class=&#34;fas fa-video&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://rstudio.com/resources/webinars/teaching-r-online-with-rstudio-cloud/&#34;&gt;webinar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;i class=&#34;fas fa-images&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://mine-cetinkaya-rundel.github.io/rstudio-cloud-webinar/rstudio-cloud.html#1&#34;&gt;slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;i class=&#34;fas fa-book&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://education.rstudio.com/blog/2020/04/teaching-with-rstudio-cloud-q-a/&#34;&gt;blog post&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;teaching-the-tidyverse-in-2020&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Teaching the tidyverse in 2020&lt;/h2&gt;
&lt;p&gt;&lt;i class=&#34;fas fa-user&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://www2.stat.duke.edu/~mc301/&#34;&gt;Mine Çetinkaya-Rundel&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A series of blog posts describing a recommended order in which to teach tidyverse topics to beginners, including very recent tidyverse features that are useful for R users at all levels to learn&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i class=&#34;fas fa-book&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://education.rstudio.com/blog/2020/07/teaching-the-tidyverse-in-2020-part-1-getting-started/&#34;&gt;Part 1: Getting started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;i class=&#34;fas fa-book&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://education.rstudio.com/blog/2020/07/teaching-the-tidyverse-in-2020-part-2-data-visualisation/&#34;&gt;Part 2: Data visualization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;i class=&#34;fas fa-book&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://education.rstudio.com/blog/2020/07/teaching-the-tidyverse-in-2020-part-3-data-wrangling-and-tidying/&#34;&gt;Part 3: Data wrangling and tidying&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;i class=&#34;fas fa-book&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://education.rstudio.com/blog/2020/07/teaching-the-tidyverse-in-2020-part-4-when-to-purrr/&#34;&gt;Part4: Part 4: When to purrr?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;data-science-concept-maps&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Data science concept maps&lt;/h2&gt;
&lt;p&gt;A growing list of concept maps related to data science topics in R. Great for planning your lessons and/or sharing in your slides to summarize topics, no matter how seemingly simple or complex.&lt;/p&gt;
&lt;p&gt;&lt;i class=&#34;fas fa-users&#34;&gt;&lt;/i&gt; Community contributors, curated by &lt;a href=&#34;https://third-bit.com/&#34;&gt;Greg Wilson&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i class=&#34;fab fa-github&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://github.com/rstudio/concept-maps&#34;&gt;github repo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;i class=&#34;fab fa-google-drive&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://docs.google.com/presentation/d/1ForBjP0pVhljBLuqOyYfyHw_1rrwJzpWW1ZHzCqAJpU/edit#slide=id.p&#34;&gt;google drive folder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;i class=&#34;fas fa-book&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://education.rstudio.com/blog/2020/09/concept-maps/&#34;&gt;blog post&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;artwork&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;rstats artwork&lt;/h2&gt;
&lt;p&gt;&lt;i class=&#34;fas fa-user&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://www.allisonhorst.com/&#34;&gt;Allison Horst&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A collection of mind-blowing art that makes it 1000% more fun to learn R.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i class=&#34;fab fa-github&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://github.com/allisonhorst/stats-illustrations&#34;&gt;github repo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;i class=&#34;fas fa-comments&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://www.dataquest.io/blog/making-learning-to-code-friendlier-with-art-allison-horst-interview/&#34;&gt;interview with Allison Horst&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;the-importance-of-encouragement-positivity&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;The importance of encouragement &amp;amp; positivity&lt;/h1&gt;
&lt;p&gt;The leaRning curve is no secret. I hadn’t touched R before starting grad school in 2017, but I had heard whispers here and there that learning R is really difficult. But I think there’s an element of self-fulfilling prophecy here. If you expect it to be impossible, then it will feel impossible. I more or less started my journey with that expectation.&lt;/p&gt;
&lt;p&gt;Things changed for me when I took my first course with &lt;a href=&#34;https://twitter.com/datalorax_&#34;&gt;Daniel Anderson&lt;/a&gt;. Daniel has developed a fantastic 5-course &lt;a href=&#34;https://education.uoregon.edu/data-science-specialization-educational-leadership&#34;&gt;Data Science Specialization in Educational Leadership&lt;/a&gt; in the &lt;a href=&#34;https://education.uoregon.edu/&#34;&gt;College of Education&lt;/a&gt; at the University of Oregon, taught entirely in R, which ranges from the very basics of R to advanced machine learning with &lt;a href=&#34;https://www.tidymodels.org/&#34;&gt;tidymodels&lt;/a&gt; (see more info &lt;a href=&#34;data_sci_specialization.jpg&#34;&gt;here&lt;/a&gt;). Daniel’s teaching completely changed the way I approached using and learning R, and it was largely on his recommendation that I joined #rstats Twitter (which was a game-changer). More importantly, Daniel modeled the kind of teacher I wanted to be – clear, thorough, thoughtful, and above all else, kind and inclusive of everyone.&lt;/p&gt;
&lt;p&gt;It was very much with Daniel’s model in mind that I found inspiration for making learning R feel more inviting and less daunting. Here are a few things that came to mind that can be abstracted to some general advice…&lt;/p&gt;
&lt;div id=&#34;anticipate-the-challenge&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Anticipate the challenge&lt;/h2&gt;
&lt;p&gt;Recognize the fact that learning R is &lt;em&gt;hard&lt;/em&gt;. Don’t pretend it’s a walk in the park – it isn’t. But at the same time, emphasize that the investment of time it takes is worth it! And be sure to remind people of that more than once 😉.&lt;/p&gt;
&lt;div class=&#34;shareagain&#34; style=&#34;min-width:300px;margin:1em auto;&#34;&gt;
&lt;iframe src=&#34;https://uopsych-r-bootcamp-2020.netlify.app/slides/00-slides.html#10&#34; width=&#34;1600&#34; height=&#34;900&#34; style=&#34;border:2px solid currentColor;&#34; loading=&#34;lazy&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;script&gt;fitvids(&#39;.shareagain&#39;, {players: &#39;iframe&#39;});&lt;/script&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;normalize-errors-mistakes&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Normalize errors &amp;amp; mistakes&lt;/h2&gt;
&lt;p&gt;The first time someone uses R, error messages are one of the first things that they’ll see. As we all know, this feels frustrating, especially as a beginner. So it makes sense to acknowledge that up front and discuss what error messages are and why they occur. As error messages go hand-in-hand with debugging, it’s also a good idea to at least introduce that concept as well, without necessarily going into great depth since that’s a whole other topic of it’s own. As debugging is commonly considered part of &lt;a href=&#34;https://rstats.wtf/debugging-r-code.html&#34;&gt;“what they forgot to teach you about R”&lt;/a&gt;, I’m sure I’m not alone in wishing that I had been introduced to debugging much earlier on in my R learning experience.&lt;/p&gt;
&lt;p&gt;While learning a systematic approach to debugging is important down the line, it’s more important at first for beginners to understand that seeing lots of error messages at first is not a bad thing. It’s worth spending some effort to convince your students that error messages should not be cause for discouragement or giving up. Simply put, error messages are part and parcel of programming. Sometimes they take a matter of seconds to fix, sometimes a matter of weeks, but everyone who uses R will regularly encounter error messages, no matter your level of experience. And when it really comes down to it, every error message is an opportunity to learn something!&lt;/p&gt;
&lt;div class=&#34;shareagain&#34; style=&#34;min-width:300px;margin:1em auto;&#34;&gt;
&lt;iframe src=&#34;https://uopsych-r-bootcamp-2020.netlify.app/slides/03-slides.html?panelset4=q14&amp;amp;panelset5=nrow2&amp;amp;panelset6=q15&amp;amp;panelset7=q16#60&#34; width=&#34;1600&#34; height=&#34;900&#34; style=&#34;border:2px solid currentColor;&#34; loading=&#34;lazy&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;script&gt;fitvids(&#39;.shareagain&#39;, {players: &#39;iframe&#39;});&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Taking this one step further, it’s a good idea to deliberately incorporate making mistakes into your own teaching and use error messages as a teachable moment. You can even use unintentional mistakes as teachable moments – demonstrate for your students how you fix the mistake and invite them to give their thoughts and feedback. This not only makes your presentation less rehearsed, but it provides a really valuable “real-world” context for learning.&lt;/p&gt;
&lt;div class=&#34;note&#34;&gt;
&lt;p&gt;This idea is referred to as “positive error framing” – and if you want to learn more about this topic in depth I recommend you check out &lt;a href=&#34;https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1008090#sec011&#34;&gt;this section&lt;/a&gt; from the recent article &lt;a href=&#34;https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1008090&#34;&gt;“Ten quick tips for teaching with participatory live coding”&lt;/a&gt; (really you should read the whole article – it’s packed full of great advice).&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;make-your-materials-friendly-and-inviting&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Make your materials friendly and inviting!&lt;/h2&gt;
&lt;p&gt;If your slides read like one long piece of dense help documentation, people are not going to feel inclined to engage with it. How do you make your materials more inviting and approachable?&lt;/p&gt;
&lt;p&gt;One of the most powerful tools out there, in my opinion, is the incredible artwork by Allison Horst, RStudio’s first &lt;a href=&#34;https://blog.rstudio.com/2019/11/18/artist-in-residence/&#34;&gt;artist-in-residence&lt;/a&gt; (see more &lt;a href=&#34;#artwork&#34;&gt;above&lt;/a&gt;). The bigger picture behind the artwork, in Allison’s words:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“All of it is towards a goal of trying to make R, and data science in general, more approachable, welcoming, and engaging to diverse learners”.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;monster_support.jpg&#34; width=&#34;3802&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Cute gifs never hurt either…&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;
&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;
If you&#39;re teaching &lt;a href=&#34;https://twitter.com/hashtag/rstats?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#rstats&lt;/a&gt; with &lt;a href=&#34;https://twitter.com/hashtag/palmerpenguins?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#palmerpenguins&lt;/a&gt; at the moment (which you should be because it&#39;s a brilliant dataset 🐧), consider sneaking in a lil&#39; motivational penguin, both for yourself and your students. everything is terrible and we all need small joys now more than ever &lt;a href=&#34;https://t.co/OHeJWIsqFp&#34;&gt;pic.twitter.com/OHeJWIsqFp&lt;/a&gt;
&lt;/p&gt;
— Brendan Cullen (&lt;span class=&#34;citation&#34;&gt;@_bcullen&lt;/span&gt;) &lt;a href=&#34;https://twitter.com/_bcullen/status/1309222233185767424?ref_src=twsrc%5Etfw&#34;&gt;September 24, 2020&lt;/a&gt;
&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;feedback&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Feedback&lt;/h1&gt;
&lt;p&gt;I was really happy to see that people seemed to appreciate the positive learning atmosphere and, especially because this was only an introductory workshop, that this made them excited to learn more:&lt;/p&gt;
&lt;div class=&#34;quote&#34;&gt;
&lt;p&gt;✍️ “I really appreciated the warm welcome/atmosphere the instructors set up- learning a new programming language can be frustrating, especially for a beginner, so I was really appreciative of the continuous encouragement throughout the bootcamp.”&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;✍️ “I really enjoyed how supportive and encouraging the facilitators were. I understood learning R was no easy endeavor but hearing about their experiences was encouraging for me. Also, I greatly appreciate all the amazing resources they have compiled for future use. I definitely plan to continue looking into it!”&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;✍️ “I appreciated the facilitators’ organization, support, encouragement, and instructional clarity. Thank you for providing this very warm and accessible introduction for an absolute first-time novice! It’s encouraged me to take more steps into learning R.”&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;✍️ “I am now in my third year of struggling through R and this was the first presentation of material that really clicked for me. I frequently refer to the dplyr and ggplot presentations in my work and will continue to work my way through these exercises until I am truly fluent in these basics. THANK YOU”&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;So we did we flatten the leaRning curve? Only time will tell. But the most gratifying feedback, in my opinion, is that people who attended felt inspired to &lt;em&gt;keep learning&lt;/em&gt; and continue riding the R roller coaster. That’s really the best outcome I could have hoped for!&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;r_rollercoaster.png&#34; width=&#34;3712&#34; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;a-final-thought&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;A final thought&lt;/h1&gt;
&lt;p&gt;In short, no matter how long someone has been using R, it never hurts to remind them (yourself included) that a little time and effort can go a long way.&lt;/p&gt;
&lt;center&gt;
&lt;img src=&#34;time_effort.gif&#34; width=&#34;417&#34; /&gt;
&lt;/center&gt;
&lt;/div&gt;
&lt;div id=&#34;acknowledgements&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Acknowledgements&lt;/h1&gt;
&lt;p&gt;I owe a huge debt of gratitude to all the people who were instrumental in my initial experience of learning R: &lt;a href=&#34;https://twitter.com/datalorax_&#34;&gt;Daniel Anderson&lt;/a&gt;, &lt;a href=&#34;https://twitter.com/danicosme&#34;&gt;Dani Cosme&lt;/a&gt;, &lt;a href=&#34;https://twitter.com/PsychNeurd&#34;&gt;Krista DeStasio&lt;/a&gt;, &lt;a href=&#34;https://twitter.com/CostelloCK&#34;&gt;Cory Costello&lt;/a&gt;, &lt;a href=&#34;https://twitter.com/JessKosie&#34;&gt;Jessica Kosie&lt;/a&gt;, and &lt;a href=&#34;https://twitter.com/saraweston09&#34;&gt;Sara Weston&lt;/a&gt;, to name only a few.&lt;/p&gt;
&lt;p&gt;Thanks again to &lt;a href=&#34;https://twitter.com/cameronskay&#34;&gt;Cameron Kay&lt;/a&gt; and &lt;a href=&#34;https://twitter.com/ciannabp&#34;&gt;Cianna Bedford-Petersen&lt;/a&gt; for being such awesome TA’s for the R Bootcamp.&lt;/p&gt;
&lt;p&gt;I also wouldn’t know half of what I know about learning and teaching R if it weren’t for the RStudio Education team – in particular, &lt;a href=&#34;https://twitter.com/apreshill&#34;&gt;Alison Hill&lt;/a&gt;, &lt;a href=&#34;https://twitter.com/gvwilson&#34;&gt;Greg Wilson&lt;/a&gt;, &lt;a href=&#34;https://twitter.com/dcossyle&#34;&gt;Desirée De Leon&lt;/a&gt;, &lt;a href=&#34;https://twitter.com/minebocek&#34;&gt;Mine Çetinkaya-Rundel&lt;/a&gt;, and &lt;a href=&#34;https://twitter.com/StatGarrett&#34;&gt;Garrett Grolemund&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Artwork included in this post is by &lt;a href=&#34;https://twitter.com/allison_horst&#34;&gt;Allison Horst&lt;/a&gt;.&lt;/p&gt;
&lt;details&gt;
&lt;p&gt;&lt;summary&gt;Session Info&lt;/summary&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## ─ Session info ───────────────────────────────────────────────────────────────
##  setting  value                       
##  version  R version 3.6.2 (2019-12-12)
##  os       macOS Catalina 10.15.6      
##  system   x86_64, darwin15.6.0        
##  ui       X11                         
##  language (EN)                        
##  collate  en_US.UTF-8                 
##  ctype    en_US.UTF-8                 
##  tz       America/Los_Angeles         
##  date     2020-11-01                  
## 
## ─ Packages ───────────────────────────────────────────────────────────────────
##  package       * version    date       lib
##  assertthat      0.2.1      2019-03-21 [1]
##  backports       1.1.10     2020-09-15 [1]
##  blogdown        0.17       2019-11-13 [1]
##  bookdown        0.21       2020-10-13 [1]
##  broom           0.5.5      2020-02-29 [1]
##  cellranger      1.1.0      2016-07-27 [1]
##  cli             2.1.0      2020-10-12 [1]
##  colorspace      1.4-1      2019-03-18 [1]
##  crayon          1.3.4      2017-09-16 [1]
##  DBI             1.1.0      2019-12-15 [1]
##  dbplyr          1.4.2      2019-06-17 [1]
##  digest          0.6.27     2020-10-24 [1]
##  dplyr         * 1.0.2      2020-08-18 [1]
##  ellipsis        0.3.1      2020-05-15 [1]
##  emo             0.0.0.9000 2020-08-26 [1]
##  evaluate        0.14       2019-05-28 [1]
##  fansi           0.4.1      2020-01-08 [1]
##  farver          2.0.3      2020-01-16 [1]
##  forcats       * 0.4.0      2019-02-17 [1]
##  fs              1.3.1      2019-05-06 [1]
##  generics        0.0.2      2018-11-29 [1]
##  ggplot2       * 3.3.2      2020-06-19 [1]
##  glue            1.4.2      2020-08-27 [1]
##  gtable          0.3.0      2019-03-25 [1]
##  haven           2.2.0      2019-11-08 [1]
##  highr           0.8        2019-03-20 [1]
##  hms             0.5.3      2020-01-08 [1]
##  htmltools       0.5.0      2020-06-16 [1]
##  httr            1.4.2      2020-07-20 [1]
##  janitor         1.2.1      2020-01-22 [1]
##  jpeg            0.1-8.1    2019-10-24 [1]
##  jsonlite        1.7.1      2020-09-07 [1]
##  knitr           1.30       2020-09-22 [1]
##  labeling        0.4.2      2020-10-20 [1]
##  lattice         0.20-38    2018-11-04 [2]
##  lifecycle       0.2.0      2020-03-06 [1]
##  lubridate       1.7.9      2020-06-08 [1]
##  magrittr        1.5        2014-11-22 [1]
##  Manu          * 0.0.1      2020-10-20 [1]
##  modelr          0.1.6      2020-02-22 [1]
##  munsell         0.5.0      2018-06-12 [1]
##  nlme            3.1-142    2019-11-07 [2]
##  pillar          1.4.6      2020-07-10 [1]
##  pkgconfig       2.0.3      2019-09-22 [1]
##  png             0.1-7      2013-12-03 [1]
##  purrr         * 0.3.4      2020-04-17 [1]
##  R6              2.4.1      2019-11-12 [1]
##  Rcpp            1.0.5      2020-07-06 [1]
##  readr         * 1.3.1      2018-12-21 [1]
##  readxl          1.3.1      2019-03-13 [1]
##  reprex          0.3.0      2019-05-16 [1]
##  rlang           0.4.8      2020-10-08 [1]
##  rmarkdown       2.5        2020-10-21 [1]
##  rstudioapi      0.11       2020-02-07 [1]
##  rvest           0.3.5      2019-11-08 [1]
##  scales          1.1.1      2020-05-11 [1]
##  sessioninfo     1.1.1      2018-11-05 [1]
##  snakecase       0.11.0     2019-05-25 [1]
##  stringi         1.5.3      2020-09-09 [1]
##  stringr       * 1.4.0      2019-02-10 [1]
##  tibble        * 3.0.4      2020-10-12 [1]
##  tidyr         * 1.1.0      2020-05-20 [1]
##  tidyselect      1.1.0      2020-05-11 [1]
##  tidyverse     * 1.3.0      2019-11-21 [1]
##  vctrs           0.3.4      2020-08-29 [1]
##  withr           2.3.0      2020-09-22 [1]
##  xaringanExtra * 0.2.1      2020-08-23 [1]
##  xfun            0.18       2020-09-29 [1]
##  xml2            1.2.2      2019-08-09 [1]
##  yaml            2.2.1      2020-02-01 [1]
##  source                                  
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.2)                          
##  Github (hadley/emo@3f03b11)             
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.0)                          
##  Github (G-Thomson/Manu@c5aa932)         
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.2)                          
##  Github (gadenbuie/xaringanExtra@f85b70a)
##  CRAN (R 3.6.2)                          
##  CRAN (R 3.6.0)                          
##  CRAN (R 3.6.0)                          
## 
## [1] /Users/bcullen/Library/R/3.6/library
## [2] /Library/Frameworks/R.framework/Versions/3.6/Resources/library&lt;/code&gt;&lt;/pre&gt;
&lt;/details&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Reflections on RStudio Instructor Training</title>
      <link>https://washfaq.netlify.app/post/2020-09-03-reflections-on-rstudio-instructor-training/</link>
      <pubDate>Thu, 03 Sep 2020 00:00:00 +0000</pubDate>
      <guid>https://washfaq.netlify.app/post/2020-09-03-reflections-on-rstudio-instructor-training/</guid>
      <description>
&lt;script src=&#34;https://washfaq.netlify.app/rmarkdown-libs/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;
&lt;link href=&#34;https://washfaq.netlify.app/rmarkdown-libs/anchor-sections/anchor-sections.css&#34; rel=&#34;stylesheet&#34; /&gt;
&lt;script src=&#34;https://washfaq.netlify.app/rmarkdown-libs/anchor-sections/anchor-sections.js&#34;&gt;&lt;/script&gt;
&lt;script src=&#34;https://washfaq.netlify.app/rmarkdown-libs/fitvids/fitvids.min.js&#34;&gt;&lt;/script&gt;

&lt;div id=&#34;TOC&#34;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#the-what&#34;&gt;The &lt;em&gt;what&lt;/em&gt;&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#training-course&#34;&gt;Training Course &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 640 512&#34;&gt;&lt;path d=&#34;M208 352c-2.39 0-4.78.35-7.06 1.09C187.98 357.3 174.35 360 160 360c-14.35 0-27.98-2.7-40.95-6.91-2.28-.74-4.66-1.09-7.05-1.09C49.94 352-.33 402.48 0 464.62.14 490.88 21.73 512 48 512h224c26.27 0 47.86-21.12 48-47.38.33-62.14-49.94-112.62-112-112.62zm-48-32c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288h-64v-64H384v64h-76.24c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0z&#34;/&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#technical-exam&#34;&gt;Technical Exam &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 640 512&#34;&gt;&lt;path d=&#34;M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z&#34;/&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#teaching-exam&#34;&gt;Teaching Exam &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;path d=&#34;M319.4 320.6L224 416l-95.4-95.4C57.1 323.7 0 382.2 0 454.4v9.6c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-9.6c0-72.2-57.1-130.7-128.6-133.8zM13.6 79.8l6.4 1.5v58.4c-7 4.2-12 11.5-12 20.3 0 8.4 4.6 15.4 11.1 19.7L3.5 242c-1.7 6.9 2.1 14 7.6 14h41.8c5.5 0 9.3-7.1 7.6-14l-15.6-62.3C51.4 175.4 56 168.4 56 160c0-8.8-5-16.1-12-20.3V87.1l66 15.9c-8.6 17.2-14 36.4-14 57 0 70.7 57.3 128 128 128s128-57.3 128-128c0-20.6-5.3-39.8-14-57l96.3-23.2c18.2-4.4 18.2-27.1 0-31.5l-190.4-46c-13-3.1-26.7-3.1-39.7 0L13.6 48.2c-18.1 4.4-18.1 27.2 0 31.6z&#34;/&gt;&lt;/svg&gt;&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#demonstration-lesson-example&#34;&gt;Demonstration Lesson: Example&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#slides&#34;&gt;Slides &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;path d=&#34;M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm272 208c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm112 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z&#34;/&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#concept-map&#34;&gt;Concept Map &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 640 512&#34;&gt;&lt;path d=&#34;M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z&#34;/&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#learner-persona&#34;&gt;Learner Persona &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;path d=&#34;M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z&#34;/&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#formative-assessment&#34;&gt;Formative Assessment &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 640 512&#34;&gt;&lt;path d=&#34;M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z&#34;/&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#the-why&#34;&gt;The &lt;em&gt;why&lt;/em&gt;&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#surge-in-online-teaching&#34;&gt;Surge in online teaching &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 640 512&#34;&gt;&lt;path d=&#34;M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z&#34;/&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#teaching-resources-galore&#34;&gt;Teaching resources galore &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 576 512&#34;&gt;&lt;path d=&#34;M485.5 0L576 160H474.9L405.7 0h79.8zm-128 0l69.2 160H149.3L218.5 0h139zm-267 0h79.8l-69.2 160H0L90.5 0zM0 192h100.7l123 251.7c1.5 3.1-2.7 5.9-5 3.3L0 192zm148.2 0h279.6l-137 318.2c-1 2.4-4.5 2.4-5.5 0L148.2 192zm204.1 251.7l123-251.7H576L357.3 446.9c-2.3 2.7-6.5-.1-5-3.2z&#34;/&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#tried-and-tested&#34;&gt;Tried and tested &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 576 512&#34;&gt;&lt;path d=&#34;M416 192c0-88.4-93.1-160-208-160S0 103.6 0 192c0 34.3 14.1 65.9 38 92-13.4 30.2-35.5 54.2-35.8 54.5-2.2 2.3-2.8 5.7-1.5 8.7S4.8 352 8 352c36.6 0 66.9-12.3 88.7-25 32.2 15.7 70.3 25 111.3 25 114.9 0 208-71.6 208-160zm122 220c23.9-26 38-57.7 38-92 0-66.9-53.5-124.2-129.3-148.1.9 6.6 1.3 13.3 1.3 20.1 0 105.9-107.7 192-240 192-10.8 0-21.3-.8-31.7-1.9C207.8 439.6 281.8 480 368 480c41 0 79.1-9.2 111.3-25 21.8 12.7 52.1 25 88.7 25 3.2 0 6.1-1.9 7.3-4.8 1.3-2.9.7-6.3-1.5-8.7-.3-.3-22.4-24.2-35.8-54.5z&#34;/&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#a-focus-on-inclusivity&#34;&gt;A focus on inclusivity &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 640 512&#34;&gt;&lt;path d=&#34;M488 192H336v56c0 39.7-32.3 72-72 72s-72-32.3-72-72V126.4l-64.9 39C107.8 176.9 96 197.8 96 220.2v47.3l-80 46.2C.7 322.5-4.6 342.1 4.3 357.4l80 138.6c8.8 15.3 28.4 20.5 43.7 11.7L231.4 448H368c35.3 0 64-28.7 64-64h16c17.7 0 32-14.3 32-32v-64h8c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24zm147.7-37.4L555.7 16C546.9.7 527.3-4.5 512 4.3L408.6 64H306.4c-12 0-23.7 3.4-33.9 9.7L239 94.6c-9.4 5.8-15 16.1-15 27.1V248c0 22.1 17.9 40 40 40s40-17.9 40-40v-88h184c30.9 0 56 25.1 56 56v28.5l80-46.2c15.3-8.9 20.5-28.4 11.7-43.7z&#34;/&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#community-of-practice&#34;&gt;Community of practice &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 640 512&#34;&gt;&lt;path d=&#34;M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z&#34;/&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#get-in-touch&#34;&gt;Get in touch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;p&gt;A while back I wrote about how we &lt;a href=&#34;https://bcullen.rbind.io/post/2020-03-08-data-science-training-needs-in-grad-school/&#34;&gt;need more data science training&lt;/a&gt; as grad students in psychology and that one of the best ways for us to get this training is to &lt;a href=&#34;https://twitter.com/_bcullen/status/1237414725081653249&#34;&gt;learn from each other&lt;/a&gt;. This is just one of many reasons why I’m so humbled and excited to have recently become an &lt;a href=&#34;https://education.rstudio.com/trainers/people/cullen+brendan/&#34;&gt;RStudio Certified Instructor&lt;/a&gt; in the tidyverse.&lt;/p&gt;
&lt;p&gt;I’m looking forward to start implementing and sharing what I learned with my fellow grad students, especially at the end of this month when I will be leading an introductory R workshop for the new cohort of first year PhD and master’s students in my department.&lt;/p&gt;
&lt;p&gt;As a small way of paying it forward, I wanted to offer a reflection on what I think makes this training so unique and worthwhile along with a summary of what’s involved and some resources for those who might be interested in knowing more.&lt;/p&gt;
&lt;hr /&gt;
&lt;div id=&#34;the-what&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;The &lt;em&gt;what&lt;/em&gt;&lt;/h1&gt;
&lt;div class=&#34;book&#34;&gt;
&lt;p&gt;&lt;br&gt; The best place the start is to read about the RStudio Instructor Training and Certification Program &lt;a href=&#34;https://education.rstudio.com/trainers/#info&#34;&gt;here&lt;/a&gt;. The &lt;a href=&#34;https://education.rstudio.com/categories/certify/&#34;&gt;RStudio Education Blog&lt;/a&gt; also has lots of helpful posts about the program.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The process boils down to three steps.&lt;/p&gt;
&lt;div id=&#34;training-course&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Training Course &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 640 512&#34;&gt;&lt;path d=&#34;M208 352c-2.39 0-4.78.35-7.06 1.09C187.98 357.3 174.35 360 160 360c-14.35 0-27.98-2.7-40.95-6.91-2.28-.74-4.66-1.09-7.05-1.09C49.94 352-.33 402.48 0 464.62.14 490.88 21.73 512 48 512h224c26.27 0 47.86-21.12 48-47.38.33-62.14-49.94-112.62-112-112.62zm-48-32c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288h-64v-64H384v64h-76.24c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0z&#34;/&gt;&lt;/svg&gt;&lt;/h2&gt;
&lt;p&gt;The first step is to sign up for the training course, which will likely be held over Zoom and chunked into 3-4 hour segments across 2-3 days. You can access the training materials &lt;a href=&#34;https://drive.google.com/drive/folders/13ohFt3D0EJ5PDbMaWTxnHH-hwA7G0IvY&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The training course is an interactive introduction to applying evidence-based teaching methods to data science education, such as &lt;a href=&#34;https://docs.google.com/presentation/d/1aOnX-B9XlAzkrlIeZa5db3_X2Dk8cS27k3klvPn1SQI/edit&#34;&gt;learner personas&lt;/a&gt;, &lt;a href=&#34;https://docs.google.com/presentation/d/1k45SqyM-w4DtK7dmedeX7pk_r8B9Aq0FKKCxC04pTRM/edit&#34;&gt;concept maps&lt;/a&gt;, and &lt;a href=&#34;https://docs.google.com/presentation/d/1PBxBFpkB4w-C3_l2rWdGMtjxaxDeu8gVP0K0CHJfbdQ/edit&#34;&gt;formative assessment&lt;/a&gt; (i.e. short, diagnostic questions or exercises to figure out if learners are forming accurate mental models). The course also covers how to design teaching materials with &lt;a href=&#34;https://docs.google.com/presentation/d/1PBxBFpkB4w-C3_l2rWdGMtjxaxDeu8gVP0K0CHJfbdQ/edit#slide=id.g5501944768_0_197&#34;&gt;reverse instructional design&lt;/a&gt; that takes into account &lt;a href=&#34;https://docs.google.com/presentation/d/1t9QTkRfGP9WYQjiXoaVAuceFe3ySVe_wLT7j2MYC8bE/edit#slide=id.g39e398e252_0_14&#34;&gt;cognitive load&lt;/a&gt;, &lt;a href=&#34;https://docs.google.com/presentation/d/1bq599QkDdaWXmw-B8JM5jwdl5In9O-NTxLPT2iES0vY/edit#slide=id.g5479673425_0_87&#34;&gt;multiple learning strategies&lt;/a&gt;, and issues of &lt;a href=&#34;https://docs.google.com/presentation/d/1uYQCbs88aao7Ho4d4mUfYi6hOXhgHWV6noR_-jOaE50/edit&#34;&gt;inclusivity and student motivation&lt;/a&gt; in the classroom.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;technical-exam&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Technical Exam &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 640 512&#34;&gt;&lt;path d=&#34;M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z&#34;/&gt;&lt;/svg&gt;&lt;/h2&gt;
&lt;p&gt;The technical exam assesses your proficiency in whatever topic for which you are attempting to become a certified instructor. Currently there are options to become a certified instructor in &lt;a href=&#34;https://www.tidyverse.org/&#34;&gt;tidyverse&lt;/a&gt; and &lt;a href=&#34;https://shiny.rstudio.com/&#34;&gt;shiny&lt;/a&gt;, and each has its own accompanying technical exam.&lt;/p&gt;
&lt;p&gt;I took the tidyverse exam, which, broadly speaking, consists of a series of live coding challenges related to using core tidyverse packages for data cleaning and wrangling, data visualization, string manipulation, functional programming, basic statistical modeling, and creating reproducible documents with R Markdown.&lt;/p&gt;
&lt;p&gt;As many others have suggested, a great way to prepare for this exam is to work through the exercises &lt;a href=&#34;https://r4ds.had.co.nz/&#34;&gt;R for Data Science&lt;/a&gt;, particularly for topics that feel rusty to you, and review the community-contributed &lt;a href=&#34;https://jrnold.github.io/r4ds-exercise-solutions/&#34;&gt;solutions&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;note&#34;&gt;
&lt;p&gt;I highly recommend going through these sample exams from the RStudio Education Blog start to finish to get a sense of what you might need to review.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://education.rstudio.com/blog/2020/02/instructor-certification-exams/#tidyverse-certification-exam&#34;&gt;Sample Tidyverse Exam 1&lt;/a&gt; | &lt;a href=&#34;https://marlycormar.github.io/tidyverse_sample_exam/sample_exam_sols/sols.html&#34;&gt;solutions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://education.rstudio.com/blog/2020/08/more-example-exams/#tidyverse-exam&#34;&gt;Sample Tidyverse Exam 2&lt;/a&gt; | &lt;a href=&#34;https://tidyverse-exam-v2-solutions.netlify.app/&#34;&gt;solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;teaching-exam&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Teaching Exam &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;path d=&#34;M319.4 320.6L224 416l-95.4-95.4C57.1 323.7 0 382.2 0 454.4v9.6c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-9.6c0-72.2-57.1-130.7-128.6-133.8zM13.6 79.8l6.4 1.5v58.4c-7 4.2-12 11.5-12 20.3 0 8.4 4.6 15.4 11.1 19.7L3.5 242c-1.7 6.9 2.1 14 7.6 14h41.8c5.5 0 9.3-7.1 7.6-14l-15.6-62.3C51.4 175.4 56 168.4 56 160c0-8.8-5-16.1-12-20.3V87.1l66 15.9c-8.6 17.2-14 36.4-14 57 0 70.7 57.3 128 128 128s128-57.3 128-128c0-20.6-5.3-39.8-14-57l96.3-23.2c18.2-4.4 18.2-27.1 0-31.5l-190.4-46c-13-3.1-26.7-3.1-39.7 0L13.6 48.2c-18.1 4.4-18.1 27.2 0 31.6z&#34;/&gt;&lt;/svg&gt;&lt;/h2&gt;
&lt;p&gt;The first certification exam assesses pedagogical skills related to teaching data science with R and requires giving a 15-minute demonstration lesson on a topic of your choice followed by a series of applied questions, which will likely involve creating formative assessments on unseen material (e.g. multiple choice questions and fill-in-the-blank coding exercises), developing concept maps on data science topics and giving feedback on example teaching based on pedagogical theory.&lt;/p&gt;
&lt;div class=&#34;note&#34;&gt;
&lt;p&gt;There are also sample teaching exams available.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://education.rstudio.com/blog/2020/02/instructor-certification-exams/#teaching-exam&#34;&gt;Sample Teaching Exam 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://education.rstudio.com/blog/2020/08/more-example-exams/#teaching-exam&#34;&gt;Sample Teaching Exam 2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;demonstration-lesson-example&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Demonstration Lesson: Example&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Column-wise operations with &lt;code&gt;dplyr&lt;/code&gt;: Old and New&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If you’d like to see an example of a demonstration lesson, below are the materials I created for this portion of the teaching exam. I used &lt;code&gt;penguins&lt;/code&gt; from the &lt;a href=&#34;https://allisonhorst.github.io/palmerpenguins/&#34;&gt;&lt;code&gt;{palmerpenguins}&lt;/code&gt;&lt;/a&gt; package as an example data set. (why? because penguins 🐧 🐧 🐧).&lt;/p&gt;
&lt;div class=&#34;github&#34;&gt;
&lt;p&gt;&lt;br&gt; You can find all of the materials for this lesson and the accompanying code on &lt;a href=&#34;https://github.com/brendanhcullen/rstudio-instructor-certification&#34;&gt;Github&lt;/a&gt;. Feel free to share, adapt and re-use for your own teaching.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;slides&#34; class=&#34;section level4&#34;&gt;
&lt;h4&gt;Slides &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;path d=&#34;M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm272 208c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm112 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z&#34;/&gt;&lt;/svg&gt;&lt;/h4&gt;
&lt;p&gt;I made heavy use of &lt;a href=&#34;https://yihui.org/en/about/&#34;&gt;Yihui Xie&lt;/a&gt;’s &lt;a href=&#34;https://slides.yihui.org/xaringan/&#34;&gt;&lt;code&gt;{xaringan}&lt;/code&gt;&lt;/a&gt; 📦, &lt;a href=&#34;https://www.garrickadenbuie.com/&#34;&gt;Garrick Aden-Buie&lt;/a&gt;’s &lt;a href=&#34;https://pkg.garrickadenbuie.com/xaringanExtra/#/&#34;&gt;&lt;code&gt;{xaringanExtra}&lt;/code&gt;&lt;/a&gt; 📦, and &lt;a href=&#34;https://www.kelly-bodwin.com/&#34;&gt;Kelly Bodwin&lt;/a&gt;’s &lt;a href=&#34;https://kbodwin.github.io/flair/index.html&#34;&gt;&lt;code&gt;{flair}&lt;/code&gt;&lt;/a&gt; 📦, along with &lt;a href=&#34;https://www.allisonhorst.com/&#34;&gt;Allison Horst&lt;/a&gt;’s unbeatable &lt;a href=&#34;https://github.com/allisonhorst/stats-illustrations&#34;&gt;artwork&lt;/a&gt;. For an excellent &lt;code&gt;{xaringan}&lt;/code&gt; tutorial, I recommend you check out &lt;a href=&#34;https://arm.rbind.io/slides/xaringan.html#1&#34;&gt;these slides&lt;/a&gt;, from the R Markdown whisperer herself, &lt;a href=&#34;https://alison.rbind.io/&#34;&gt;Alison Hill&lt;/a&gt;. Note: you absolutely do not have to use &lt;code&gt;{xaringan}&lt;/code&gt; to make your slides, and if your lesson includes more images than code, another method for delivering your slides might be better.&lt;/p&gt;
&lt;div class=&#34;shareagain&#34; style=&#34;min-width:300px;margin:1em auto;&#34;&gt;
&lt;iframe src=&#34;https://columnwise-operations-dplyr.netlify.app/&#34; width=&#34;1600&#34; height=&#34;900&#34; style=&#34;border:2px solid currentColor;&#34; loading=&#34;lazy&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;script&gt;fitvids(&#39;.shareagain&#39;, {players: &#39;iframe&#39;});&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;Full slides available &lt;a href=&#34;https://columnwise-operations-dplyr.netlify.app/&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;center&gt;
&lt;p&gt;&lt;br&gt;❖ ❖ ❖&lt;br&gt;&lt;/p&gt;
&lt;/center&gt;
&lt;/div&gt;
&lt;div id=&#34;concept-map&#34; class=&#34;section level4&#34;&gt;
&lt;h4&gt;Concept Map &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 640 512&#34;&gt;&lt;path d=&#34;M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z&#34;/&gt;&lt;/svg&gt;&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;columnwise-operations.png&#34; width=&#34;150%&#34; /&gt;&lt;/p&gt;
&lt;p&gt;For other community-contributed data science concept maps you can use in your teaching and/or lesson prep, see &lt;a href=&#34;https://github.com/rstudio/concept-maps&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;center&gt;
&lt;p&gt;&lt;br&gt;❖ ❖ ❖&lt;br&gt;&lt;/p&gt;
&lt;/center&gt;
&lt;/div&gt;
&lt;div id=&#34;learner-persona&#34; class=&#34;section level4&#34;&gt;
&lt;h4&gt;Learner Persona &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;path d=&#34;M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z&#34;/&gt;&lt;/svg&gt;&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;learner_persona.png&#34; width=&#34;865&#34; /&gt;&lt;/p&gt;
&lt;p&gt;For a list of other example learner personas, see &lt;a href=&#34;https://rstudio-education.github.io/learner-personas/&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;center&gt;
&lt;p&gt;&lt;br&gt;❖ ❖ ❖&lt;br&gt;&lt;/p&gt;
&lt;/center&gt;
&lt;/div&gt;
&lt;div id=&#34;formative-assessment&#34; class=&#34;section level4&#34;&gt;
&lt;h4&gt;Formative Assessment &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 640 512&#34;&gt;&lt;path d=&#34;M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z&#34;/&gt;&lt;/svg&gt;&lt;/h4&gt;
&lt;p&gt;I created &lt;a href=&#34;https://brendancullen.shinyapps.io/columnwise_operations_formative_assessment/&#34;&gt;these interactive exercises&lt;/a&gt; using the &lt;a href=&#34;https://rstudio.github.io/learnr/&#34;&gt;&lt;code&gt;learnr&lt;/code&gt;&lt;/a&gt; package, which I highly recommend you check out. It’s quite powerful and versatile.&lt;/p&gt;
&lt;p&gt;Here’s a quick look.&lt;/p&gt;
&lt;iframe src=&#34;https://brendancullen.shinyapps.io/columnwise_operations_formative_assessment/?showcase=0&#34; width=&#34;672&#34; height=&#34;500px&#34;&gt;
&lt;/iframe&gt;
&lt;hr /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;the-why&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;The &lt;em&gt;why&lt;/em&gt;&lt;/h1&gt;
&lt;p&gt;Ok, this might all seem like quite a bit of time and effort. Why go to the trouble of doing this training? In a word, &lt;a href=&#34;https://third-bit.com/about/&#34;&gt;Greg Wilson&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Greg, who co-founded the &lt;a href=&#34;https://software-carpentry.org/&#34;&gt;Software Carpentry&lt;/a&gt;, has over 35 years of experience in education in data science and software engineering, and it shows. He is now part of the &lt;a href=&#34;https://education.rstudio.com/&#34;&gt;RStudio Education&lt;/a&gt; team, where he runs the the instructor training and certification program. One of the reasons this program stands out is that it benefits from Greg’s unique expertise and careful curation of decades of research on evidence-based teaching methods that he has translated into clear and actionable advice. I can guarantee that you will learn a LOT from him.&lt;/p&gt;
&lt;p&gt;Greg’s most important &lt;a href=&#34;https://third-bit.com/10rules/#teaching&#34;&gt;advice for teaching&lt;/a&gt;, in my opinion:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Be kind: all else is details.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Now, here are some other reasons why you should do this training…&lt;/strong&gt;&lt;/p&gt;
&lt;div id=&#34;surge-in-online-teaching&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Surge in online teaching &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 640 512&#34;&gt;&lt;path d=&#34;M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z&#34;/&gt;&lt;/svg&gt;&lt;/h2&gt;
&lt;p&gt;Interest in data science education seems to be ever-increasing. The fact that COVID-19 has forced most education to go online might actually present an opportunity to meet this demand in a more scalable and (hopefully more accessible way that doesn’t incur the traditional limitations of travel costs or room capacity. Of course, online education comes with a host of inherent challenges. The training course includes a &lt;a href=&#34;https://docs.google.com/presentation/d/1kbYaHv47Vt59JxqXF7U7pQl5XOwsctzpP740iVM7Bc8/edit#slide=id.g55ddde1eae_0_2&#34;&gt;whole section&lt;/a&gt; on this. I also recommend you check out this &lt;a href=&#34;https://rstudio.com/resources/webinars/teaching-online-at-short-notice/&#34;&gt;RStudio webinar&lt;/a&gt; and accompanying &lt;a href=&#34;https://education.rstudio.com/blog/2020/03/teaching-online-on-short-notice/&#34;&gt;blog post&lt;/a&gt; along with answers to some &lt;a href=&#34;https://education.rstudio.com/blog/2020/03/online-teaching-qa/&#34;&gt;frequently asked questions&lt;/a&gt; about teaching online.&lt;/p&gt;
&lt;p&gt;As online data science education is becoming increasingly the norm, it seems natural to assume that there will be a need for more certified instructors to meet the growing demand.&lt;/p&gt;
&lt;center&gt;
&lt;p&gt;&lt;br&gt;❖ ❖ ❖&lt;br&gt;&lt;/p&gt;
&lt;/center&gt;
&lt;/div&gt;
&lt;div id=&#34;teaching-resources-galore&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Teaching resources galore &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 576 512&#34;&gt;&lt;path d=&#34;M485.5 0L576 160H474.9L405.7 0h79.8zm-128 0l69.2 160H149.3L218.5 0h139zm-267 0h79.8l-69.2 160H0L90.5 0zM0 192h100.7l123 251.7c1.5 3.1-2.7 5.9-5 3.3L0 192zm148.2 0h279.6l-137 318.2c-1 2.4-4.5 2.4-5.5 0L148.2 192zm204.1 251.7l123-251.7H576L357.3 446.9c-2.3 2.7-6.5-.1-5-3.2z&#34;/&gt;&lt;/svg&gt;&lt;/h2&gt;
&lt;p&gt;Another great reason to become a certified instructor is that, as a data science educator, you have a huge and ever-increasing bank of resources at your disposal. What’s more, as a certified instructor, you are eligible for free licenses to &lt;a href=&#34;https://rstudio.com/products/&#34;&gt;RStudio Pro products&lt;/a&gt; and a significant discount for &lt;a href=&#34;https://rstudio.cloud/&#34;&gt;RStudio Cloud&lt;/a&gt;. Here are just some of the great teaching tools from RStudio and the #rstats community.&lt;/p&gt;
&lt;div class=&#34;bookmark&#34;&gt;
&lt;p&gt;&lt;br&gt; The &lt;a href=&#34;https://education.rstudio.com/blog/&#34;&gt;RStudio Education Blog&lt;/a&gt; is a 💎 TREASURE TROVE 💎 of resources. Add it to your bookmarks immediately.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Teaching with RStudio Cloud&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://rstudio.com/resources/webinars/teaching-r-online-with-rstudio-cloud/&#34;&gt;webinar&lt;/a&gt; and accompanying &lt;a href=&#34;https://education.rstudio.com/blog/2020/04/teaching-with-rstudio-cloud-q-a/&#34;&gt;blog post&lt;/a&gt;, courtesy of &lt;a href=&#34;https://www2.stat.duke.edu/~mc301/&#34;&gt;Mine Çetinkaya-Rundel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Interactive lessons with &lt;code&gt;learnr&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&#34;https://education.rstudio.com/blog/2020/05/learnr-for-remote/&#34;&gt;tutorial and demonstration&lt;/a&gt;, courtesy of &lt;a href=&#34;https://www.allisonhorst.com/&#34;&gt;Allison Horst&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&#34;https://education.rstudio.com/blog/2020/06/summer-camp-hs/&#34;&gt;lessons learned&lt;/a&gt; from using &lt;code&gt;learnr&lt;/code&gt; to teach high schoolers, courtesy of &lt;a href=&#34;https://www.ezgikaraesmen.com/&#34;&gt;Ezgi Karaesmen&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&#34;https://education.rstudio.com/blog/2020/07/learning-learnr/&#34;&gt;a deep dive&lt;/a&gt; into &lt;code&gt;learnr&lt;/code&gt;, courtesy of &lt;a href=&#34;http://nischalshrestha.me/&#34;&gt;Nischal Shrestha&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&#34;https://rstudio-education.github.io/gradethis/&#34;&gt;{gradethis} package&lt;/a&gt; for easily grading &lt;code&gt;learnr&lt;/code&gt; exercises&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Openly licensed teaching materials&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&#34;https://education.rstudio.com/blog/2020/05/remote-roundup/&#34;&gt;a thorough summary&lt;/a&gt; of recent online courses/workshops, courtesy of &lt;a href=&#34;https://alison.rbind.io/&#34;&gt;Alison Hill&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&#34;https://datasciencebox.org/&#34;&gt;Data Science in a Box&lt;/a&gt;, courtesy of &lt;a href=&#34;https://www2.stat.duke.edu/~mc301/&#34;&gt;Mine Çetinkaya-Rundel&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&#34;https://stat545.com/&#34;&gt;STAT 545&lt;/a&gt;, courtesy of &lt;a href=&#34;https://jennybryan.org/about/&#34;&gt;Jenny Bryan&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&#34;https://education.rstudio.com/teach/materials/#workshops&#34;&gt;Many others&lt;/a&gt;, courtesy of the RStudio Education Team&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;rstudio4edu&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a &lt;a href=&#34;https://rstudio4edu.github.io/rstudio4edu-book/&#34;&gt;book-in-progress&lt;/a&gt;, courtesy of &lt;a href=&#34;https://desiree.rbind.io/&#34;&gt;Desirée De Leon&lt;/a&gt; and &lt;a href=&#34;https://alison.rbind.io/&#34;&gt;Alison Hill&lt;/a&gt;. This is in a category of its own because it’s an absolute gold mine.&lt;/li&gt;
&lt;/ul&gt;
&lt;center&gt;
&lt;p&gt;&lt;br&gt;❖ ❖ ❖&lt;br&gt;&lt;/p&gt;
&lt;/center&gt;
&lt;/div&gt;
&lt;div id=&#34;tried-and-tested&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Tried and tested &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 576 512&#34;&gt;&lt;path d=&#34;M416 192c0-88.4-93.1-160-208-160S0 103.6 0 192c0 34.3 14.1 65.9 38 92-13.4 30.2-35.5 54.2-35.8 54.5-2.2 2.3-2.8 5.7-1.5 8.7S4.8 352 8 352c36.6 0 66.9-12.3 88.7-25 32.2 15.7 70.3 25 111.3 25 114.9 0 208-71.6 208-160zm122 220c23.9-26 38-57.7 38-92 0-66.9-53.5-124.2-129.3-148.1.9 6.6 1.3 13.3 1.3 20.1 0 105.9-107.7 192-240 192-10.8 0-21.3-.8-31.7-1.9C207.8 439.6 281.8 480 368 480c41 0 79.1-9.2 111.3-25 21.8 12.7 52.1 25 88.7 25 3.2 0 6.1-1.9 7.3-4.8 1.3-2.9.7-6.3-1.5-8.7-.3-.3-22.4-24.2-35.8-54.5z&#34;/&gt;&lt;/svg&gt;&lt;/h2&gt;
&lt;p&gt;The instructor training program started back in February 2019 and &lt;a href=&#34;https://education.rstudio.com/blog/2020/08/august-2020-instructors/&#34;&gt;as of August 2020&lt;/a&gt; there are almost 150 certified tidyverse instructors and 20 shiny instructors. This means that the program has gone through multiple iterations and has made data-driven improvements based on &lt;a href=&#34;https://education.rstudio.com/blog/2020/07/instructor-certification-findings/&#34;&gt;feedback from participants&lt;/a&gt; – especially in the realm of supporting online teaching in the aftermath of COVID-19. So you can rest assured that, while it is still a relatively new program, all the kinks have been worked out.&lt;/p&gt;
&lt;p&gt;Plus, I’m sure that the content and structure of the training will continue to adapt to the needs and priorities of the community, and you might even be lucky enough to catch a special guest presentation. For example…&lt;/p&gt;
&lt;center&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;
&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;
&lt;p&gt;Enjoyed sharing some tips today on “Teaching in Production” for our &lt;a href=&#34;https://twitter.com/RStudioEDU?ref_src=twsrc%5Etfw&#34;&gt;&lt;span class=&#34;citation&#34;&gt;[@RStudioEDU]&lt;/span&gt;&lt;/a&gt; certified-instructors-to-be (another &lt;a href=&#34;https://twitter.com/thomas_mock?ref_src=twsrc%5Etfw&#34;&gt;&lt;span class=&#34;citation&#34;&gt;[@thomas_mock]&lt;/span&gt;&lt;/a&gt; distill success story!) &lt;br&gt;&lt;br&gt;Thx to &lt;a href=&#34;https://twitter.com/gvwilson?ref_src=twsrc%5Etfw&#34;&gt;&lt;span class=&#34;citation&#34;&gt;[@gvwilson]&lt;/span&gt;&lt;/a&gt; for the invite, &lt;a href=&#34;https://twitter.com/allison_horst?ref_src=twsrc%5Etfw&#34;&gt;&lt;span class=&#34;citation&#34;&gt;[@allison_horst]&lt;/span&gt;&lt;/a&gt; for &lt;a href=&#34;https://twitter.com/hashtag/rmarkdown?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#rmarkdown&lt;/a&gt; 🦔(❣️), and &lt;a href=&#34;https://twitter.com/dcossyle?ref_src=twsrc%5Etfw&#34;&gt;&lt;span class=&#34;citation&#34;&gt;[@dcossyle]&lt;/span&gt;&lt;/a&gt; for all her 🎨.&lt;a href=&#34;https://t.co/sngAwlcSqN&#34;&gt;https://t.co/sngAwlcSqN&lt;/a&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;— Alison Presmanes Hill (&lt;span class=&#34;citation&#34;&gt;[@apreshill]&lt;/span&gt;) &lt;a href=&#34;https://twitter.com/apreshill/status/1296553009522962432?ref_src=twsrc%5Etfw&#34;&gt;August 20, 2020&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;/center&gt;
&lt;center&gt;
&lt;p&gt;&lt;br&gt;❖ ❖ ❖&lt;br&gt;&lt;/p&gt;
&lt;/center&gt;
&lt;/div&gt;
&lt;div id=&#34;a-focus-on-inclusivity&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;A focus on inclusivity &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 640 512&#34;&gt;&lt;path d=&#34;M488 192H336v56c0 39.7-32.3 72-72 72s-72-32.3-72-72V126.4l-64.9 39C107.8 176.9 96 197.8 96 220.2v47.3l-80 46.2C.7 322.5-4.6 342.1 4.3 357.4l80 138.6c8.8 15.3 28.4 20.5 43.7 11.7L231.4 448H368c35.3 0 64-28.7 64-64h16c17.7 0 32-14.3 32-32v-64h8c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24zm147.7-37.4L555.7 16C546.9.7 527.3-4.5 512 4.3L408.6 64H306.4c-12 0-23.7 3.4-33.9 9.7L239 94.6c-9.4 5.8-15 16.1-15 27.1V248c0 22.1 17.9 40 40 40s40-17.9 40-40v-88h184c30.9 0 56 25.1 56 56v28.5l80-46.2c15.3-8.9 20.5-28.4 11.7-43.7z&#34;/&gt;&lt;/svg&gt;&lt;/h2&gt;
&lt;p&gt;The focus of this training is not technical competency – it’s how be an effective teacher. One of the most critical components of teaching effectively is to be inclusive of all learners, regardless of race, religion, sexual orientation, gender identity, disability, etc.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;https://twitter.com/R4DScommunity&#34;&gt;#rstats learning community&lt;/a&gt; is known for being welcoming and inclusive, so it’s no surprise that the training course emphasizes these values as well. What I appreciate most about this aspect of the training is that it will challenge you to think about questions and hypothetical scenarios to which there are no easy answers.&lt;/p&gt;
&lt;p&gt;However, it is extremely important to be pushed out of your comfort zone to consciously and proactively reflect on how you will confront issues such as systemic racism and institutionalized violence against BIPOC communities, sexism and a deeply ingrained culture of sexual harassment. These issues will inevitably arise in one form or another in your classroom or teaching setting, and it’s absolutely necessary that we confront these challenges now more than ever. Check out &lt;a href=&#34;https://docs.google.com/presentation/d/1uYQCbs88aao7Ho4d4mUfYi6hOXhgHWV6noR_-jOaE50/edit#slide=id.g56df7927dc_0_1&#34;&gt;this slide&lt;/a&gt; and &lt;a href=&#34;https://www.youtube.com/watch?v=EhNisFJPfrs&#34;&gt;this talk&lt;/a&gt; on effective allyship when you get a chance.&lt;/p&gt;
&lt;div class=&#34;book&#34;&gt;
&lt;p&gt;&lt;br&gt; For further reading on inclusivity and social justice in data science education, I recommend you read &lt;a href=&#34;https://education.rstudio.com/blog/2020/06/native-classroom/&#34;&gt;this post&lt;/a&gt; by &lt;a href=&#34;http://www.nicolethompsongonzalez.com/&#34;&gt;Nicole Thompson Gonzalez&lt;/a&gt; and &lt;a href=&#34;https://medium.com/@yimregister/10-ways-to-integrate-social-justice-into-teaching-data-science-f48d13f2337c&#34;&gt;this one&lt;/a&gt; by &lt;a href=&#34;http://students.washington.edu/yreg/&#34;&gt;Yim Register&lt;/a&gt;. Also check out the amazing work that &lt;a href=&#34;https://jooyoungseo.com/&#34;&gt;JooYoung Seo&lt;/a&gt;, the first blind RStudio Certified Instructor, has been doing to make data science tools &lt;a href=&#34;https://education.rstudio.com/blog/2020/07/a11y-midterm/&#34;&gt;more accessible&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Another exciting feature is that the training materials are now &lt;a href=&#34;https://drive.google.com/drive/folders/1qwTEMqoqphF9qu7f0lSCSTmikIf5chBi&#34;&gt;available in Spanish&lt;/a&gt;, courtesy of &lt;a href=&#34;https://lacion.rbind.io/&#34;&gt;Laura Acion&lt;/a&gt;, and hopefully other languages soon, as interest in the training seems to be growing around the world. A similar ongoing project to check out is &lt;a href=&#34;https://carpentries.github.io/glosario/&#34;&gt;&lt;code&gt;glosario&lt;/code&gt;&lt;/a&gt;, an open source glossary of data science terms translated in multiple languages that can be used for teaching (read more &lt;a href=&#34;https://education.rstudio.com/blog/2020/07/announcing-glosario/&#34;&gt;here&lt;/a&gt;).&lt;/p&gt;
&lt;center&gt;
&lt;p&gt;&lt;br&gt;❖ ❖ ❖&lt;br&gt;&lt;/p&gt;
&lt;/center&gt;
&lt;/div&gt;
&lt;div id=&#34;community-of-practice&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Community of practice &lt;svg style=&#34;height:0.8em;top:.04em;position:relative;&#34; viewBox=&#34;0 0 640 512&#34;&gt;&lt;path d=&#34;M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z&#34;/&gt;&lt;/svg&gt;&lt;/h2&gt;
&lt;p&gt;To extend the idea of including &lt;em&gt;everyone&lt;/em&gt; who wants to learn data science, we must be active in building teaching communities that extend beyond just the walls of academic institutions.&lt;/p&gt;
&lt;p&gt;RStudio’s &lt;a href=&#34;https://education.rstudio.com/teach/#:~:text=RStudio&amp;#39;s%20mission%20is%20to%20equip,economy%20that%20rewards%20data%20literacy.&amp;amp;text=All%20of%20RStudio&amp;#39;s%20resources%20are,materials%20in%20their%20own%20ways.&#34;&gt;mission&lt;/a&gt; is to&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“equip everyone, regardless of means, to participate in a global economy that rewards data literacy.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A more concrete goal, put forth by &lt;a href=&#34;https://education.rstudio.com/trainers/people/howe+carl/&#34;&gt;Carl Howe&lt;/a&gt;, Director of Education at RStudio, is to train the &lt;a href=&#34;https://rstudio.com/resources/rstudioconf-2019/the-next-million-r-users/&#34;&gt;next million R users&lt;/a&gt;. In becoming an RStudio certified instructor, you can better position yourself to actively participate in reaching this goal. But it’s worth reflecting on the fact that teaching and learning doesn’t happen in a vacuum – this is where the idea of community comes in. In my opinion, the fact that R users around the world already have a strong sense of community will make it that much easier to welcome new learners into the fold and make it more likely that they themselves will start to train others one day.&lt;/p&gt;
&lt;div class=&#34;book&#34;&gt;
&lt;p&gt;&lt;br&gt; Read more about building a community of practice &lt;a href=&#34;https://teachtogether.tech/en/index.html#s:community&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;P.S.&lt;/em&gt; If you need yet another reason to do this training, you get a fancy certificate at the end. ✨&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;certificate.png&#34; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;get-in-touch&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Get in touch&lt;/h1&gt;
&lt;p&gt;Please feel free to &lt;a href=&#34;https://twitter.com/_bcullen&#34;&gt;reach out&lt;/a&gt; if you are thinking of participating in the training yourself and want to hear more from someone who’s gone through it recently. I would be glad to chat any time!&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://media.giphy.com/media/3o7btQsLqXMJAPu6Na/giphy.gif&#34; /&gt;&lt;/p&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Tidymodels: Decision Tree Learning in R</title>
      <link>https://washfaq.netlify.app/post/2020-06-02-tidymodels-decision-tree-learning-in-r/</link>
      <pubDate>Tue, 02 Jun 2020 00:00:00 +0000</pubDate>
      <guid>https://washfaq.netlify.app/post/2020-06-02-tidymodels-decision-tree-learning-in-r/</guid>
      <description>
&lt;script src=&#34;https://washfaq.netlify.app/rmarkdown-libs/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;
&lt;link href=&#34;https://washfaq.netlify.app/rmarkdown-libs/anchor-sections/anchor-sections.css&#34; rel=&#34;stylesheet&#34; /&gt;
&lt;script src=&#34;https://washfaq.netlify.app/rmarkdown-libs/anchor-sections/anchor-sections.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;RStudio has recently released a cohesive suite of packages for modelling and machine learning, called &lt;code&gt;{tidymodels}&lt;/code&gt;. The successor to Max Kuhn’s &lt;code&gt;{caret}&lt;/code&gt; package, &lt;code&gt;{tidymodels}&lt;/code&gt; allows for a tidy approach to your data from start to finish. We’re going to walk through the basics for getting off the ground with &lt;code&gt;{tidymodels}&lt;/code&gt; and demonstrate its application to three different tree-based methods for predicting student test scores. For further information about the package, you can visit &lt;a href=&#34;https://www.tidymodels.org/&#34; class=&#34;uri&#34;&gt;https://www.tidymodels.org/&lt;/a&gt;.&lt;/p&gt;
&lt;div id=&#34;setup&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Setup&lt;/h1&gt;
&lt;p&gt;Load both the &lt;code&gt;{tidyverse}&lt;/code&gt; and &lt;code&gt;{tidymodels}&lt;/code&gt; packages into your environment. We’ll also load in the &lt;code&gt;{skimr}&lt;/code&gt; package to help us with some descriptives for our data and a host of other packages that will be required to run our machine learning models.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;library(tidymodels) 
library(tidyverse) # manipulating data
library(skimr) # data visualization
library(baguette) # bagged trees
library(future) # parallel processing &amp;amp; decrease computation time
library(xgboost) # boosted trees&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;import-the-data&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Import the data&lt;/h1&gt;
&lt;p&gt;We use simulated data which approximates reading and math scores for ~189,000 3rd-8th grade students in Oregon public schools see &lt;a href=&#34;https://www.kaggle.com/c/edld-654-spring-2020&#34;&gt;this Kaggle page&lt;/a&gt; for details. For the purpose of demonstration, we’ll be sampling 1% of the data with &lt;code&gt;sample_frac()&lt;/code&gt; to keep computer processing time manageable. All school IDs in the data are real, so we can use that information to link the data with other sources. Specifically, we’re also going to pull in some data on student enrollment in free and reduced lunch from the National Center for Education Statistics and some ethnicity data from the Oregon Department of Education.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;set.seed(100)

# import data and perform initial cleaning
# initial cleaning steps include: 
# *recode NA&amp;#39;s for lang_cd and ayp_lep to more meaningful values
# *remove vars with entirely missing data
# Note: the data is called &amp;#39;train.csv&amp;#39;, but we will actually further split this into its own training and testing data

dat &amp;lt;- read_csv(here::here(&amp;quot;static&amp;quot;, &amp;quot;data&amp;quot;, &amp;quot;train.csv&amp;quot;)) %&amp;gt;% 
  select(-classification) %&amp;gt;% # remove this variable because it&amp;#39;s redundant with `score`
  mutate(lang_cd = ifelse(is.na(lang_cd), &amp;quot;E&amp;quot;, lang_cd), 
         ayp_lep = ifelse(is.na(ayp_lep), &amp;quot;G&amp;quot;, ayp_lep)) %&amp;gt;% 
  sample_frac(.01) %&amp;gt;% # sample 1% of the data to reduce run time
  janitor::remove_empty(c(&amp;quot;rows&amp;quot;, &amp;quot;cols&amp;quot;)) %&amp;gt;% 
  drop_na() %&amp;gt;% 
  select_if(~length(unique(.x)) &amp;gt; 1)

# import fall membership report ethcnicity data and do some basic cleaning and renaming
sheets &amp;lt;- readxl::excel_sheets(here::here(&amp;quot;static&amp;quot;, &amp;quot;data&amp;quot;, &amp;quot;fallmembershipreport_20192020.xlsx&amp;quot;))

ode_schools &amp;lt;- readxl::read_xlsx(here::here(&amp;quot;static&amp;quot;, &amp;quot;data&amp;quot;, &amp;quot;fallmembershipreport_20192020.xlsx&amp;quot;),
                                 sheet = sheets[4])

ethnicities &amp;lt;- ode_schools %&amp;gt;%
  select(attnd_schl_inst_id = `Attending School ID`,
         attnd_dist_inst_id = `Attending District Institution ID`,
         sch_name = `School Name`,
         contains(&amp;quot;%&amp;quot;)) %&amp;gt;%
  janitor::clean_names()

names(ethnicities) &amp;lt;- gsub(&amp;quot;x2019_20_percent&amp;quot;, &amp;quot;p&amp;quot;, names(ethnicities))

# join ethnicity data with original dataset
dat &amp;lt;- left_join(dat, ethnicities)

# import and tidy free and reduced lunch data 
frl &amp;lt;- rio::import(&amp;quot;https://nces.ed.gov/ccd/Data/zip/ccd_sch_033_1718_l_1a_083118.zip&amp;quot;,
              setclass = &amp;quot;tbl_df&amp;quot;)  %&amp;gt;% 
  janitor::clean_names()  %&amp;gt;% 
  filter(st == &amp;quot;OR&amp;quot;)  %&amp;gt;%
  select(ncessch, lunch_program, student_count)  %&amp;gt;% 
  mutate(student_count = replace_na(student_count, 0))  %&amp;gt;% 
  pivot_wider(names_from = lunch_program,
              values_from = student_count)  %&amp;gt;% 
  janitor::clean_names()  %&amp;gt;% 
  mutate(ncessch = as.double(ncessch))

# import student counts for each school across grades
stu_counts &amp;lt;- rio::import(&amp;quot;https://github.com/datalorax/ach-gap-variability/raw/master/data/achievement-gaps-geocoded.csv&amp;quot;, setclass = &amp;quot;tbl_df&amp;quot;)  %&amp;gt;% 
  filter(state == &amp;quot;OR&amp;quot; &amp;amp; year == 1718)  %&amp;gt;% 
  count(ncessch, wt = n)  %&amp;gt;% 
  mutate(ncessch = as.double(ncessch))

# join frl and stu_counts data
frl &amp;lt;- left_join(frl, stu_counts)

# add frl data to train data
dat &amp;lt;- left_join(dat, frl)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After loading in our three datasets, we’ll join them together to make one cohesive data set to use for modelling. After joining, the data contains both student-level variables (e.g. gender, ethnicity, enrollment in special education/talented and gifted programs, etc.) and district-level variables (e.g. school longitude and latitude, proportion of students who qualify for free and reduced-price lunch, etc.), all of which will be included for each 3 of our &lt;code&gt;{tidymodels}&lt;/code&gt; tree-based examples.&lt;/p&gt;
&lt;p&gt;For a more complete description of the variables, you can download the data dictionary &lt;a href=&#34;data_dictionary.csv&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;explore-the-data&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Explore the data&lt;/h1&gt;
&lt;p&gt;We’ll use the &lt;code&gt;skim()&lt;/code&gt; function from &lt;code&gt;{skimr}&lt;/code&gt; to take a closer look at our variables. Many numeric predictors are clearly non-normal (see histograms below), but this is no problem as tree-based methods are robust to non-normality.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;dat %&amp;gt;% 
  select(-contains(&amp;quot;id&amp;quot;), -ncessch, -missing, -not_applicable) %&amp;gt;%  # remove ID and irrelevant variables
  mutate(tst_dt = lubridate::as_date(lubridate::mdy_hms(tst_dt))) %&amp;gt;% # covert test date to date
  modify_if(is.character, as.factor) %&amp;gt;%  # convert character vars to factors
  skim() %&amp;gt;% 
  select(-starts_with(&amp;quot;numeric.p&amp;quot;)) # remove quartiles&lt;/code&gt;&lt;/pre&gt;
&lt;table&gt;
&lt;caption&gt;&lt;span id=&#34;tab:unnamed-chunk-4&#34;&gt;Table 1: &lt;/span&gt;Data summary&lt;/caption&gt;
&lt;tbody&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Name&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Piped data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Number of rows&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1857&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Number of columns&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;41&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;_______________________&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Column type frequency:&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Date&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;factor&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;numeric&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;________________________&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Group variables&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Variable type: Date&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr class=&#34;header&#34;&gt;
&lt;th align=&#34;left&#34;&gt;skim_variable&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;n_missing&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;complete_rate&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;min&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;max&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;median&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;n_unique&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;tst_dt&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2018-03-16&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2018-06-07&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2018-05-18&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;47&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Variable type: factor&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr class=&#34;header&#34;&gt;
&lt;th align=&#34;left&#34;&gt;skim_variable&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;n_missing&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;complete_rate&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;ordered&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;n_unique&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;top_counts&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;gndr&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;M: 939, F: 918&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;ethnic_cd&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;7&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;W: 1151, H: 458, M: 100, A: 79&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;tst_bnch&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;6&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;G6: 343, 1B: 330, G4: 304, G7: 304&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;migrant_ed_fg&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;N: 1793, Y: 64&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;ind_ed_fg&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;N: 1842, Y: 15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;sp_ed_fg&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;N: 1614, Y: 243&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;tag_ed_fg&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;N: 1759, Y: 98&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;econ_dsvntg&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Y: 1100, N: 757&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;ayp_lep&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;10&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;G: 1471, F: 164, Y: 72, E: 58&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;stay_in_dist&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Y: 1811, N: 46&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;stay_in_schl&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Y: 1803, N: 54&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;dist_sped&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;N: 1846, Y: 11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;trgt_assist_fg&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;3&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;N: 1773, Y: 83, y: 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;ayp_schl_partic&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Y: 1846, N: 11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;ayp_dist_prfrm&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Y: 1803, N: 54&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;ayp_schl_prfrm&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Y: 1785, N: 72&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;rc_schl_partic&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Y: 1846, N: 11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;rc_dist_prfrm&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Y: 1803, N: 54&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;rc_schl_prfrm&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Y: 1785, N: 72&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;lang_cd&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;E: 1815, S: 42&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;tst_atmpt_fg&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Y: 1853, P: 4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;grp_rpt_schl_partic&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Y: 1846, N: 11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;grp_rpt_dist_prfrm&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Y: 1845, N: 12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;grp_rpt_schl_prfrm&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Y: 1834, N: 23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;sch_name&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;FALSE&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;699&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Hig: 14, Jud: 14, Hou: 13, Fiv: 11&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Variable type: numeric&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr class=&#34;header&#34;&gt;
&lt;th align=&#34;left&#34;&gt;skim_variable&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;n_missing&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;complete_rate&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;mean&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;sd&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;hist&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;enrl_grd&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;5.44&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1.69&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;▇▃▅▃▃&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;score&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2495.34&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;115.19&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;▁▁▂▇▁&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;lat&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;44.79&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0.99&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;▂▁▂▅▇&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;lon&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;-122.51&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1.16&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;▅▇▁▁▁&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;p_american_indian_alaska_native&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0.01&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0.06&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;▇▁▁▁▁&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;p_asian&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0.04&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0.07&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;▇▁▁▁▁&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;p_native_hawaiian_pacific_islander&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0.01&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0.01&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;▇▁▁▁▁&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;p_black_african_american&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0.02&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0.04&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;▇▁▁▁▁&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;p_hispanic_latino&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0.25&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0.18&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;▇▅▂▁▁&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;p_white&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0.60&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0.20&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;▁▃▅▇▅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;p_multiracial&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0.06&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0.03&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;▇▆▁▁▁&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;free_lunch_qualified&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;231.23&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;147.55&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;▇▇▃▁▁&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;reduced_price_lunch_qualified&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;39.86&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;24.77&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;▆▇▃▁▁&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;no_category_codes&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;271.09&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;165.44&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;▆▇▃▁▁&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;n&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;816.07&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;536.55&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;▇▃▂▁▁&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;While most of our predictors are categorical, we can use &lt;code&gt;{corrplot}&lt;/code&gt; to better visualize the relationships among the numeric variables.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;dat %&amp;gt;% 
  select(-contains(&amp;quot;id&amp;quot;), -ncessch, -missing, -not_applicable) %&amp;gt;% 
  select_if(is.numeric) %&amp;gt;% 
  select(score, everything()) %&amp;gt;% 
  cor(use = &amp;quot;complete.obs&amp;quot;) %&amp;gt;% 
  corrplot::corrplot()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;https://washfaq.netlify.app/post/2020-06-02-tidymodels-decision-tree-learning-in-r/index_files/figure-html/unnamed-chunk-5-1.png&#34; width=&#34;672&#34; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;split-data-and-resample&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Split data and resample&lt;/h1&gt;
&lt;p&gt;The first step of our analysis is to split our data into two separate sets: a “training” set and a “testing” set. The training set is used to train a model and, if desired, to adjust (i.e., “tune”) the model’s hyperparameters before evaluating its final performance on our test data. By allowing us to test a model on a new sample, we assess “out of sample” accuracy (i.e., unseen data-—what all predictive models are interested in) and limit overfitting to the training set. We can do this efficiently with the &lt;code&gt;initial_split()&lt;/code&gt; function. This comes from the &lt;code&gt;{rsample}&lt;/code&gt; package, which is part of the &lt;code&gt;{tidymodels}&lt;/code&gt; package that we already loaded. Defaults put 75% of the data in the training set and 25% in the test set, but this can be adjusted with the &lt;code&gt;prop&lt;/code&gt; argument. Then, we’ll extract the training data from our split object and assign it a name.&lt;/p&gt;
&lt;p&gt;To further prevent over-fitting, we’ll resample our data using &lt;code&gt;vfold_cv()&lt;/code&gt;. This function outputs k-&lt;em&gt;fold&lt;/em&gt; cross-validated versions of our training data, where k = the number of times we resample (unsure why v- is used instead of k- here). By using k = 10 data sets, we get a better estimate of the model’s out-of-sample accuracy. On top of decreasing bias from over-fitting, this is essential when tuning hyperparameters (though we plan to apply defaults and not tune here, for brevity). Though our use of 10-fold cross validation is both frequently used and effective, it should be noted that other methods (e.g., bootstrap resampling) or other k-values are sometimes used to accomplish the same goal.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# split the data
split &amp;lt;- initial_split(dat)

# extract the training data
train &amp;lt;- training(split)

# resample the data with 10-fold cross-validation (10-fold by default)
cv &amp;lt;- vfold_cv(train)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;pre-processing&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Pre-processing&lt;/h1&gt;
&lt;p&gt;Before we add in our data to the model, we’re going to set up an object that pre-processes our data. This is called a &lt;em&gt;recipe&lt;/em&gt;. To create a recipe, you’ll first specify a formula for your model, indicating which variable is your outcome and which are your predictors. Using &lt;code&gt;~.&lt;/code&gt; here will indicate that we want to use all variables other than &lt;code&gt;score&lt;/code&gt; as predictors. Then, we can specify a series of pre-processing steps for our data that directs our recipe to assign our variables a role or performs feature engineering steps. Pre-processing may be sound uncommon, but if you’ve ever used &lt;code&gt;lm()&lt;/code&gt; (or several other &lt;code&gt;R&lt;/code&gt; functions) you’ve done some of this by simply calling the function (e.g., automatic dummy-coding to handle categorical data). This is beneficial because it gives the analyst more control, despite adding complexity to the process.&lt;/p&gt;
&lt;p&gt;A complete list of possible pre-processing steps can be found here: &lt;a href=&#34;https://www.tidymodels.org/find/recipes/&#34; class=&#34;uri&#34;&gt;https://www.tidymodels.org/find/recipes/&lt;/a&gt;&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;rec &amp;lt;- recipe(score ~ ., train) %&amp;gt;% 
  step_mutate(tst_dt = as.numeric(lubridate::mdy_hms(tst_dt))) %&amp;gt;% # convert `test date` variable to a date 
  update_role(contains(&amp;quot;id&amp;quot;), ncessch, new_role = &amp;quot;id vars&amp;quot;) %&amp;gt;% # declare ID variables
  step_nzv(all_predictors(), freq_cut = 0, unique_cut = 0) %&amp;gt;% # remove variables with zero variances
  step_novel(all_nominal()) %&amp;gt;% # prepares test data to handle previously unseen factor levels 
  step_unknown(all_nominal()) %&amp;gt;% # categorizes missing categorical data (NA&amp;#39;s) as `unknown`
  step_medianimpute(all_numeric(), -all_outcomes(), -has_role(&amp;quot;id vars&amp;quot;))  %&amp;gt;% # replaces missing numeric observations with the median
  step_dummy(all_nominal(), -has_role(&amp;quot;id vars&amp;quot;)) # dummy codes categorical variables&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;create-a-model&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Create a model&lt;/h1&gt;
&lt;p&gt;The last step before bringing in our data is to specify our model. This will call upon functions from the &lt;code&gt;{parsnip}&lt;/code&gt; package, which standardizes language for specifying a multitude of statistical models. There are a few core elements that you will need to specify for each model&lt;/p&gt;
&lt;div id=&#34;the-type-of-model&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;The type of model&lt;/h2&gt;
&lt;p&gt;This indicates what type of model you choose to fit, each of which will be a different function. We’ll be focusing on decision tree methods using &lt;code&gt;bag_tree()&lt;/code&gt;, &lt;code&gt;random_forest()&lt;/code&gt;, and &lt;code&gt;boost_tree()&lt;/code&gt;. A full list of models can be found here &lt;a href=&#34;https://www.tidymodels.org/find/parsnip/&#34; class=&#34;uri&#34;&gt;https://www.tidymodels.org/find/parsnip/&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;the-engine&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;The engine&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;set_engine()&lt;/code&gt; calls the package to support the model you specified above.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;the-mode&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;The mode&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;set_mode()&lt;/code&gt; indicates the type of prediction you’d like to use in your model, you’ll choose between regression and classification. Since we are looking to predict student scores, which is a continuous predictor, we’ll be choosing regression.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;the-arguments&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;The arguments&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;set_args()&lt;/code&gt; allows you to set values for various parameters for your model, each model type will have a specific set of parameters that can be altered. For these parameters, you can either set a particular value or you can use the tune function to search for the optimal value of each parameter. Tuning requires a few extra steps, so we will leave the default arguments for clarity. For more information on tuning check out &lt;a href=&#34;https://tune.tidymodels.org/&#34; class=&#34;uri&#34;&gt;https://tune.tidymodels.org/&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;create-a-workflow&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Create a workflow&lt;/h1&gt;
&lt;p&gt;Up to this point we’ve been setting up a lot of individual elements and now it is time to combine them to create a cohesive framework, called a &lt;em&gt;workflow&lt;/em&gt;, so we can run our desired models. First, we’ll use the &lt;code&gt;workflow()&lt;/code&gt; command and then we’ll pulling the recipe and model we already created. The next section shows three examples of specifying models and creating a workflow for different decision tree methods.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;model-examples&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Model Examples&lt;/h1&gt;
&lt;div id=&#34;bagged-trees&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Bagged trees&lt;/h2&gt;
&lt;p&gt;A bagged tree approach creates multiple subsets of data from the training set which are randomly chosen with replacement. Each subset of data is used to train a given decision tree. In the end, we have an ensemble of different models. The predictions from all the different trees are averaged together, giving us a stronger prediction than one tree could independently.&lt;/p&gt;
&lt;div id=&#34;specify-model&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Specify model&lt;/h3&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;set.seed(100)
mod_bag &amp;lt;- bag_tree() %&amp;gt;%
  set_mode(&amp;quot;regression&amp;quot;) %&amp;gt;%
  set_engine(&amp;quot;rpart&amp;quot;, times = 10) # 10 bootstrap resamples&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;create-workflow&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Create workflow&lt;/h3&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;wflow_bag &amp;lt;- workflow() %&amp;gt;% 
  add_recipe(rec) %&amp;gt;%
  add_model(mod_bag)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;fit-the-model&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Fit the model&lt;/h3&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;set.seed(100)
plan(multisession)

fit_bag &amp;lt;- fit_resamples(
  wflow_bag,
  cv,
  metrics = metric_set(rmse, rsq),
  control = control_resamples(verbose = TRUE,
                              save_pred = TRUE,
                              extract = function(x) extract_model(x)))&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;visualize&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Visualize&lt;/h3&gt;
&lt;p&gt;The plot below shows the root nodes from a bagged tree made of 100 trees (10 folds x 10 bootstrapped resamples). Root nodes are the 1st node in a decision tree, and they are determined by which variable best optimizes a loss function (e.g., minimizes mean square error [MSE] for continuous outcomes or Gini Index for categorical outcomes). Put roughly, the most common root nodes can be thought of as the most “important” predictors.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# extract roots
bag_roots &amp;lt;-  function(x){
  x %&amp;gt;% 
  select(.extracts) %&amp;gt;% 
  unnest(cols = c(.extracts)) %&amp;gt;% 
  mutate(models = map(.extracts,
                  ~.x$model_df)) %&amp;gt;% 
  select(-.extracts) %&amp;gt;% 
  unnest(cols = c(models)) %&amp;gt;% 
  mutate(root = map_chr(model,
                     ~as.character(.x$fit$frame[1, 1]))) %&amp;gt;%
  select(root)  
}

# plot
bag_roots(fit_bag) %&amp;gt;% 
  ggplot(mapping = aes(x = fct_rev(fct_infreq(root)))) + 
  geom_bar() + 
  coord_flip() + 
  labs(x = &amp;quot;root&amp;quot;, y = &amp;quot;count&amp;quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;https://washfaq.netlify.app/post/2020-06-02-tidymodels-decision-tree-learning-in-r/index_files/figure-html/unnamed-chunk-11-1.png&#34; width=&#34;672&#34; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;random-forest&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Random forest&lt;/h2&gt;
&lt;p&gt;Random forest is similar to bagged tree methodology but goes one step further. In addition to taking random subsets of data, the model also draws a random selection of features. Instead of utilizing all features, the random subset of features allows more predictors to be eligible root nodes. This is particularly useful for handling high dimensionality data (e.g., have more variables than participants/cases).&lt;/p&gt;
&lt;div id=&#34;specify-the-model&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Specify the model&lt;/h3&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;set.seed(100)
mod_rf &amp;lt;-rand_forest() %&amp;gt;%
  set_engine(&amp;quot;ranger&amp;quot;,
             num.threads = parallel::detectCores(), 
             importance = &amp;quot;permutation&amp;quot;, 
             verbose = TRUE) %&amp;gt;% 
  set_mode(&amp;quot;regression&amp;quot;) %&amp;gt;% 
  set_args(trees = 1000)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;create-workflow-1&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Create workflow&lt;/h3&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;wflow_rf &amp;lt;- workflow() %&amp;gt;% 
  add_model(mod_rf) %&amp;gt;% 
  add_recipe(rec)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;fit-the-model-1&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Fit the model&lt;/h3&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;set.seed(100)
plan(multisession)

fit_rf &amp;lt;- fit_resamples(
  wflow_rf,
  cv,
  metrics = metric_set(rmse, rsq),
  control = control_resamples(verbose = TRUE,
                              save_pred = TRUE,
                              extract = function(x) x)
)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;visualize-1&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Visualize&lt;/h3&gt;
&lt;p&gt;The plot below shows the root nodes from a random forest with 1000 trees (specified using &lt;code&gt;set_args(trees = 1000)&lt;/code&gt; in the parsnip model object).&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# extract roots
rf_tree_roots &amp;lt;- function(x){
  map_chr(1:1000, 
           ~ranger::treeInfo(x, tree = .)[1, &amp;quot;splitvarName&amp;quot;])
}

rf_roots &amp;lt;- function(x){
  x %&amp;gt;% 
  select(.extracts) %&amp;gt;% 
  unnest(cols = c(.extracts)) %&amp;gt;% 
  mutate(fit = map(.extracts,
                   ~.x$fit$fit$fit),
         oob_rmse = map_dbl(fit,
                         ~sqrt(.x$prediction.error)),
         roots = map(fit, 
                        ~rf_tree_roots(.))
         ) %&amp;gt;% 
  select(roots) %&amp;gt;% 
  unnest(cols = c(roots))
}

# plot
rf_roots(fit_rf) %&amp;gt;% 
  group_by(roots) %&amp;gt;% 
  count() %&amp;gt;% 
  arrange(desc(n)) %&amp;gt;% 
  filter(n &amp;gt; 75) %&amp;gt;% 
  ggplot(aes(fct_reorder(roots, n), n)) +
           geom_col() + 
           coord_flip() + 
  labs(x = &amp;quot;root&amp;quot;, y = &amp;quot;count&amp;quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;https://washfaq.netlify.app/post/2020-06-02-tidymodels-decision-tree-learning-in-r/index_files/figure-html/unnamed-chunk-15-1.png&#34; width=&#34;672&#34; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;boosted-trees&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Boosted trees&lt;/h2&gt;
&lt;p&gt;Boosted trees, like bagged trees, are an ensemble model. Instead of applying successive models to resampled data and pooling estimates, boosted trees fit the next tree to the residuals (i.e., error term) of the prior tree. The goal is to minimize residual error through multiple trees, and is typically done with fairly “shallow” decision tree (i.e., 1-6 splits in each tree). Though each model is only slightly improving the error rate, the sequential use of many shallow trees makes computationally efficient (i.e. reduced run time) and highly accurate predictions.&lt;/p&gt;
&lt;div id=&#34;specify-the-model-1&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Specify the model&lt;/h3&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;mod_boost &amp;lt;- boost_tree() %&amp;gt;% 
  set_engine(&amp;quot;xgboost&amp;quot;, nthreads = parallel::detectCores()) %&amp;gt;% 
  set_mode(&amp;quot;regression&amp;quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;create-workflow-2&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Create workflow&lt;/h3&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;wflow_boost &amp;lt;- workflow() %&amp;gt;% 
  add_recipe(rec) %&amp;gt;% 
  add_model(mod_boost)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;fit-the-model-2&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Fit the model&lt;/h3&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;set.seed(100)
plan(multisession)

fit_boost &amp;lt;- fit_resamples(
  wflow_boost, 
  cv,
  metrics = metric_set(rmse, rsq),
  control = control_resamples(verbose = TRUE,
                              save_pred = TRUE)
)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;visualize-2&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Visualize&lt;/h3&gt;
&lt;p&gt;One of the few downfalls of &lt;code&gt;{tidymodels}&lt;/code&gt; is its (current) inability to plot these tree-based models. For the past two models, it was simpler to extract root nodes and plot them, but their interpretation (as we’re fitting to residuals instead of data sets) are not straightforward. For that reason, we don’t have any pretty plots here. Instead, we’ll skip to evaluating the metrics of all models.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;evaluate-metrics&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Evaluate metrics&lt;/h1&gt;
&lt;p&gt;After running these three models, it’s time to evaluate their performance. We can do this with &lt;code&gt;tune::collect_metrics()&lt;/code&gt;. The table below shows the estimate of the out-of-sample performance for each of our 3 models.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;collect_metrics(fit_bag) %&amp;gt;% 
  bind_rows(collect_metrics(fit_rf)) %&amp;gt;%
  bind_rows(collect_metrics(fit_boost)) %&amp;gt;% 
  filter(.metric == &amp;quot;rmse&amp;quot;) %&amp;gt;% 
  mutate(model = c(&amp;quot;bag&amp;quot;, &amp;quot;rf&amp;quot;, &amp;quot;boost&amp;quot;)) %&amp;gt;% 
  select(model, everything()) %&amp;gt;% 
  knitr::kable()&lt;/code&gt;&lt;/pre&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr class=&#34;header&#34;&gt;
&lt;th align=&#34;left&#34;&gt;model&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;.metric&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;.estimator&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;mean&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;n&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;std_err&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;bag&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;rmse&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;standard&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;98.42890&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;10&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2.504904&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;rf&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;rmse&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;standard&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;95.20828&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;10&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;3.466279&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;boost&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;rmse&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;standard&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;95.35888&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;10&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2.764773&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Here, we are faced with a common problem in the machine learning world: choosing between models that perform similarly (see overlapping standard errors). Whether we would prefer random forests or bagged trees may depend on computational efficiency (i.e., time) or other factors. In practice, tuning several hyperparameters may have made one model clearly preferable over the others, but in our case - relying on all defaults - we would probably have similar performance with both models on a new data set and would prefer random forest or boosted tree models for their efficiency.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;out-of-sample-performance&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Out-of-sample performance&lt;/h1&gt;
&lt;p&gt;The final step is to apply each trained model to our test data using &lt;code&gt;last_fit()&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# bagged trees
final_fit_bag &amp;lt;- last_fit(
  wflow_bag,
  split = split
)

# random forest
final_fit_rf &amp;lt;- last_fit(
  wflow_rf,
  split = split
)

# boosted trees
final_fit_boost &amp;lt;- last_fit(
  wflow_boost,
  split = split
)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The table below shows the actual out-of-sample performance for each of our 3 models.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# show performance on test data
collect_metrics(final_fit_bag) %&amp;gt;% 
  bind_rows(collect_metrics(final_fit_rf)) %&amp;gt;%
  bind_rows(collect_metrics(final_fit_boost)) %&amp;gt;% 
  filter(.metric == &amp;quot;rmse&amp;quot;) %&amp;gt;% 
  mutate(model = c(&amp;quot;bag&amp;quot;, &amp;quot;rf&amp;quot;, &amp;quot;boost&amp;quot;)) %&amp;gt;% 
  select(model, everything()) %&amp;gt;% 
  knitr::kable()&lt;/code&gt;&lt;/pre&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr class=&#34;header&#34;&gt;
&lt;th align=&#34;left&#34;&gt;model&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;.metric&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;.estimator&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;.estimate&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;bag&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;rmse&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;standard&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;93.36504&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;rf&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;rmse&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;standard&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;91.18114&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;boost&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;rmse&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;standard&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;94.22609&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;After applying our 3 trained models to the unseen test data, it looks like random forest is the winner since it has the lowest RMSE. In this example, we only used 1% of the data to train these models, which could make it difficult to meaningfully compare their performance. However, the random forest model also results in the best out-of-sample prediction (RMSE = 83.47) when using all of the available data, which we did for the &lt;a href=&#34;https://www.kaggle.com/c/edld-654-spring-2020/leaderboard&#34;&gt;Kaggle competition&lt;/a&gt;.&lt;/p&gt;
&lt;details&gt;
&lt;p&gt;&lt;summary&gt;Session Info&lt;/summary&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## ─ Session info ───────────────────────────────────────────────────────────────
##  setting  value                       
##  version  R version 3.6.2 (2019-12-12)
##  os       macOS Catalina 10.15.6      
##  system   x86_64, darwin15.6.0        
##  ui       X11                         
##  language (EN)                        
##  collate  en_US.UTF-8                 
##  ctype    en_US.UTF-8                 
##  tz       America/Los_Angeles         
##  date     2020-10-26                  
## 
## ─ Packages ───────────────────────────────────────────────────────────────────
##  package       * version    date       lib
##  assertthat      0.2.1      2019-03-21 [1]
##  backports       1.1.10     2020-09-15 [1]
##  baguette      * 0.0.1      2020-04-14 [1]
##  base64enc       0.1-3      2015-07-28 [1]
##  bayesplot       1.7.1      2019-12-01 [1]
##  blogdown        0.17       2019-11-13 [1]
##  bookdown        0.21       2020-10-13 [1]
##  boot            1.3-24     2019-12-20 [1]
##  broom         * 0.5.5      2020-02-29 [1]
##  C50             0.1.3      2020-01-13 [1]
##  callr           3.5.1      2020-10-13 [1]
##  cellranger      1.1.0      2016-07-27 [1]
##  class           7.3-15     2019-01-01 [2]
##  cli             2.1.0      2020-10-12 [1]
##  codetools       0.2-16     2018-12-24 [2]
##  colorspace      1.4-1      2019-03-18 [1]
##  colourpicker    1.0        2017-09-27 [1]
##  corrplot        0.84       2017-10-16 [1]
##  crayon          1.3.4      2017-09-16 [1]
##  crosstalk       1.1.0.1    2020-03-13 [1]
##  Cubist          0.2.3      2020-01-10 [1]
##  data.table      1.12.8     2019-12-09 [1]
##  DBI             1.1.0      2019-12-15 [1]
##  dbplyr          1.4.2      2019-06-17 [1]
##  dials         * 0.0.8.9000 2020-07-23 [1]
##  DiceDesign      1.8-1      2019-07-31 [1]
##  digest          0.6.27     2020-10-24 [1]
##  dplyr         * 1.0.2      2020-08-18 [1]
##  DT              0.16       2020-10-13 [1]
##  dygraphs        1.1.1.6    2018-07-11 [1]
##  earth           5.1.2      2019-11-09 [1]
##  ellipsis        0.3.1      2020-05-15 [1]
##  evaluate        0.14       2019-05-28 [1]
##  fansi           0.4.1      2020-01-08 [1]
##  farver          2.0.3      2020-01-16 [1]
##  fastmap         1.0.1      2019-10-08 [1]
##  forcats       * 0.4.0      2019-02-17 [1]
##  foreach         1.5.0      2020-03-30 [1]
##  Formula         1.2-3      2018-05-03 [1]
##  fs              1.3.1      2019-05-06 [1]
##  furrr           0.1.0      2018-05-16 [1]
##  future        * 1.18.0     2020-07-09 [1]
##  generics        0.0.2      2018-11-29 [1]
##  ggplot2       * 3.3.2      2020-06-19 [1]
##  ggridges        0.5.2      2020-01-12 [1]
##  globals         0.12.5     2019-12-07 [1]
##  glue            1.4.2      2020-08-27 [1]
##  gower           0.2.2      2020-06-23 [1]
##  GPfit           1.0-8      2019-02-08 [1]
##  gridExtra       2.3        2017-09-09 [1]
##  gtable          0.3.0      2019-03-25 [1]
##  gtools          3.8.1      2018-06-26 [1]
##  hardhat         0.1.4      2020-07-02 [1]
##  haven           2.2.0      2019-11-08 [1]
##  highr           0.8        2019-03-20 [1]
##  hms             0.5.3      2020-01-08 [1]
##  htmltools       0.5.0      2020-06-16 [1]
##  htmlwidgets     1.5.2      2020-10-03 [1]
##  httpuv          1.5.4      2020-06-06 [1]
##  httr            1.4.2      2020-07-20 [1]
##  igraph          1.2.4.2    2019-11-27 [1]
##  infer         * 0.5.1      2019-11-19 [1]
##  inline          0.3.15     2018-05-18 [1]
##  inum            1.0-1      2019-04-25 [1]
##  ipred           0.9-9      2019-04-28 [1]
##  iterators       1.0.12     2019-07-26 [1]
##  janeaustenr     0.1.5      2017-06-10 [1]
##  jsonlite        1.7.1      2020-09-07 [1]
##  knitr           1.30       2020-09-22 [1]
##  labeling        0.4.2      2020-10-20 [1]
##  later           1.1.0.1    2020-06-05 [1]
##  lattice         0.20-38    2018-11-04 [2]
##  lava            1.6.7      2020-03-05 [1]
##  lhs             1.0.2      2020-04-13 [1]
##  libcoin         1.0-5      2019-08-27 [1]
##  lifecycle       0.2.0      2020-03-06 [1]
##  listenv         0.8.0      2019-12-05 [1]
##  lme4            1.1-21     2019-03-05 [1]
##  loo             2.2.0      2019-12-19 [1]
##  lubridate       1.7.9      2020-06-08 [1]
##  magrittr        1.5        2014-11-22 [1]
##  markdown        1.1        2019-08-07 [1]
##  MASS            7.3-51.4   2019-03-31 [2]
##  Matrix          1.2-18     2019-11-27 [2]
##  matrixStats     0.56.0     2020-03-13 [1]
##  mime            0.9        2020-02-04 [1]
##  miniUI          0.1.1.1    2018-05-18 [1]
##  minqa           1.2.4      2014-10-09 [1]
##  modelr          0.1.6      2020-02-22 [1]
##  munsell         0.5.0      2018-06-12 [1]
##  mvtnorm         1.1-0      2020-02-24 [1]
##  nlme            3.1-142    2019-11-07 [2]
##  nloptr          1.2.2.1    2020-03-11 [1]
##  nnet            7.3-12     2016-02-02 [2]
##  parsnip       * 0.1.2.9000 2020-07-17 [1]
##  partykit        1.2-7      2020-03-06 [1]
##  pillar          1.4.6      2020-07-10 [1]
##  pkgbuild        1.1.0      2020-07-13 [1]
##  pkgconfig       2.0.3      2019-09-22 [1]
##  plotmo          3.5.7      2020-04-15 [1]
##  plotrix         3.7-8      2020-04-16 [1]
##  plyr            1.8.6      2020-03-03 [1]
##  prettyunits     1.1.1      2020-01-24 [1]
##  pROC            1.16.2     2020-03-19 [1]
##  processx        3.4.4      2020-09-03 [1]
##  prodlim         2019.11.13 2019-11-17 [1]
##  promises        1.1.1      2020-06-09 [1]
##  ps              1.4.0      2020-10-07 [1]
##  purrr         * 0.3.4      2020-04-17 [1]
##  R6              2.4.1      2019-11-12 [1]
##  ranger          0.12.1     2020-01-10 [1]
##  Rcpp            1.0.5      2020-07-06 [1]
##  readr         * 1.3.1      2018-12-21 [1]
##  readxl          1.3.1      2019-03-13 [1]
##  recipes       * 0.1.13     2020-06-23 [1]
##  repr            1.1.0      2020-01-28 [1]
##  reprex          0.3.0      2019-05-16 [1]
##  reshape2        1.4.3      2017-12-11 [1]
##  rlang           0.4.8      2020-10-08 [1]
##  rmarkdown       2.5        2020-10-21 [1]
##  rpart           4.1-15     2019-04-12 [1]
##  rsample       * 0.0.7      2020-06-04 [1]
##  rsconnect       0.8.16     2019-12-13 [1]
##  rstan           2.19.3     2020-02-11 [1]
##  rstanarm        2.19.2     2019-10-03 [1]
##  rstantools      2.0.0      2019-09-15 [1]
##  rstudioapi      0.11       2020-02-07 [1]
##  rvest           0.3.5      2019-11-08 [1]
##  scales        * 1.1.1      2020-05-11 [1]
##  sessioninfo     1.1.1      2018-11-05 [1]
##  shiny           1.5.0      2020-06-23 [1]
##  shinyjs         1.1        2020-01-13 [1]
##  shinystan       2.5.0      2018-05-01 [1]
##  shinythemes     1.1.2      2018-11-06 [1]
##  skimr         * 2.1.1      2020-04-16 [1]
##  SnowballC       0.6.0      2019-01-15 [1]
##  StanHeaders     2.21.0-1   2020-01-19 [1]
##  stringi         1.5.3      2020-09-09 [1]
##  stringr       * 1.4.0      2019-02-10 [1]
##  survival        3.1-8      2019-12-03 [2]
##  TeachingDemos   2.12       2020-04-07 [1]
##  threejs         0.3.3      2020-01-21 [1]
##  tibble        * 3.0.4      2020-10-12 [1]
##  tidymodels    * 0.1.0      2020-02-16 [1]
##  tidyposterior   0.0.2      2018-11-15 [1]
##  tidypredict     0.4.5      2020-02-10 [1]
##  tidyr         * 1.1.0      2020-05-20 [1]
##  tidyselect      1.1.0      2020-05-11 [1]
##  tidytext        0.2.3      2020-03-04 [1]
##  tidyverse     * 1.3.0      2019-11-21 [1]
##  timeDate        3043.102   2018-02-21 [1]
##  tokenizers      0.2.1      2018-03-29 [1]
##  tune          * 0.1.1.9000 2020-07-23 [1]
##  vctrs           0.3.4      2020-08-29 [1]
##  withr           2.3.0      2020-09-22 [1]
##  workflows     * 0.1.2.9000 2020-07-23 [1]
##  xfun            0.18       2020-09-29 [1]
##  xgboost       * 0.90.0.2   2019-08-01 [1]
##  xml2            1.2.2      2019-08-09 [1]
##  xtable          1.8-4      2019-04-21 [1]
##  xts             0.12-0     2020-01-19 [1]
##  yaml            2.2.1      2020-02-01 [1]
##  yardstick     * 0.0.7      2020-07-13 [1]
##  zoo             1.8-7      2020-01-10 [1]
##  source                               
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  Github (tidymodels/dials@fbea0c2)    
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  Github (tidymodels/parsnip@de6e9cd)  
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  Github (tidymodels/tune@8c280fd)     
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.2)                       
##  Github (tidymodels/workflows@d4cbe41)
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.0)                       
##  CRAN (R 3.6.2)                       
##  CRAN (R 3.6.0)                       
## 
## [1] /Users/bcullen/Library/R/3.6/library
## [2] /Library/Frameworks/R.framework/Versions/3.6/Resources/library&lt;/code&gt;&lt;/pre&gt;
&lt;/details&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Data Science Training in Psychology</title>
      <link>https://washfaq.netlify.app/post/2020-03-08-data-science-training-needs-in-grad-school/</link>
      <pubDate>Sun, 08 Mar 2020 00:00:00 +0000</pubDate>
      <guid>https://washfaq.netlify.app/post/2020-03-08-data-science-training-needs-in-grad-school/</guid>
      <description>
&lt;script src=&#34;https://washfaq.netlify.app/rmarkdown-libs/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;
&lt;link href=&#34;https://washfaq.netlify.app/rmarkdown-libs/anchor-sections/anchor-sections.css&#34; rel=&#34;stylesheet&#34; /&gt;
&lt;script src=&#34;https://washfaq.netlify.app/rmarkdown-libs/anchor-sections/anchor-sections.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;Psychology is generally considered a “soft” science, on the opposite end of the spectrum from the “hard” sciences of physics, chemistry, and biology. This often creates a misconception that psychology is somehow not as quantitative, computational, or rigorous, methodologically. To the contrary, psychology is in fact very “hard” (some might even say, &lt;a href=&#34;https://thehardestscience.com/2009/03/14/making-progress-in-the-hardest-science/&#34; target=&#34;_blank&#34;&gt;“the hardest”&lt;/a&gt;). Why? Because explaining human cognition and behavior is really difficult. People do not think and behave in predictable and consistent ways like atoms and molecules.&lt;/p&gt;
&lt;p&gt;Indeed, the combination of random variation (“noise”) in how we humans respond to our environment on an given day/hour/minute, combined with the inherent challenge of proper sampling, reliable measurement and accurate model building makes data analysis for a psychologist no easy feat. Explaining variance in psychological data has required centuries of refining statistical methods and computational tools. Fortunately, today’s scientists have access to open-source software like R and Python that have &lt;em&gt;vastly&lt;/em&gt; enhanced our ability to work with data in a way that is more transparent and reproducible. As a result, the teaching of these tools is becoming increasingly more common in psychology graduate programs (and many other fields), particularly in statistics classes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div id=&#34;graduate-statistics&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Graduate statistics&lt;/h1&gt;
&lt;p&gt;The Department of Psychology at the University of Oregon requires first-year graduate students to take a 3-course series of classes on statistics and data analysis. (You can access the materials for these classes &lt;a href=&#34;https://github.com/uopsych&#34; target=&#34;_blank&#34;&gt;here.&lt;/a&gt;) As I’m sure used to be the case in psychology departments across many universities, the labs for these classes were originally taught in SPSS. However, thanks to the efforts of some hard-working graduate teaching assistants who served as lab instructors at the time, the labs eventually transitioned to being taught entirely in R.&lt;/p&gt;
&lt;center&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;
&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;
When I started TA-ing for graduate stats, we (&lt;a href=&#34;https://twitter.com/roseberrymaier?ref_src=twsrc%5Etfw&#34;&gt;&lt;span class=&#34;citation&#34;&gt;@roseberrymaier&lt;/span&gt;&lt;/a&gt;, &lt;a href=&#34;https://twitter.com/flourneuro?ref_src=twsrc%5Etfw&#34;&gt;&lt;span class=&#34;citation&#34;&gt;@flourneuro&lt;/span&gt;&lt;/a&gt;) translated the labs from SPSS to R. We created a bunch of .Rmd files for students to work from. It&#39;s so cool to see that those students are the TAs now, and they&#39;re creating these amazing materials! &lt;a href=&#34;https://t.co/myMGefLxQX&#34;&gt;https://t.co/myMGefLxQX&lt;/a&gt;
&lt;/p&gt;
— Dr. Jessica Kosie (&lt;span class=&#34;citation&#34;&gt;@JessKosie&lt;/span&gt;) &lt;a href=&#34;https://twitter.com/JessKosie/status/1236017394260348930?ref_src=twsrc%5Etfw&#34;&gt;March 6, 2020&lt;/a&gt;
&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;/center&gt;
&lt;p&gt;&lt;br&gt;
While learning R in first-year grad stats has immense benefits, it is also really challenging. This was certainly my experience, anyway. In addition to grappling with the dense conceptual material, learning a programming language and using it to do statistics felt really daunting since I had very little programming background before graduate school. And the reality is, given that many (myself included) tend to experience a large learning curve with programming, combined with the already hefty gradstats curriculum, there just isn’t space in these classes to teach students much beyond the basics of R.&lt;/p&gt;
&lt;hr /&gt;
&lt;/div&gt;
&lt;div id=&#34;training-needs&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Training needs&lt;/h1&gt;
&lt;p&gt;But the way things seem to be moving, it’s becoming more common for many students to need more general data science skills in grad school. Current psychology grad students at UO (n = 28) were recently surveyed about the degree to which they perceive they will need different data science-related skills for their desired careers and how much training in those skills is available at UO to their knowledge. Specifically, they were asked,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;On a scale of 0 (“Not at all”) to 4 (“Essential”), how much do you NEED this skill for your desired career?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On a scale of 0 (“Not at all”) to 4 (“Complete”), how much training is PROVIDED in this skill at your institution?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I created the plot below (using ggplot2) to visualize how much students report they need these skills compared to how much training they feel they already have.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;training_dotplot_se.png&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Interestingly, the top two skills that students reported needing the most on average for their careers are data visualization and data wrangling. Fortunately, this was the first year (to my knowledge) that PSY611, the first course in the gradstats sequence, included entire labs devoted to &lt;a href=&#34;https://uopsych.github.io/psy611/labs/lab-6.html&#34; target=&#34;_blank&#34;&gt;data visualization&lt;/a&gt; and &lt;a href=&#34;https://uopsych.github.io/psy611/labs/lab-5.html&#34; target=&#34;_blank&#34;&gt;data wrangling&lt;/a&gt;. More good news is that other faculty in the psych department are starting to offer courses that focus more on these skills that students seem to need the most. For example, &lt;a href=&#34;https://twitter.com/robchavez&#34; target=&#34;_blank&#34;&gt;Rob Chavez&lt;/a&gt; has offered a fantastic seminar called &lt;a href=&#34;https://robchavez.github.io/datascience_gallery/syllabus.html&#34; target=&#34;_blank&#34;&gt;Data Science Methods in Psychology&lt;/a&gt; that covered a wide range of data science topics from &lt;a href=&#34;https://robchavez.github.io/datascience_gallery/html_only/general_programming.html&#34; target=&#34;_blank&#34;&gt;programming in R&lt;/a&gt; to &lt;a href=&#34;https://robchavez.github.io/datascience_gallery/html_only/text_processing.html&#34; target=&#34;_blank&#34;&gt;text processing&lt;/a&gt; to &lt;a href=&#34;https://robchavez.github.io/datascience_gallery/html_only/packages.html&#34; target=&#34;_blank&#34;&gt;package creation&lt;/a&gt; that ultimately turned into a great collection of student-created tutorials (all of which are available &lt;a href=&#34;https://robchavez.github.io/datascience_gallery/index.html&#34; target=&#34;_blank&#34;&gt;here&lt;/a&gt;).&lt;/p&gt;
&lt;center&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;
&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;
A collection of fantastic R tutorials from my ‘Data Science Methods in Psychology’ seminar course, created by our amazing &lt;a href=&#34;https://twitter.com/UOPsych?ref_src=twsrc%5Etfw&#34;&gt;&lt;span class=&#34;citation&#34;&gt;@UOPsych&lt;/span&gt;&lt;/a&gt; grad students. &lt;a href=&#34;https://t.co/DhBcn940uz&#34;&gt;https://t.co/DhBcn940uz&lt;/a&gt;
&lt;/p&gt;
— Rob Chavez (&lt;span class=&#34;citation&#34;&gt;@robchavez&lt;/span&gt;) &lt;a href=&#34;https://twitter.com/robchavez/status/1006683799294390273?ref_src=twsrc%5Etfw&#34;&gt;June 12, 2018&lt;/a&gt;
&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;/center&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Among other crucial research skills like study design, data collection, and research ethics, the other most coveted technical skill seems to be &lt;em&gt;programming&lt;/em&gt;. In fact, general programming skills seems to be where there is currently the biggest gap in training in our department. The graph below shows skills ranked in descending order by how large the gap is between how much training in those skills students need and how much they currently have.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;training_gaps.png&#34; /&gt;&lt;/p&gt;
&lt;p&gt;On the whole, it seems that that there are bigger training gaps for more general data science skills (e.g., programming in R and Python, data wrangling, data visualization). In contrast, the smallest gaps exist for more specialized skills like advanced statistics (e.g., computational modeling, network analysis, structural equation modeling) – likely because our department has an entire class devoted to each of these topics.&lt;/p&gt;
&lt;hr /&gt;
&lt;/div&gt;
&lt;div id=&#34;learning-resources&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Learning Resources&lt;/h1&gt;
&lt;p&gt;So, for the most part, it seems that grad students in our department want more training in general data science skills above and beyond the training they are currently receiving through coursework. Often what this means is that grad students end up teaching themselves (and each other) these skills. Some of my peers have made really incredible tutorials on new tools and methodologies they’ve recently learned. Sometimes students also attend specialized methods workshops and take really detailed notes that could greatly benefit others who want to learn the same kind of methods. My goal is to make it easier for people (both within our department and beyond) to find these resources.&lt;/p&gt;
&lt;p&gt;To that end, I am currently working with &lt;a href=&#34;https://twitter.com/saraweston09&#34; target=&#34;_blank&#34;&gt;Sara Weston&lt;/a&gt; to create and curate a searchable central repository of data science resources at UO that will house such student-created tutorials, workshop notes, and other data science products (e.g. R packages, shiny apps, etc.) that other students can benefit from. We are also planning to add resources from our department’s data science and statistics classes (e.g. the gradstats sequence, multilevel modeling, network analysis, data science seminar, etc.). The hope is that making these resources easier to find and share by putting them all in one place will start to reduce some of the current gaps in data science training. The additional benefit is that students will be able to share their data science “side projects” more broadly, and it will be easier for people to know who they might be able to ask for help with learning certain topics when they need it.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This is a work in progress, so stay tuned for more details!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;/div&gt;
&lt;div id=&#34;a-final-thought&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;A final thought&lt;/h1&gt;
&lt;p&gt;Reflecting on all this has brought home a thought that I think is worth sharing. I have come to realize that, &lt;strong&gt;as grad students, one of the best resources we have access to during our time in grad school is &lt;em&gt;each other&lt;/em&gt;&lt;/strong&gt;. Personally, I have learned so much over the years from my &lt;a href=&#34;https://sanlab.uoregon.edu/people/&#34; target=&#34;_blank&#34;&gt;fellow lab members&lt;/a&gt;. Without them, I would not have conquered my fear of Github or felt inspired to learn more about R and other programming languages. Perhaps the most impactful benefit I’ve received from them, though, is their &lt;em&gt;encouragement&lt;/em&gt; – and that, in particular, is something I hope to pay forward as much as possible.&lt;/p&gt;
&lt;p&gt;We all enter grad school with different backgrounds and skill sets, and in so many situations the combination of our different strengths can lead to mutual benefit. So why not help each other out?&lt;/p&gt;
&lt;center&gt;
&lt;img src=&#34;https://media.giphy.com/media/phJ6eMRFYI6CQ/giphy.gif&#34; /&gt;
&lt;/center&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>One Size Rarely Fits All</title>
      <link>https://washfaq.netlify.app/post/2020-03-08-one-size-rarely-fits-all/</link>
      <pubDate>Sun, 08 Mar 2020 00:00:00 +0000</pubDate>
      <guid>https://washfaq.netlify.app/post/2020-03-08-one-size-rarely-fits-all/</guid>
      <description>
&lt;script src=&#34;https://washfaq.netlify.app/rmarkdown-libs/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;
&lt;link href=&#34;https://washfaq.netlify.app/rmarkdown-libs/anchor-sections/anchor-sections.css&#34; rel=&#34;stylesheet&#34; /&gt;
&lt;script src=&#34;https://washfaq.netlify.app/rmarkdown-libs/anchor-sections/anchor-sections.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;Think about the last time you had a splitting headache and needed some quick relief. Which bottle did you reach for? Tylenol or Advil? Why? Maybe you think of yourself as a “Tylenol person” or an “Advil person” because one of these has worked for you before. Or maybe one always upsets your stomach. The point is that not everyone experiences the same pain relief from one pill. Some people prefer Tylenol and others Advil, but nobody quite knows why.&lt;/p&gt;
&lt;p&gt;The same is true of psychological treatments—they don’t work the same way for all people. People differ in how they respond to treatments for depression, anxiety, addiction, and so forth. The lingo in the field is that there are individual differences in treatment effectiveness. Why? Because, to state the obvious, no two people are exactly alike. And that fact poses a problem for the study of these treatments. Researchers test psychological treatments the same way they test drugs like Tylenol and Advil—using randomized controlled trials (RCTs). People are assigned at random to either one group, which receives a treatment, or another group, which does not. RCTs are an excellent way to assess the differences between the groups on average. The group difference indicates how well the treatment works. The problem is that researchers tend to treat people who differ from their group’s average as mere statistical fluctuations—“noise” in the signal.&lt;/p&gt;
&lt;p&gt;The drawback of group-to-group comparisons is that they hide person-to-person differences that may be important. For example, even when one group does a lot better than another on average, there may still be many people in the first group who do not improve at all. Or maybe some people in the first group get worse even though their group got better overall. Instead of only thinking at the “group” level, we need to pay more attention to person-to-person differences. This will help us learn why treatments work only for some individuals and not others.&lt;/p&gt;
&lt;p&gt;How do we learn for whom psychological treatments will work? There are three main things we need to know:&lt;/p&gt;
&lt;div id=&#34;how-does-the-treatment-work&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;1) How does the treatment work?&lt;/h1&gt;
&lt;p&gt;At this point, there is strong evidence that Tylenol is an effective painkiller. But, even after decades of research, we still don’t fully understand how Tylenol relieves pain. Similarly, though we know that many psychological treatments are effective (at least for some people), we do not know how these treatments work. For example, researchers don’t know which parts of the brain are changed by most treatments. If we knew more specifics about how a treatment worked, we could improve it. We could focus our efforts on the parts of the treatment that make people better and remove the parts that don’t seem as important. And here’s the bonus: If we knew how treatments worked, that would help us learn for whom they work. Imagine we knew that a treatment reduced depression by decreasing self-criticism. In other words, a reduction in self-criticism is the one and only active ingredient in this treatment. If so, then people who criticize themselves a lot would be good candidates to benefit most from this treatment.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;what-are-the-unique-causes-of-the-problem-for-a-given-person&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;2) What are the unique causes of the problem for a given person?&lt;/h1&gt;
&lt;p&gt;To predict whether someone would benefit from a given treatment, we need to know more about the special factors underlying that person’s problem. In terms of pain, Tylenol is usually the better option for headache pain, and Advil is a good bet for inflammation. Similarly, a psychological treatment will work for a given person only if it addresses whatever caused the problem in the first place. Consider two people who both experience severe anxiety, but for different reasons. If genetic factors cause one person’s anxiety while past trauma is the main source of the other person’s anxiety, then these two individuals will likely need different types of treatment.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;how-does-the-treatment-mesh-with-a-persons-unique-characteristics&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;3) How does the treatment mesh with a person’s unique characteristics?&lt;/h1&gt;
&lt;p&gt;Like all drugs, Tylenol and Advil have side effects. And it turns out that they have different side effects depending on whether somebody is at risk for heart disease. So, people who have experienced a heart attack, for example, must carefully choose which pill to take when they have a headache. Similarly, whether or not a psychological treatment will work for somebody might depend on that person’s age, gender, or life history, to name just a few examples. The success of many treatments also depends on how severe a person’s problem is to begin with. Consider again the example of a treatment for depression that works on average for a group of people. Perhaps this treatment works best for people who are severely depressed because it focuses on a symptom that is more common in those people. A different treatment, which also works on average, might consistently decrease depression in mildly depressed people but not work at all for severely depressed people.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;the-bottom-line&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;The bottom line&lt;/h1&gt;
&lt;p&gt;With answers to these three questions, researchers can begin to tailor psychological treatments to the unique needs of different people. We know that a given treatment will not work, at least not equally well, for every person. But being able to predict at the outset who will benefit and who won’t could save a lot of time and money. Rather than treating individual differences as “noise,” we can use them to glean potentially important information. If we can better understand why some people benefit from treatment while others don’t, we can make treatments more effective for more people. Eventually, this will allow more people to live healthier lives.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Note&lt;/em&gt;. I originally wrote this piece for Psychology Today. See the original post &lt;a href=&#34;https://www.psychologytoday.com/us/blog/the-motivated-brain/201712/one-size-rarely-fits-all&#34; target=&#34;_blank&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
</description>
    </item>
    
  </channel>
</rss>
