-
Notifications
You must be signed in to change notification settings - Fork 430
/
01-topics.qmd
211 lines (200 loc) · 7.39 KB
/
01-topics.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
---
title: "Topics"
---
The course content is organized in three units:
```{r}
#| label: topic-flow
#| fig-align: center
#| echo: false
#| fig-asp: 0.3
#| out-width: "100%"
#| fig-alt: |
#| Workflow diagram showing five course units described in the following text.
library(DiagrammeR)
hello_border <- "#333333"
hello_fill <- "#d8d8d8"
explore_border <- "#57707a"
explore_fill <- "#A7D5E8"
ethics_border <- "#6e8796"
ethics_fill <- "#b3dcf5"
rigor_border <- "#1E5C65"
rigor_fill <- "#b3edf5"
further_border <- "#FFD748"
further_fill <- "#faebb4"
topic_flow <- create_graph() %>%
# Hello world ----
add_node(
label = "Hello\nworld",
node_aes = node_aes(
x = 2, y = 2,
shape = "hexagon", fixedsize = TRUE, height = 1, width = 1.1,
fontsize = 12, fontcolor = "black",
color = hello_border, penwidth = 2, fillcolor = hello_fill
)
) %>%
# Exploring data ----
add_node(
label = "Exploring\ndata",
node_aes = node_aes(
x = 4, y = 2,
shape = "hexagon", fixedsize = TRUE, height = 1, width = 1.1,
fontname = "helvetica", fontsize = 12, fontcolor = "black",
color = explore_border, penwidth = 2, fillcolor = explore_fill
)
) %>%
add_edge(
from = "Hello\nworld", to = "Exploring\ndata",
edge_aes = edge_aes(arrowhead = "normal")
) %>%
add_edge(
from = "Exploring\ndata", to = "Hello\nworld",
edge_aes = edge_aes(arrowhead = "normal")
) %>%
add_node(
label = "Visualize",
node_aes = node_aes(
x = 4, y = 3,
fontsize = 10, width = 0.75,
color = explore_fill, penwidth = 2, fillcolor = "white"
)
) %>%
add_node(
label = "Wrangle",
node_aes = node_aes(
x = 5, y = 1,
fontsize = 10, width = 0.75,
color = explore_fill, penwidth = 2, fillcolor = "white"
)
) %>%
add_node(
label = "Import",
node_aes = node_aes(
x = 3, y = 1,
fontsize = 10, width = 0.75,
color = explore_fill, penwidth = 2, fillcolor = "white"
)
) %>%
add_edge(from = "Visualize", to = "Exploring\ndata", edge_aes = edge_aes(arrowhead = "none")) %>%
add_edge(from = "Wrangle", to = "Exploring\ndata", edge_aes = edge_aes(arrowhead = "none")) %>%
add_edge(from = "Import", to = "Exploring\ndata", edge_aes = edge_aes(arrowhead = "none")) %>%
# Data science ethics ----
add_node(
label = "Data\nscience\nethics",
node_aes = node_aes(
x = 6, y = 2,
shape = "hexagon", fixedsize = TRUE, height = 1, width = 1.1,
fontsize = 12, fontcolor = "black",
color = ethics_border, penwidth = 2, fillcolor = ethics_fill
)
) %>%
add_edge(
from = "Exploring\ndata", to = "Data\nscience\nethics",
edge_aes = edge_aes(arrowhead = "normal")
) %>%
add_edge(
from = "Data\nscience\nethics", to = "Exploring\ndata",
edge_aes = edge_aes(arrowhead = "normal")
) %>%
add_node(
label = "Misrepre-\nsentation",
node_aes = node_aes(
x = 5, y = 3,
fontsize = 10, width = 0.75,
color = ethics_fill, penwidth = 2, fillcolor = "white"
)
) %>%
add_node(
label = "Data\nprivacy",
node_aes = node_aes(
x = 7, y = 3,
fontsize = 10, width = 0.75,
color = ethics_fill, penwidth = 2, fillcolor = "white"
)
) %>%
add_node(
label = "Algorithmic\nbias",
node_aes = node_aes(
x = 6, y = 1,
fontsize = 10, width = 0.75,
color = ethics_fill, penwidth = 2, fillcolor = "white"
)
) %>%
add_edge(from = "Misrepre-\nsentation", to = "Data\nscience\nethics", edge_aes = edge_aes(arrowhead = "none")) %>%
add_edge(from = "Data\nprivacy", to = "Data\nscience\nethics", edge_aes = edge_aes(arrowhead = "none")) %>%
add_edge(from = "Algorithmic\nbias", to = "Data\nscience\nethics", edge_aes = edge_aes(arrowhead = "none")) %>%
# Making rigorous conclusions ----
add_node(
label = "Making\nrigorous\nconclu-\nsions",
node_aes = node_aes(
x = 8, y = 2,
shape = "hexagon", fixedsize = TRUE, height = 1, width = 1.1,
fontsize = 12, fontcolor = "black",
color = rigor_border, penwidth = 2, fillcolor = rigor_fill
)
) %>%
add_edge(
from = "Data\nscience\nethics", to = "Making\nrigorous\nconclu-\nsions",
edge_aes = edge_aes(arrowhead = "normal")
) %>%
add_edge(
from = "Making\nrigorous\nconclu-\nsions", to = "Data\nscience\nethics",
edge_aes = edge_aes(arrowhead = "normal")
) %>%
add_node(
label = "Model",
node_aes = node_aes(
x = 8, y = 3,
fontsize = 10, width = 0.75,
color = rigor_fill, penwidth = 2, fillcolor = "white"
)
) %>%
add_node(
label = "Predict",
node_aes = node_aes(
x = 9, y = 1,
fontsize = 10, width = 0.75,
color = rigor_fill, penwidth = 2, fillcolor = "white"
)
) %>%
add_node(
label = "Infer",
node_aes = node_aes(
x = 7, y = 1,
fontsize = 10, width = 0.75,
color = rigor_fill, penwidth = 2, fillcolor = "white"
)
) %>%
add_edge(from = "Model", to = "Making\nrigorous\nconclu-\nsions", edge_aes = edge_aes(arrowhead = "none")) %>%
add_edge(from = "Predict", to = "Making\nrigorous\nconclu-\nsions", edge_aes = edge_aes(arrowhead = "none")) %>%
add_edge(from = "Infer", to = "Making\nrigorous\nconclu-\nsions", edge_aes = edge_aes(arrowhead = "none")) %>%
# Looking further ----
add_node(
label = "Looking\nfurther",
node_aes = node_aes(
x = 10, y = 2,
shape = "hexagon", fixedsize = TRUE, height = 1, width = 1.1,
fontname = "helvetica", fontsize = 12, fontcolor = "black",
color = further_border, penwidth = 2, fillcolor = further_fill
)
) %>%
add_edge(
from = "Making\nrigorous\nconclu-\nsions", to = "Looking\nfurther",
edge_aes = edge_aes(arrowhead = "normal")
) %>%
add_edge(
to = "Making\nrigorous\nconclu-\nsions", from = "Looking\nfurther",
edge_aes = edge_aes(arrowhead = "normal")
)
render_graph(topic_flow)
```
**Unit 1 - Hello world:** This unit is an introduction to the content, pedagogy, and toolkit of the course.
**Unit 2 - Exploring data:** This unit focuses on data visualization and data wrangling.
Specifically we cover fundamentals of data and data visualization, confounding variables, and Simpson's paradox as well as the concept of tidy data, data import, data cleaning, and data curation.
We end the unit with web scraping and introduce the idea of iteration in preparation for the next unit.
Also in this unit students are introduced to the toolkit: R, RStudio, R Markdown, Git, and GitHub.
**Unit 3 - Data science ethics:** In this unit we discuss misrepresentation of findings, particularly in data visualisations, breaches of data privacy, and algorithmic bias.
**Unit 4 - Making rigorous conclusions:** In this unit we introduce modelling and statistical inference for making data-based conclusions.
We discuss building, interpreting, and selecting models, visualizing interaction effects, and prediction and model validation.
Statistical inference is introduced from a simulation based perspective, and the Central Limit Theorem is discussed very briefly to lay the foundation for future coursework in statistics.
**Unit 5 - Looking forward:** In the last unit we present a series of modules such as interactive reporting and visualization with Shiny, text analysis, and Bayesian inference.
These are independent modules that educators can choose to include in their introductory data science curriculum depending on how much time they have left in the semester.