<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>On clinical microbiology and data</title>
    <link>http://mtk.one/</link>
      <atom:link href="http://mtk.one/index.xml" rel="self" type="application/rss+xml" />
    <description>On clinical microbiology and data</description>
    <generator>Wowchemy (https://wowchemy.com)</generator><language>en-us</language><lastBuildDate>Sat, 01 Jun 2030 13:00:00 +0000</lastBuildDate>
    <image>
      <url>http://mtk.one/media/icon_hua2ec155b4296a9c9791d015323e16eb5_11927_512x512_fill_lanczos_center_3.png</url>
      <title>On clinical microbiology and data</title>
      <link>http://mtk.one/</link>
    </image>
    
    <item>
      <title>Example Talk</title>
      <link>http://mtk.one/talk/example-talk/</link>
      <pubDate>Sat, 01 Jun 2030 13:00:00 +0000</pubDate>
      <guid>http://mtk.one/talk/example-talk/</guid>
      <description>&lt;div class=&#34;alert alert-note&#34;&gt;
  &lt;div&gt;
    Click on the &lt;strong&gt;Slides&lt;/strong&gt; button above to view the built-in slides feature.
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Slides can be added in a few ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Create&lt;/strong&gt; slides using Wowchemy&amp;rsquo;s &lt;a href=&#34;https://wowchemy.com/docs/managing-content/#create-slides&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;em&gt;Slides&lt;/em&gt;&lt;/a&gt; feature and link using &lt;code&gt;slides&lt;/code&gt; parameter in the front matter of the talk file&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Upload&lt;/strong&gt; an existing slide deck to &lt;code&gt;static/&lt;/code&gt; and link using &lt;code&gt;url_slides&lt;/code&gt; parameter in the front matter of the talk file&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Embed&lt;/strong&gt; your slides (e.g. Google Slides) or presentation video on this page using &lt;a href=&#34;https://wowchemy.com/docs/writing-markdown-latex/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;shortcodes&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Further event details, including &lt;a href=&#34;https://wowchemy.com/docs/writing-markdown-latex/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;page elements&lt;/a&gt; such as image galleries, can be added to the body of this page.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Pseudomonas aeruginosa VAP 8 vs 15 days</title>
      <link>http://mtk.one/post/pa-vap-8-vs-15-days/</link>
      <pubDate>Sat, 14 May 2022 00:00:00 +0000</pubDate>
      <guid>http://mtk.one/post/pa-vap-8-vs-15-days/</guid>
      <description>


&lt;p&gt;This is an attempt to make sense of the statistics of the paper “Comparison of 8 versus 15 days of antibiotic therapy for Pseudomonas aeruginosa ventilator-associated pneumonia in adults: a randomized, controlled, open-label trial” &lt;a href=&#34;https://doi.org/10.1007/s00134-022-06690-5&#34;&gt;published in Intensive Care Med&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The authors claim to show no difference between short and long-duration treatments, but their evidence contradicts their claims.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;library(magrittr)
library(scales)
set.seed(2022-05-13)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I will focus on the authors bayesian analysis, as it provides clearer insight, in my opinion.&lt;/p&gt;
&lt;p&gt;The authors perform a betabinomial analysis with equal beta priors for the event rate in both groups centered on previously described event rates, mean = 35,7%. Then vary their effective samples size to generate variance.&lt;/p&gt;
&lt;p&gt;Lets apply some sanity checks to their priors.&lt;/p&gt;
&lt;p&gt;Effective sample size 5&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;samples &amp;lt;- 10000
  
a &amp;lt;- 1.785
b &amp;lt;- 3.215
d &amp;lt;- rbeta(samples, a, b)
plot(density(d), xlim = c(0, 1), xlab = &amp;quot;Event rate&amp;quot;, main = &amp;quot;Prior event rate for ESS = 5&amp;quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;http://mtk.one/post/pa-vap-8-vs-15-days/index.en_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;qbeta(c(0.025, 0.975), a, b)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## [1] 0.04875906 0.76979588&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;qbeta(c(0.1, 0.9), a, b)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## [1] 0.1116929 0.6338099&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Seems overly broad for a prior, we have a priori knowledge from other studies that event rates are around 20-50%. This prior places 80% of the probability between 11% and 63%.&lt;/p&gt;
&lt;p&gt;Also the prior probability that the event is rare (&amp;lt;5% event rate) is 2.59% and the prior probability that the event is near inevitable (&amp;gt;95% event rate) is 0.09%&lt;/p&gt;
&lt;p&gt;So ESS = 5 is out.&lt;/p&gt;
&lt;p&gt;Lets see if ESS=10 is better&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;a &amp;lt;- 3.57
b &amp;lt;- 6.43
d &amp;lt;- rbeta(samples, a, b)
plot(density(d), xlim = c(0, 1), xlab = &amp;quot;Event rate&amp;quot;, main = &amp;quot;Prior event rate for ESS = 10&amp;quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;http://mtk.one/post/pa-vap-8-vs-15-days/index.en_files/figure-html/unnamed-chunk-3-1.png&#34; width=&#34;672&#34; /&gt;&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;mean(d &amp;lt; 0.05) %&amp;gt;% percent(0.01)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## [1] &amp;quot;0.26%&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;mean(d &amp;gt; 0.95) %&amp;gt;% percent(0.01)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## [1] &amp;quot;0.00%&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;qbeta(c(0.025, 0.975), a, b)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## [1] 0.1086034 0.6592063&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;qbeta(c(0.1, 0.9), a, b)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## [1] 0.1743354 0.5536904&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Seems quite a bit better, still a little broader than i would prefer but fair enough.&lt;/p&gt;
&lt;p&gt;The prior probability that the event is rare (&amp;lt;5% event rate) is now 0.26% and the prior probability that the event is near inevitable (&amp;gt;95% event rate) is now 0.00%.&lt;/p&gt;
&lt;p&gt;I’ll accept this as a &lt;em&gt;not not sane&lt;/em&gt; prior.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Not lets get into the meat of the ITT analysis, but broaden our scope to look at the probability of one treatment group being worse off by any amount. We’ll keep the priors from ESS=10.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;c &amp;lt;- a + 25 # 15 day with event + prior
d &amp;lt;- b + 98 - 25 # 15 day with no event + prior
d &amp;lt;- rbeta(samples, c, d)
plot(density(d), xlim = c(0, 1), xlab = &amp;quot;Event rate&amp;quot;, main = &amp;quot;Comparing posteriors\n 15 days in black, 8 days in red&amp;quot;) 

e &amp;lt;- a + 31 # 8 day with event + prior 
f &amp;lt;- b + 88 - 31 # 8 day with no event + prior
d2 &amp;lt;- rbeta(samples, e, f)
lines(density(d2), col = &amp;quot;red&amp;quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;http://mtk.one/post/pa-vap-8-vs-15-days/index.en_files/figure-html/unnamed-chunk-4-1.png&#34; width=&#34;672&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Visually there is clear distinction, but what is statistics if not a way to stop us from eyeballing important things.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;mean(d2-d &amp;gt; 0) %&amp;gt;% percent(0.01)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## [1] &amp;quot;91.01%&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;There is a &lt;strong&gt;91% probability that 8 days is worse by any amount&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Finally let’s reproduce their estimate from supplementary 2&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;mean(d2 - d &amp;lt; 0.1) %&amp;gt;% percent(0.01)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## [1] &amp;quot;57.22%&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Close enough. I’m not using exact methods here so a perfect concurrence isn’t expected on the trailing digits.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Citation: Bouglé A, Tuffet S, Federici L, et al (2022) Comparison of 8 versus 15 days of antibiotic therapy for Pseudomonas aeruginosa ventilator-associated pneumonia in adults: a randomized, controlled, open-label trial. Intensive Care Med. &lt;a href=&#34;https://doi.org/10.1007/s00134-022-06690-5&#34; class=&#34;uri&#34;&gt;https://doi.org/10.1007/s00134-022-06690-5&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Quick doi lookups</title>
      <link>http://mtk.one/post/quick-doi-lookups/</link>
      <pubDate>Tue, 22 Oct 2019 00:00:00 +0000</pubDate>
      <guid>http://mtk.one/post/quick-doi-lookups/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;javascript:txt=document.getSelection%28%29;window.location=%22http://dx.doi.org.proxy1-bib.sdu.dk:2048/%22&amp;#43;txt;&#34;&gt;doi2sdu&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;javascript:txt=document.getSelection%28%29;window.location=%22http://dx.doi.org.auh.aub.aau.dk/%22&amp;#43;txt;&#34;&gt;doi2rn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;javascript:txt=document.getSelection%28%29;window.location=%22https://dx-doi-org.ez.statsbiblioteket.dk:12048/%22&amp;#43;txt;&#34;&gt;doi2rm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;javascript:txt=document.getSelection%28%29;window.location=%22http://gen.lib.rus.ec/scimag/index.php?s=%22&amp;#43;txt;&#34;&gt;doi2libgen&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click and drag one of the above links to your bookmark bar.&lt;/li&gt;
&lt;li&gt;Highlight a doi&lt;/li&gt;
&lt;li&gt;Click the bookmark&lt;/li&gt;
&lt;li&gt;Voila, access through your local library.&lt;/li&gt;
&lt;/ol&gt;
</description>
    </item>
    
    <item>
      <title>HAIBA and me</title>
      <link>http://mtk.one/post/haiba/haiba-and-me/</link>
      <pubDate>Mon, 21 Oct 2019 00:00:00 +0000</pubDate>
      <guid>http://mtk.one/post/haiba/haiba-and-me/</guid>
      <description>


&lt;div id=&#34;introduction&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Introduction&lt;/h1&gt;
&lt;p&gt;So. There’s this thing called &lt;a href=&#34;http://end2019.esundhed.dk/sundhedskvalitet/HAIBA/Sider/haiba_rapport.aspx&#34;&gt;HAIBA&lt;/a&gt;. It is the danish Hospital-Acquired Infections database.&lt;/p&gt;
&lt;p&gt;The database is built on the proud danish tradition of databasing &lt;em&gt;everything&lt;/em&gt;, it works by crossreferencing the national patient registry (LPR) and the national microbiological database (MiBa). LPR provides times of admission to hospital and transfers between departments. MiBa provides samples taken and sample results from clinical microbiology labs.&lt;/p&gt;
&lt;p&gt;The database is great, and it is not so great.&lt;/p&gt;
&lt;p&gt;Monitoring hospital-acquired infections is obviously a great goal and the crossreferencing of two massive databases is a gargantuan task. But as a &lt;a href=&#34;http://www.rigsrevisionen.dk/publikationer/2017/52017/&#34;&gt;report&lt;/a&gt; from the Danish National audit (rigsrevisionen) details, almost no departments actually use the database to improve.&lt;/p&gt;
&lt;p&gt;I wanted to analyse differences over time and between departments in the database.&lt;/p&gt;
&lt;p&gt;From the database i downloaded 93 datasets - corresponding to one from every department in the region of central Denmark, it took a while. If you want to follow along you can download a &lt;a href=&#34;haiba.csv&#34;&gt;csv version&lt;/a&gt; of the dataset i made.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;library(tidyverse)
library(furrr)
plan(multisession)
library(brms)
library(here)
library(ebbr) #devtools::install_github(&amp;quot;dgrtwo/ebbr&amp;quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;loading&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Loading&lt;/h1&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;files &amp;lt;- list.files(here(&amp;quot;content&amp;quot;, &amp;quot;post&amp;quot;, &amp;quot;haiba&amp;quot;, &amp;quot;2019-10-21-haiba-and-me&amp;quot;, &amp;quot;data_uvi&amp;quot;), recursive = TRUE, full.names = TRUE, pattern = &amp;quot;.csv&amp;quot;)

read_haiba &amp;lt;- function(file) {
    blank_lines &amp;lt;- which(grepl(&amp;quot;^$&amp;quot;, readLines(file)))
    meta &amp;lt;- read_csv(file,
                     skip = blank_lines[length(blank_lines) - 1] - 1,
                     show_col_types = FALSE) %&amp;gt;%
        mutate_all( ~ str_split(.x, &amp;quot;: &amp;quot;) %&amp;gt;% map_chr(2))
    colnames(meta) &amp;lt;- c(&amp;quot;sidste_opdatering&amp;quot;,
                        &amp;quot;rapport_fra&amp;quot;,
                        &amp;quot;region&amp;quot;,
                        &amp;quot;ejer&amp;quot;,
                        &amp;quot;hospital&amp;quot;, 
                        &amp;quot;afdeling&amp;quot;)
    raw &amp;lt;- read_csv(file, 
                    skip = 3, 
                    n_max = blank_lines[2] - blank_lines[1] - 2, 
                    locale = locale(decimal_mark = &amp;quot;,&amp;quot;),
                    show_col_types = FALSE)
    clean &amp;lt;- raw %&amp;gt;% 
        select(Year:Denominator2) %&amp;gt;% 
        janitor::clean_names() %&amp;gt;% 
        rename(week = month) %&amp;gt;% 
        mutate(yearweek = sprintf(&amp;quot;%i-W%02i&amp;quot;, year, week),
               sort_date = paste0(yearweek, &amp;quot;-5&amp;quot;) %&amp;gt;% ISOweek::ISOweek2date(),
               date_rank = rank(sort_date)) %&amp;gt;% 
        filter(sort_date &amp;lt; lubridate::dmy(meta$sidste_opdatering)[1]) 
    cbind(clean, select(meta, hospital, afdeling))
}    

afd_type &amp;lt;- read_csv(&amp;quot;typer.csv&amp;quot;, show_col_types = FALSE)
haiba &amp;lt;- future_map_dfr(files, read_haiba) %&amp;gt;% 
    left_join(afd_type) %&amp;gt;% 
    mutate_at(vars(contains(&amp;quot;nominator&amp;quot;)), as.integer)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Okay, so that’s loading done. Let’s do some basic checks. It appears that the web-version of HAIBA reports use the columns nominator1 and denominator1.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;exploration&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Exploration&lt;/h1&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;head(haiba)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;##   year week nominator1 incidence1 denominator1 nominator4 incidence3
## 1 2019    4          1     317.04           32          1     317.04
## 2 2019    3          0       0.00           25          0       0.00
## 3 2019    2          0       0.00           15          0       0.00
## 4 2019    1          0       0.00           12          0       0.00
## 5 2018   52          0       0.00           15          0       0.00
## 6 2018   51          0       0.00           13          0       0.00
##   denominator2 yearweek  sort_date date_rank                    hospital
## 1           32 2019-W04 2019-01-25       265 Aarhus Universitetshospital
## 2           25 2019-W03 2019-01-18       264 Aarhus Universitetshospital
## 3           15 2019-W02 2019-01-11       263 Aarhus Universitetshospital
## 4           12 2019-W01 2019-01-04       262 Aarhus Universitetshospital
## 5           15 2018-W52 2018-12-28       261 Aarhus Universitetshospital
## 6           13 2018-W51 2018-12-21       260 Aarhus Universitetshospital
##                  afdeling afd_type
## 1 Akutafdeling Akutafsnit     akut
## 2 Akutafdeling Akutafsnit     akut
## 3 Akutafdeling Akutafsnit     akut
## 4 Akutafdeling Akutafsnit     akut
## 5 Akutafdeling Akutafsnit     akut
## 6 Akutafdeling Akutafsnit     akut&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;mean(haiba$denominator1 &amp;lt; 1) %&amp;gt;% scales::percent()&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## [1] &amp;quot;16%&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;with(haiba, mean(nominator1 &amp;gt; denominator1)) %&amp;gt;% scales::percent()&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## [1] &amp;quot;0%&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;16% of observations are 0 and some observations seem to show more cases than persondays, which is weird to say the least.&lt;/p&gt;
&lt;p&gt;Let’s do a little visualisation&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;quarters &amp;lt;- data.frame(week = 1:53, quarter = c(rep(1:4, each = 13), 4))

haiba %&amp;gt;% 
    left_join(quarters) %&amp;gt;% 
    mutate(yearq = paste(year, quarter, sep = &amp;quot;-&amp;quot;)) %&amp;gt;% 
    group_by(afd_type, yearq) %&amp;gt;% 
    summarise(nominator = sum(nominator1),
              denominator = sum(denominator1)) %&amp;gt;% 
    ungroup %&amp;gt;% 
    filter(denominator &amp;gt; 0) %&amp;gt;% 
    mutate(date_rank = dense_rank(yearq)) %&amp;gt;% #Dangerous, but seems to work
    group_by(afd_type) %&amp;gt;% 
    group_modify(~ add_ebb_estimate(.x, nominator, denominator)) -&amp;gt; afd_type_quarter&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## Joining, by = &amp;quot;week&amp;quot;
## `summarise()` has grouped output by &amp;#39;afd_type&amp;#39;. You can override using the
## `.groups` argument.&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## Warning: `data_frame()` was deprecated in tibble 1.1.0.
## Please use `tibble()` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;ggplot(afd_type_quarter, aes(date_rank, .fitted*1e4, colour = afd_type)) + 
    geom_smooth(method = &amp;quot;lm&amp;quot;, se = FALSE) +
    geom_point() + 
    facet_wrap(~afd_type, scales = &amp;quot;free_y&amp;quot;) + 
    expand_limits(y = 0) +
    scale_colour_viridis_d() +
    theme(legend.position = &amp;quot;none&amp;quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## `geom_smooth()` using formula &amp;#39;y ~ x&amp;#39;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;http://mtk.one/post/haiba/haiba-and-me/index.en_files/figure-html/afd_type_quarter_vis-1-1.png&#34; width=&#34;768&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Let’s gussy that up a bit.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;ggplot(afd_type_quarter, aes(date_rank, .raw*1e4, colour = afd_type)) + 
    geom_ribbon(aes(ymin = .low*1e4, ymax = .high*1e4), fill = &amp;quot;gray&amp;quot;, colour = &amp;quot;gray&amp;quot;) + 
    geom_smooth(method = &amp;quot;lm&amp;quot;, se = FALSE) +
    geom_point() + 
    facet_wrap(~afd_type, scales = &amp;quot;free_y&amp;quot;, labeller = labeller(afd_type = Hmisc::capitalize), nrow = 2) + 
    expand_limits(y = 0) +
    scale_colour_viridis_d() +
    scale_x_continuous(breaks = c(seq(0, 20, by = 4))) +
    labs(x = &amp;quot;kvartal fra start&amp;quot;, 
         y = &amp;quot;incidens pr 10^4 patientdøgn&amp;quot;, 
         caption = &amp;quot;Data fra HAIBA\n95% Konfidensintervaller baseret på empirical bayes\nLineær regression vist uden konfidensintervaller&amp;quot;,
         title = &amp;quot;Hospitalserhvervede urinvejsinfektioner i region midt&amp;quot;) +
    theme(legend.position = &amp;quot;none&amp;quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## `geom_smooth()` using formula &amp;#39;y ~ x&amp;#39;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;http://mtk.one/post/haiba/haiba-and-me/index.en_files/figure-html/afd_type_quarter_vis-2-1.png&#34; width=&#34;768&#34; /&gt;&lt;/p&gt;
&lt;p&gt;There are some interesting things going on in this visualisation. Most department types seem to be have decreasing UTI incidence. But, what is going on with pediatric and acute departments?&lt;/p&gt;
&lt;p&gt;Some insight may be gleaned from the diference between the linear regression on incidence and the grayed out ribbons. Remember, the ribbons display empirical bayes estimates, these are calculated WITHOUT knowledge of the time effects.&lt;/p&gt;
&lt;p&gt;For acute departments there appears to be a somewhat seasonal effect, perhaps patients dont stay on the service for long enough to become cases in summer.&lt;/p&gt;
&lt;p&gt;Pediatric departments seem more erratic, and it would seem fair to assume that what we’re seeing is merely random variation.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;modeling&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Modeling&lt;/h1&gt;
&lt;p&gt;If i want an actual answer to whether incidences are decreasing, there’s probably no way around some modeling work.&lt;/p&gt;
&lt;p&gt;Seeing as we’re working on count data with large observation times, it would seem reasonable to model the outcome as poisson distributed.&lt;/p&gt;
&lt;p&gt;I want to be able to compare individual departments on their initial incidence, their progress over time, and their incidence at the end. I could feasibly fit a normal &lt;code&gt;glm&lt;/code&gt; model with &lt;code&gt;offset = log(denominator1)&lt;/code&gt; and fixed effects for departments, but some departments are much smaller than others and their mere size would bias the analysis so that large departments would look closer to average, just from having less random variation.&lt;/p&gt;
&lt;p&gt;So, what i actually want is a bayesian model with partial pooling on departments for both intercept and slope, fixed effects for department type. Let’s see if i can figure that out&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;halfyear &amp;lt;- data.frame(week = 1:53, halfyear = c(rep(1:2, each = 26), 2))

null_departments &amp;lt;- haiba %&amp;gt;% # Some departments have 0 cases in total. Thats great, but not very informative.
    group_by(afdeling) %&amp;gt;% 
    summarise(nominator = sum(nominator1),
              denominator = sum(denominator1)) %&amp;gt;% 
    filter(nominator == 0) 

haiba %&amp;gt;% 
    anti_join(null_departments, by = &amp;quot;afdeling&amp;quot;) %&amp;gt;% # Potentielt kontroversielt, men i praksis nok mere data-cleaning
    left_join(halfyear) %&amp;gt;% 
    mutate(yearh = paste(year, halfyear, sep = &amp;quot;-&amp;quot;)) %&amp;gt;% 
    group_by(afdeling, yearh) %&amp;gt;% 
    summarise(nominator = sum(nominator1),
              denominator = sum(denominator1), 
              afd_type = unique(afd_type)) %&amp;gt;% 
    ungroup %&amp;gt;% 
    filter(denominator &amp;gt; 0) %&amp;gt;% 
    mutate(date_rank = dense_rank(yearh)) -&amp;gt; afdeling_halfyear&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## Joining, by = &amp;quot;week&amp;quot;
## `summarise()` has grouped output by &amp;#39;afdeling&amp;#39;. You can override using the
## `.groups` argument.&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;mm_data_afd &amp;lt;- afdeling_halfyear %&amp;gt;% 
    mutate_at(vars(contains(&amp;quot;nominator&amp;quot;)), as.integer) %&amp;gt;% 
    mutate_at(vars(contains(&amp;quot;afd&amp;quot;)), as.factor)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;brms-model&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;brms model&lt;/h1&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;n_cores &amp;lt;- parallel::detectCores()
model &amp;lt;- brm(nominator ~ 0 + offset(log(denominator)) + date_rank + afd_type + (1 + date_rank | afdeling),
          data = mm_data_afd,
          family = &amp;quot;poisson&amp;quot;,
          chains = n_cores, cores = n_cores, file = here(&amp;quot;content&amp;quot;, &amp;quot;post&amp;quot;, &amp;quot;haiba&amp;quot;, &amp;quot;2019-10-21-haiba-and-me&amp;quot;, &amp;quot;model&amp;quot;)) &lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;model-checks&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Model checks&lt;/h1&gt;
&lt;p&gt;Did the chains converge?&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;plot(model)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;http://mtk.one/post/haiba/haiba-and-me/index.en_files/figure-html/convergence-1.png&#34; width=&#34;672&#34; /&gt;&lt;img src=&#34;http://mtk.one/post/haiba/haiba-and-me/index.en_files/figure-html/convergence-2.png&#34; width=&#34;672&#34; /&gt;&lt;img src=&#34;http://mtk.one/post/haiba/haiba-and-me/index.en_files/figure-html/convergence-3.png&#34; width=&#34;672&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Seems reasonable enough.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;model&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;##  Family: poisson 
##   Links: mu = log 
## Formula: nominator ~ 0 + offset(log(denominator)) + date_rank + afd_type + (1 + date_rank | afdeling) 
##    Data: mm_data_afd (Number of observations: 822) 
##   Draws: 6 chains, each with iter = 2000; warmup = 1000; thin = 1;
##          total post-warmup draws = 6000
## 
## Group-Level Effects: 
## ~afdeling (Number of levels: 80) 
##                          Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS
## sd(Intercept)                0.71      0.07     0.58     0.87 1.01     1420
## sd(date_rank)                0.03      0.01     0.02     0.04 1.00     2150
## cor(Intercept,date_rank)    -0.41      0.19    -0.73     0.02 1.00     2630
##                          Tail_ESS
## sd(Intercept)                2875
## sd(date_rank)                3391
## cor(Intercept,date_rank)     4044
## 
## Population-Level Effects: 
##                  Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
## date_rank           -0.02      0.01    -0.03    -0.01 1.00     2836     3828
## afd_typeakut        -5.54      0.33    -6.20    -4.88 1.00     3854     4202
## afd_typeandet       -5.88      0.24    -6.35    -5.41 1.00     1969     2427
## afd_typebørn        -6.88      0.38    -7.62    -6.15 1.00     3958     4450
## afd_typeintensiv    -3.88      0.69    -5.22    -2.49 1.00     5174     4229
## afd_typekirurgi     -5.86      0.12    -6.11    -5.63 1.00     1017     1925
## afd_typekræft       -5.92      0.40    -6.70    -5.16 1.00     2634     3600
## afd_typemedicin     -5.30      0.15    -5.59    -5.01 1.00      803     1294
## 
## Draws were sampled using sampling(NUTS). For each parameter, Bulk_ESS
## and Tail_ESS are effective sample size measures, and Rhat is the potential
## scale reduction factor on split chains (at convergence, Rhat = 1).&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No dire warnings here either. Effective sample sizes could be higher.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;hypothesis-1-infection-control-is-improving&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Hypothesis 1: Infection control is improving&lt;/h1&gt;
&lt;p&gt;Lets test the hypothesis that number of cases is falling over time&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;hypothesis(model, &amp;quot;date_rank &amp;lt; 0&amp;quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## Hypothesis Tests for class b:
##        Hypothesis Estimate Est.Error CI.Lower CI.Upper Evid.Ratio Post.Prob
## 1 (date_rank) &amp;lt; 0    -0.02      0.01    -0.03    -0.01        299         1
##   Star
## 1    *
## ---
## &amp;#39;CI&amp;#39;: 90%-CI for one-sided and 95%-CI for two-sided hypotheses.
## &amp;#39;*&amp;#39;: For one-sided hypotheses, the posterior probability exceeds 95%;
## for two-sided hypotheses, the value tested against lies outside the 95%-CI.
## Posterior probabilities of point hypotheses assume equal prior probabilities.&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;marginal_effects(model, &amp;quot;date_rank&amp;quot;, spaghetti = TRUE, nsamples = 1e3, conditions = data.frame(denominator = 1e4))&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## Warning: Method &amp;#39;marginal_effects&amp;#39; is deprecated. Please use
## &amp;#39;conditional_effects&amp;#39; instead.&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## Warning: Argument &amp;#39;nsamples&amp;#39; is deprecated. Please use argument &amp;#39;ndraws&amp;#39;
## instead.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;http://mtk.one/post/haiba/haiba-and-me/index.en_files/figure-html/marginal-date_rank-1.png&#34; width=&#34;768&#34; /&gt;&lt;/p&gt;
&lt;p&gt;It would appear beyond reasonable doubt that there is indeed a falling incidence of HA-UTI. What is the magnitude of this fall?&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;broom.mixed::tidy(model) %&amp;gt;% 
  filter(term == &amp;quot;date_rank&amp;quot;) %&amp;gt;% 
  select(-std.error) %&amp;gt;% 
  mutate_at(vars(estimate:conf.high), ~ 1 - exp(. * (mm_data_afd$date_rank %&amp;gt;% range %&amp;gt;% diff))) %&amp;gt;% 
  mutate_at(vars(estimate:conf.high), scales::percent) %&amp;gt;% 
  glue::glue_data(&amp;quot;The overall reduction from the beginning of HAIBA (2014 week 1) to the latest point in our dataset (2019 week 4) is {estimate} [95% CI: {conf.high}; {conf.low}]&amp;quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## Warning in tidy.brmsfit(model): some parameter names contain underscores: term
## naming may be unreliable!&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## The overall reduction from the beginning of HAIBA (2014 week 1) to the latest point in our dataset (2019 week 4) is 16% [95% CI: 5%; 25%]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Are any departments falling way out of line with the overall trend?&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;hypothesis(model, &amp;quot;date_rank = 0&amp;quot;, group = &amp;quot;afdeling&amp;quot;, scope = &amp;quot;ranef&amp;quot;) %&amp;gt;% 
  .$hypothesis %&amp;gt;% 
  filter(Star == &amp;quot;*&amp;quot;) -&amp;gt; differently_changed

mm_data_afd %&amp;gt;% 
    semi_join(differently_changed, by = c(&amp;quot;afdeling&amp;quot; = &amp;quot;Group&amp;quot;)) %&amp;gt;% 
    ggplot(aes(date_rank, nominator/(denominator/1e4), colour = afdeling)) +
    geom_point() +
    scale_colour_viridis_d(option = &amp;quot;A&amp;quot;) +
    geom_smooth(method = &amp;quot;lm&amp;quot;, se = FALSE) + 
    expand_limits(y = 0)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## `geom_smooth()` using formula &amp;#39;y ~ x&amp;#39;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;http://mtk.one/post/haiba/haiba-and-me/index.en_files/figure-html/random-slopes-1.png&#34; width=&#34;672&#34; /&gt;&lt;/p&gt;
&lt;p&gt;It would appear that both departments have made massive improvements.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;hypothesis-2-departments-are-very-different&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Hypothesis 2: Departments are (very) different&lt;/h1&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;conditional_effects(model, &amp;quot;afd_type&amp;quot;, conditions = data.frame(denominator = 1e4))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;http://mtk.one/post/haiba/haiba-and-me/index.en_files/figure-html/department_type-vis-1.png&#34; width=&#34;768&#34; /&gt;&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;last_plot() + coord_flip()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;http://mtk.one/post/haiba/haiba-and-me/index.en_files/figure-html/department_type-vis-2.png&#34; width=&#34;768&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Okay, so intensive care units have more cases. That’s probably not a big surprise to anyone. Many of the “cases” are probably misclassifications due to more frequent urinary sampling and the increased difficulty in ascertaining symptoms from patients in intensive care.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;hypothesis(model, &amp;quot;Intercept = 0&amp;quot;, group = &amp;quot;afdeling&amp;quot;, scope = &amp;quot;ranef&amp;quot;) %&amp;gt;%
    .$hypothesis %&amp;gt;% 
    filter(Star == &amp;quot;*&amp;quot;) -&amp;gt; differently_started

differently_started %&amp;gt;% 
    mutate(Group = forcats::fct_reorder(Group, Estimate)) %&amp;gt;% 
    ggplot(aes(Group, exp(Estimate), colour = Estimate)) + 
    geom_ribbon(aes(ymin = exp(CI.Lower), ymax = exp(CI.Upper))) +
    geom_point() + 
    scale_colour_viridis_c(option = &amp;quot;C&amp;quot;) + 
    theme(legend.position = &amp;quot;none&amp;quot;) + 
    coord_flip() +
    labs(y = &amp;quot;Rate ratio ifht afdelingstype&amp;quot;, x = NULL,
         caption = &amp;quot;Data fra HAIBA\nVist med 95% konfidensintervaller&amp;quot;) &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;http://mtk.one/post/haiba/haiba-and-me/index.en_files/figure-html/differently_started-1.png&#34; width=&#34;672&#34; /&gt;&lt;/p&gt;
&lt;p&gt;A few surprises here, but overall as expected. Some of the departments seem to have been picked up due to insufficient correction in the “Other” department type.&lt;/p&gt;
&lt;p&gt;That’s the intercept done with. But where do these departments end up? Do they come into line with the pack?&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;new_from_differently_started &amp;lt;- mm_data_afd %&amp;gt;% 
  semi_join(differently_started, by = c(&amp;quot;afdeling&amp;quot; = &amp;quot;Group&amp;quot;)) %&amp;gt;% 
  select(afdeling, afd_type) %&amp;gt;% 
  distinct() %&amp;gt;% 
  mutate(date_rank = 12,
         denominator = 1e4)

quick_clean &amp;lt;- . %&amp;gt;% 
  as_tibble() %&amp;gt;% 
  janitor::clean_names()

predictions &amp;lt;- predict(model, newdata = new_from_differently_started) %&amp;gt;% 
  quick_clean %&amp;gt;% 
  bind_cols(new_from_differently_started) %&amp;gt;% 
  mutate(condition = &amp;quot;At end&amp;quot;)

unknown_departments &amp;lt;- mm_data_afd %&amp;gt;% 
  distinct(afd_type) %&amp;gt;% 
  mutate(afdeling = wakefield::name(n()),
         date_rank = 12,
         denominator = 1e4)

predicted_beginnings &amp;lt;- predict(model, newdata = new_from_differently_started %&amp;gt;% mutate(date_rank = 1)) %&amp;gt;% 
  quick_clean() %&amp;gt;% 
  bind_cols(new_from_differently_started %&amp;gt;% select(afdeling)) %&amp;gt;% 
  mutate(condition = &amp;quot;At beginning&amp;quot;)

predictions_for_unknown &amp;lt;- predict(model, newdata = unknown_departments, allow_new_levels = TRUE) %&amp;gt;% 
  as_tibble() %&amp;gt;% 
  janitor::clean_names() %&amp;gt;% 
  bind_cols(unknown_departments) %&amp;gt;% 
  mutate(condition = &amp;quot;Unknown department&amp;quot;)

different_started_by_the_end &amp;lt;- predictions %&amp;gt;% 
  left_join(predictions_for_unknown, by = &amp;quot;afd_type&amp;quot;) %&amp;gt;% 
  left_join(predicted_beginnings, by = c(&amp;quot;afdeling.x&amp;quot; = &amp;quot;afdeling&amp;quot;), suffix = c(&amp;quot;&amp;quot;, &amp;quot;.z&amp;quot;))

bind_rows(predicted_beginnings, predictions) %&amp;gt;% 
  left_join(predictions_for_unknown, by = &amp;quot;afd_type&amp;quot;, suffix = c(&amp;quot;&amp;quot;, &amp;quot;.y&amp;quot;)) %&amp;gt;% 
  mutate(afdeling = forcats::fct_reorder(afdeling, estimate, .fun = first)) %&amp;gt;% 
  ggplot(aes(afdeling, estimate, colour = condition)) +
  geom_ribbon(aes(afdeling, ymin = q2_5, ymax = q97_5), data = ~ filter(.x, condition == &amp;quot;At end&amp;quot;), colour = &amp;quot;gray&amp;quot;) +
  geom_point() +
  geom_point(aes(afdeling, estimate.y, colour = &amp;quot;Department type&amp;quot;), show.legend = TRUE) + 
  coord_flip() + 
  scale_colour_brewer(palette = &amp;quot;Set2&amp;quot;, direction = -1) + 
  theme(legend.position = &amp;quot;bottom&amp;quot;) + 
  labs(x = &amp;quot;Department&amp;quot;, 
       y = &amp;quot;Cases pr. 10000 persondays&amp;quot;, 
       colour = &amp;quot;Prediction case&amp;quot;, 
       caption = &amp;quot;Data from HAIBA&amp;quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## Warning: Removed 34 rows containing missing values (geom_point).&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;http://mtk.one/post/haiba/haiba-and-me/index.en_files/figure-html/differently_ended-1.png&#34; width=&#34;768&#34; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;honorable-mention-to-the-departments-without-any-cases&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Honorable mention to the departments without any cases&lt;/h1&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;null_departments %&amp;gt;% arrange(desc(denominator))&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## # A tibble: 13 × 3
##    afdeling                                       nominator denominator
##    &amp;lt;chr&amp;gt;                                              &amp;lt;int&amp;gt;       &amp;lt;int&amp;gt;
##  1 Livsstilscenter Brædstrup, Sengeafdeling - BRÆ         0       31597
##  2 Fokuseret Neurorehabilitering Hammel                   0       13759
##  3 Tand-, Mund- og Kæbekirurgi Sengeafdeling              0        2493
##  4 Hånd Stamafdeling Ortopædkirurgi                       0        2475
##  5 Skulder Stamafdeling Ortopædkirurgi                    0        1677
##  6 Idræt Stamafdeling Ortopædkirurgi                      0        1220
##  7 Brystkirurgi Stationær                                 0         678
##  8 Øre-, Næse- og Halssygdomme - Randers                  0         290
##  9 Infektion Stamafdeling Ortopædkirurgi                  0          28
## 10 Akutmodtagelse Q - Randers                             0          21
## 11 Øjenafdeling Dagkirurgi Stationær J                    0          16
## 12 Neurokirurgisk Dagkirurgi Stationær NK                 0          15
## 13 Kirurgisk Dagkirurgi P Stationær Afdeling              0           6&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Slides</title>
      <link>http://mtk.one/slides/example/</link>
      <pubDate>Tue, 05 Feb 2019 00:00:00 +0000</pubDate>
      <guid>http://mtk.one/slides/example/</guid>
      <description>&lt;h1 id=&#34;create-slides-in-markdown-with-wowchemy&#34;&gt;Create slides in Markdown with Wowchemy&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://wowchemy.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Wowchemy&lt;/a&gt; | &lt;a href=&#34;https://owchemy.com/docs/managing-content/#create-slides&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Documentation&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;features&#34;&gt;Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Efficiently write slides in Markdown&lt;/li&gt;
&lt;li&gt;3-in-1: Create, Present, and Publish your slides&lt;/li&gt;
&lt;li&gt;Supports speaker notes&lt;/li&gt;
&lt;li&gt;Mobile friendly slides&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;controls&#34;&gt;Controls&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Next: &lt;code&gt;Right Arrow&lt;/code&gt; or &lt;code&gt;Space&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Previous: &lt;code&gt;Left Arrow&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Start: &lt;code&gt;Home&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Finish: &lt;code&gt;End&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Overview: &lt;code&gt;Esc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Speaker notes: &lt;code&gt;S&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Fullscreen: &lt;code&gt;F&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Zoom: &lt;code&gt;Alt + Click&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://revealjs.com/pdf-export/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;PDF Export&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;code-highlighting&#34;&gt;Code Highlighting&lt;/h2&gt;
&lt;p&gt;Inline code: &lt;code&gt;variable&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Code block:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;porridge&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;blueberry&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;porridge&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;blueberry&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Eating...&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;math&#34;&gt;Math&lt;/h2&gt;
&lt;p&gt;In-line math: $x + y = z$&lt;/p&gt;
&lt;p&gt;Block math:&lt;/p&gt;
&lt;p&gt;$$
f\left( x \right) = ;\frac{{2\left( {x + 4} \right)\left( {x - 4} \right)}}{{\left( {x + 4} \right)\left( {x + 1} \right)}}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;fragments&#34;&gt;Fragments&lt;/h2&gt;
&lt;p&gt;Make content appear incrementally&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{{% fragment %}} One {{% /fragment %}}
{{% fragment %}} **Two** {{% /fragment %}}
{{% fragment %}} Three {{% /fragment %}}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Press &lt;code&gt;Space&lt;/code&gt; to play!&lt;/p&gt;
&lt;span class=&#34;fragment &#34; &gt;
  One
&lt;/span&gt;
&lt;span class=&#34;fragment &#34; &gt;
  &lt;strong&gt;Two&lt;/strong&gt;
&lt;/span&gt;
&lt;span class=&#34;fragment &#34; &gt;
  Three
&lt;/span&gt;
&lt;hr&gt;
&lt;p&gt;A fragment can accept two optional parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;class&lt;/code&gt;: use a custom style (requires definition in custom CSS)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;weight&lt;/code&gt;: sets the order in which a fragment appears&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;speaker-notes&#34;&gt;Speaker Notes&lt;/h2&gt;
&lt;p&gt;Add speaker notes to your presentation&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{{% speaker_note %}}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Only the speaker can read these notes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Press &lt;span class=&#34;sb&#34;&gt;`S`&lt;/span&gt; key to view
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  {{% /speaker_note %}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Press the &lt;code&gt;S&lt;/code&gt; key to view the speaker notes!&lt;/p&gt;
&lt;aside class=&#34;notes&#34;&gt;
  &lt;ul&gt;
&lt;li&gt;Only the speaker can read these notes&lt;/li&gt;
&lt;li&gt;Press &lt;code&gt;S&lt;/code&gt; key to view&lt;/li&gt;
&lt;/ul&gt;

&lt;/aside&gt;
&lt;hr&gt;
&lt;h2 id=&#34;themes&#34;&gt;Themes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;black: Black background, white text, blue links (default)&lt;/li&gt;
&lt;li&gt;white: White background, black text, blue links&lt;/li&gt;
&lt;li&gt;league: Gray background, white text, blue links&lt;/li&gt;
&lt;li&gt;beige: Beige background, dark text, brown links&lt;/li&gt;
&lt;li&gt;sky: Blue background, thin dark text, blue links&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;night: Black background, thick white text, orange links&lt;/li&gt;
&lt;li&gt;serif: Cappuccino background, gray text, brown links&lt;/li&gt;
&lt;li&gt;simple: White background, black text, blue links&lt;/li&gt;
&lt;li&gt;solarized: Cream-colored background, dark green text, blue links&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;

&lt;section data-noprocess data-shortcode-slide
  
      
      data-background-image=&#34;/media/boards.jpg&#34;
  &gt;

&lt;h2 id=&#34;custom-slide&#34;&gt;Custom Slide&lt;/h2&gt;
&lt;p&gt;Customize the slide style and background&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{{&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;slide&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;background-image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;/media/boards.jpg&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{{&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;slide&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;background-color&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;#0000FF&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{{&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;slide&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;my-style&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;custom-css-example&#34;&gt;Custom CSS Example&lt;/h2&gt;
&lt;p&gt;Let&amp;rsquo;s make headers navy colored.&lt;/p&gt;
&lt;p&gt;Create &lt;code&gt;assets/css/reveal_custom.css&lt;/code&gt; with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;reveal&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;section&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;h1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;reveal&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;section&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;h2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;reveal&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;section&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;h3&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;color&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;navy&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h1 id=&#34;questions&#34;&gt;Questions?&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/wowchemy/wowchemy-hugo-modules/discussions&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Ask&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://wowchemy.com/docs/managing-content/#create-slides&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Documentation&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Example Project</title>
      <link>http://mtk.one/project/example/</link>
      <pubDate>Wed, 27 Apr 2016 00:00:00 +0000</pubDate>
      <guid>http://mtk.one/project/example/</guid>
      <description>&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis posuere tellus ac convallis placerat. Proin tincidunt magna sed ex sollicitudin condimentum. Sed ac faucibus dolor, scelerisque sollicitudin nisi. Cras purus urna, suscipit quis sapien eu, pulvinar tempor diam. Quisque risus orci, mollis id ante sit amet, gravida egestas nisl. Sed ac tempus magna. Proin in dui enim. Donec condimentum, sem id dapibus fringilla, tellus enim condimentum arcu, nec volutpat est felis vel metus. Vestibulum sit amet erat at nulla eleifend gravida.&lt;/p&gt;
&lt;p&gt;Nullam vel molestie justo. Curabitur vitae efficitur leo. In hac habitasse platea dictumst. Sed pulvinar mauris dui, eget varius purus congue ac. Nulla euismod, lorem vel elementum dapibus, nunc justo porta mi, sed tempus est est vel tellus. Nam et enim eleifend, laoreet sem sit amet, elementum sem. Morbi ut leo congue, maximus velit ut, finibus arcu. In et libero cursus, rutrum risus non, molestie leo. Nullam congue quam et volutpat malesuada. Sed risus tortor, pulvinar et dictum nec, sodales non mi. Phasellus lacinia commodo laoreet. Nam mollis, erat in feugiat consectetur, purus eros egestas tellus, in auctor urna odio at nibh. Mauris imperdiet nisi ac magna convallis, at rhoncus ligula cursus.&lt;/p&gt;
&lt;p&gt;Cras aliquam rhoncus ipsum, in hendrerit nunc mattis vitae. Duis vitae efficitur metus, ac tempus leo. Cras nec fringilla lacus. Quisque sit amet risus at ipsum pharetra commodo. Sed aliquam mauris at consequat eleifend. Praesent porta, augue sed viverra bibendum, neque ante euismod ante, in vehicula justo lorem ac eros. Suspendisse augue libero, venenatis eget tincidunt ut, malesuada at lorem. Donec vitae bibendum arcu. Aenean maximus nulla non pretium iaculis. Quisque imperdiet, nulla in pulvinar aliquet, velit quam ultrices quam, sit amet fringilla leo sem vel nunc. Mauris in lacinia lacus.&lt;/p&gt;
&lt;p&gt;Suspendisse a tincidunt lacus. Curabitur at urna sagittis, dictum ante sit amet, euismod magna. Sed rutrum massa id tortor commodo, vitae elementum turpis tempus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean purus turpis, venenatis a ullamcorper nec, tincidunt et massa. Integer posuere quam rutrum arcu vehicula imperdiet. Mauris ullamcorper quam vitae purus congue, quis euismod magna eleifend. Vestibulum semper vel augue eget tincidunt. Fusce eget justo sodales, dapibus odio eu, ultrices lorem. Duis condimentum lorem id eros commodo, in facilisis mauris scelerisque. Morbi sed auctor leo. Nullam volutpat a lacus quis pharetra. Nulla congue rutrum magna a ornare.&lt;/p&gt;
&lt;p&gt;Aliquam in turpis accumsan, malesuada nibh ut, hendrerit justo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Quisque sed erat nec justo posuere suscipit. Donec ut efficitur arcu, in malesuada neque. Nunc dignissim nisl massa, id vulputate nunc pretium nec. Quisque eget urna in risus suscipit ultricies. Pellentesque odio odio, tincidunt in eleifend sed, posuere a diam. Nam gravida nisl convallis semper elementum. Morbi vitae felis faucibus, vulputate orci placerat, aliquet nisi. Aliquam erat volutpat. Maecenas sagittis pulvinar purus, sed porta quam laoreet at.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>An example conference paper</title>
      <link>http://mtk.one/publication/example/</link>
      <pubDate>Mon, 01 Jul 2013 00:00:00 +0000</pubDate>
      <guid>http://mtk.one/publication/example/</guid>
      <description>&lt;div class=&#34;alert alert-note&#34;&gt;
  &lt;div&gt;
    Click the &lt;em&gt;Cite&lt;/em&gt; button above to demo the feature to enable visitors to import publication metadata into their reference management software.
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;alert alert-note&#34;&gt;
  &lt;div&gt;
    Create your slides in Markdown - click the &lt;em&gt;Slides&lt;/em&gt; button to check out the example.
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Supplementary notes can be added here, including &lt;a href=&#34;https://wowchemy.com/docs/writing-markdown-latex/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;code, math, and images&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>http://mtk.one/admin/config.yml</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>http://mtk.one/admin/config.yml</guid>
      <description></description>
    </item>
    
  </channel>
</rss>
