This study aims to explore changes in the issues and perspectives of statistics teachers who participated in Massive Open Online Courses for Educators (MOOC-Eds) to advance their pedagogy. Since MOOC-Eds are used for sharing thoughts on teaching students and classes, it is crucial to review the topics that have appeared each year and how they have changed over time to capture teachers’ interests and identify any areas for improvement in the MOOC-Eds. The research questions are: 1) What are the main interests of teachers each year? 2) How have their issues and perspectives changed over time?
In this study, data from Moodle’s MySQL database, which records teachers’ activity in online forums, collected from 2015 to 2017, was utilized. Topic modeling was employed as the analysis method. The data was divided into each year’s collection, and topic modeling analysis was conducted for each year’s data.
# Prepare - set up
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.4.4 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.0
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(tidytext)
library(SnowballC)
library(topicmodels)
library(stm)
## stm v1.3.7 successfully loaded. See ?stm for help.
## Papers, resources, and other materials at structuraltopicmodel.com
library(ldatuning)
library(knitr)
library(LDAvis)
library(dplyr)
# Import 2015 data
ts_forum_data_2015 <- read_csv("C:/Users/sag2f/Downloads/2015_ts_forum_data.csv",
col_types = cols(course_id = col_character(),
forum_id = col_character(),
discussion_id = col_character(),
post_id = col_character()
)
)
# Tidying text
forums_tidy_2015 <- ts_forum_data_2015 %>%
unnest_tokens(output = word, input = post_content) %>%
anti_join(stop_words, by = "word")
# Creating a Document Term Matrix with stemming
forums_dtm <- forums_tidy_2015 %>%
mutate(stem = wordStem(word)) %>%
count(discussion_id, word) %>%
cast_dtm(discussion_id, word, n)
forums_dtm
## <<DocumentTermMatrix (documents: 357, terms: 6462)>>
## Non-/sparse entries: 33375/2273559
## Sparsity : 99%
## Maximal term length: NA
## Weighting : term frequency (tf)
temp <- textProcessor(ts_forum_data_2015$post_content,
metadata = ts_forum_data_2015,
lowercase=TRUE,
removestopwords=TRUE,
removenumbers=TRUE,
removepunctuation=TRUE,
wordLengths=c(3,Inf),
stem=TRUE,
onlycharacter= FALSE,
customstopwords=NULL)
## Building corpus...
## Converting to Lower Case...
## Removing punctuation...
## Removing stopwords...
## Removing numbers...
## Stemming...
## Creating Output...
meta <- temp$meta
vocab <- temp$vocab
docs <- temp$documents
# Finding a K
k_metrics <- FindTopicsNumber(
forums_dtm,
topics = seq(1, 20, by = 4),
metrics = c("Griffiths2004", "CaoJuan2009", "Arun2010", "Deveaud2014"),
method = "Gibbs"
)
FindTopicsNumber_plot(k_metrics)
## Warning: The `<scale>` argument of `guides()` cannot be `FALSE`. Use "none" instead as
## of ggplot2 3.3.4.
## ℹ The deprecated feature was likely used in the ldatuning package.
## Please report the issue at <https://github.com/nikita-moor/ldatuning/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
n_distinct(ts_forum_data_2015$forum_name)
## [1] 8
# LDA Model
forums_lda <- LDA(forums_dtm,
k = 9,
control = list(seed = 588)
)
forums_lda
## A LDA_VEM topic model with 9 topics.
# STM Model
docs <- temp$documents
meta <- temp$meta
vocab <- temp$vocab
forums_stm <- stm(documents=docs,
data=meta,
vocab=vocab,
K=9,
max.em.its=25,
verbose = FALSE)
forums_stm
## A topic model with 9 topics, 1850 documents and a 4625 word dictionary.
plot.STM(forums_stm, n = 10)
plot(forums_stm, n = 10)
toLDAvis(mod = forums_stm, docs = docs)
## 필요한 네임스페이스를 로딩합니다: servr
#Explore
#Exploring beta values
terms(forums_lda, 10)
## Topic 1 Topic 2 Topic 3 Topic 4 Topic 5
## [1,] "students" "students" "students" "students" "data"
## [2,] "data" "data" "statistics" "questions" "students"
## [3,] "task" "school" "stats" "statistics" "statistics"
## [4,] "activity" "time" "teaching" "assessment" "class"
## [5,] "coke" "questions" "school" "answer" "time"
## [6,] "pepsi" "agree" "math" "test" "ideas"
## [7,] "time" "real" "class" "understanding" "questions"
## [8,] "agree" "question" "teach" "items" "question"
## [9,] "class" "statistics" "ap" "locus" "collect"
## [10,] "question" "minutes" "data" "score" "activity"
## Topic 6 Topic 7 Topic 8 Topic 9
## [1,] "students" "students" "data" "students"
## [2,] "statistics" "statistics" "students" "statistics"
## [3,] "data" "data" "gapminder" "school"
## [4,] "school" "level" "statistics" "data"
## [5,] "agree" "school" "unit" "statistical"
## [6,] "time" "software" "time" "level"
## [7,] "statistical" "statistical" "tool" "questions"
## [8,] "teaching" "time" "mooc" "class"
## [9,] "math" "teaching" "1" "question"
## [10,] "class" "trials" "teaching" "teacher"
tidy_lda <- tidy(forums_lda)
tidy_lda
## # A tibble: 58,158 × 3
## topic term beta
## <int> <chr> <dbl>
## 1 1 2015 1.77e- 4
## 2 2 2015 1.82e- 4
## 3 3 2015 1.08e-212
## 4 4 2015 5.71e- 4
## 5 5 2015 6.95e-245
## 6 6 2015 1.45e-247
## 7 7 2015 8.07e-243
## 8 8 2015 2.34e- 4
## 9 9 2015 2.29e- 4
## 10 1 21 1.32e-241
## # ℹ 58,148 more rows
top_terms <- tidy_lda %>%
group_by(topic) %>%
slice_max(beta, n = 7, with_ties = FALSE) %>%
ungroup() %>%
arrange(topic, -beta)
top_terms %>%
mutate(term = reorder_within(term, beta, topic)) %>%
group_by(topic, term) %>%
arrange(desc(beta)) %>%
ungroup() %>%
ggplot(aes(beta, term, fill = as.factor(topic))) +
geom_col(show.legend = FALSE) +
scale_y_reordered() +
labs(title = "Top 7 terms in each LDA topic",
x = expression(beta), y = NULL) +
facet_wrap(~ topic, ncol = 4, scales = "free")
# Exploring gamma values
td_beta <- tidy(forums_lda)
td_gamma <- tidy(forums_lda, matrix = "gamma")
td_beta
## # A tibble: 58,158 × 3
## topic term beta
## <int> <chr> <dbl>
## 1 1 2015 1.77e- 4
## 2 2 2015 1.82e- 4
## 3 3 2015 1.08e-212
## 4 4 2015 5.71e- 4
## 5 5 2015 6.95e-245
## 6 6 2015 1.45e-247
## 7 7 2015 8.07e-243
## 8 8 2015 2.34e- 4
## 9 9 2015 2.29e- 4
## 10 1 21 1.32e-241
## # ℹ 58,148 more rows
td_gamma
## # A tibble: 3,213 × 3
## document topic gamma
## <chr> <int> <dbl>
## 1 4815 1 0.000808
## 2 5362 1 0.000123
## 3 5375 1 0.0000398
## 4 5385 1 0.0000298
## 5 5395 1 0.0000845
## 6 5433 1 0.00216
## 7 5434 1 0.000205
## 8 5451 1 0.000201
## 9 5452 1 0.0000339
## 10 5470 1 0.000199
## # ℹ 3,203 more rows
top_terms <- td_beta %>%
arrange(beta) %>%
group_by(topic) %>%
top_n(10, beta) %>%
arrange(-beta) %>%
select(topic, term) %>%
summarise(terms = list(term)) %>%
mutate(terms = map(terms, paste, collapse = ", ")) %>%
unnest()
## Warning: `cols` is now required when using `unnest()`.
## ℹ Please use `cols = c(terms)`.
gamma_terms <- td_gamma %>%
group_by(topic) %>%
summarise(gamma = mean(gamma)) %>%
arrange(desc(gamma)) %>%
left_join(top_terms, by = "topic") %>%
mutate(topic = paste0("Topic ", topic),
topic = reorder(topic, gamma))
gamma_terms %>%
select(topic, gamma, terms) %>%
kable(digits = 3,
col.names = c("Topic", "Expected topic proportion", "Top 10 terms"))
| Topic | Expected topic proportion | Top 10 terms |
|---|---|---|
| Topic 4 | 0.158 | students, questions, statistics, assessment, answer, test, understanding, items, locus, score |
| Topic 3 | 0.135 | students, statistics, stats, teaching, school, math, class, teach, ap, data |
| Topic 9 | 0.122 | students, statistics, school, data, statistical, level, questions, class, question, teacher |
| Topic 7 | 0.118 | students, statistics, data, level, school, software, statistical, time, teaching, trials |
| Topic 6 | 0.116 | students, statistics, data, school, agree, time, statistical, teaching, math, class |
| Topic 1 | 0.104 | students, data, task, activity, coke, pepsi, time, agree, class, question |
| Topic 8 | 0.103 | data, students, gapminder, statistics, unit, time, tool, mooc, 1, teaching |
| Topic 5 | 0.086 | data, students, statistics, class, time, ideas, questions, question, collect, activity |
| Topic 2 | 0.059 | students, data, school, time, questions, agree, real, question, statistics, minutes |
plot(forums_stm, n = 10)
# Prepare - set up
library(tidyverse)
library(tidytext)
library(SnowballC)
library(topicmodels)
library(stm)
library(ldatuning)
library(knitr)
library(LDAvis)
library(dplyr)
# Import 2016 data
ts_forum_data_2016 <- read_csv("C:/Users/sag2f/Downloads/2016_ts_forum_data.csv",
col_types = cols(course_id = col_character(),
forum_id = col_character(),
discussion_id = col_character(),
post_id = col_character()
)
)
# Tidying text
forums_tidy_2016 <- ts_forum_data_2016 %>%
unnest_tokens(output = word, input = post_content) %>%
anti_join(stop_words, by = "word")
# Creating a Document Term Matrix with stemming
forums_dtm <- forums_tidy_2016 %>%
mutate(stem = wordStem(word)) %>%
count(discussion_id, word) %>%
cast_dtm(discussion_id, word, n)
forums_dtm
## <<DocumentTermMatrix (documents: 583, terms: 6740)>>
## Non-/sparse entries: 43902/3885518
## Sparsity : 99%
## Maximal term length: 56
## Weighting : term frequency (tf)
temp <- textProcessor(ts_forum_data_2016$post_content,
metadata = ts_forum_data_2016,
lowercase=TRUE,
removestopwords=TRUE,
removenumbers=TRUE,
removepunctuation=TRUE,
wordLengths=c(3,Inf),
stem=TRUE,
onlycharacter= FALSE,
customstopwords=NULL)
## Building corpus...
## Converting to Lower Case...
## Removing punctuation...
## Removing stopwords...
## Removing numbers...
## Stemming...
## Creating Output...
meta <- temp$meta
vocab <- temp$vocab
docs <- temp$documents
# Finding a K
k_metrics <- FindTopicsNumber(
forums_dtm,
topics = seq(1, 30, by = 5),
metrics = c("Griffiths2004", "CaoJuan2009", "Arun2010", "Deveaud2014"),
method = "Gibbs"
)
FindTopicsNumber_plot(k_metrics)
n_distinct(ts_forum_data_2016$forum_name)
## [1] 10
# LDA Model
forums_lda <- LDA(forums_dtm,
k = 10,
control = list(seed = 588)
)
forums_lda
## A LDA_VEM topic model with 10 topics.
# STM Model
docs <- temp$documents
meta <- temp$meta
vocab <- temp$vocab
forums_stm <- stm(documents=docs,
data=meta,
vocab=vocab,
K=10,
max.em.its=25,
verbose = FALSE)
forums_stm
## A topic model with 10 topics, 2156 documents and a 4805 word dictionary.
plot.STM(forums_stm, n = 10)
plot(forums_stm, n = 10)
toLDAvis(mod = forums_stm, docs = docs)
#Explore
#Exploring beta values
terms(forums_lda, 10)
## Topic 1 Topic 2 Topic 3 Topic 4 Topic 5
## [1,] "students" "students" "students" "statistics" "students"
## [2,] "data" "data" "data" "tsdi" "data"
## [3,] "school" "questions" "school" "mooc" "statistics"
## [4,] "questions" "question" "statistics" "teaching" "question"
## [5,] "question" "time" "time" "1" "agree"
## [6,] "time" "task" "questions" "unit" "time"
## [7,] "project" "activity" "median" "learn" "gapminder"
## [8,] "class" "agree" "level" "learning" "questions"
## [9,] "statistics" "statistical" "graphs" "engage" "class"
## [10,] "answer" "statistics" "statistical" "team" "school"
## Topic 6 Topic 7 Topic 8 Topic 9 Topic 10
## [1,] "statistics" "data" "statistics" "students" "students"
## [2,] "students" "students" "data" "technology" "data"
## [3,] "questions" "question" "resources" "level" "task"
## [4,] "teaching" "questions" "education" "data" "question"
## [5,] "math" "class" "teaching" "dice" "questions"
## [6,] "school" "time" "online" "sample" "tasks"
## [7,] "teach" "process" "mathematics" "results" "statistical"
## [8,] "stats" "statistics" "students" "simulation" "collect"
## [9,] "class" "agree" "graduate" "agree" "school"
## [10,] "resources" "set" "programs" "size" "coke"
tidy_lda <- tidy(forums_lda)
tidy_lda
## # A tibble: 67,400 × 3
## topic term beta
## <int> <chr> <dbl>
## 1 1 000 1.73e- 4
## 2 2 000 2.91e- 4
## 3 3 000 1.48e-211
## 4 4 000 4.26e-207
## 5 5 000 7.69e- 10
## 6 6 000 1.05e-220
## 7 7 000 1.51e- 13
## 8 8 000 6.89e-209
## 9 9 000 2.99e- 4
## 10 10 000 2.33e-213
## # ℹ 67,390 more rows
top_terms <- tidy_lda %>%
group_by(topic) %>%
slice_max(beta, n = 7, with_ties = FALSE) %>%
ungroup() %>%
arrange(topic, -beta)
top_terms %>%
mutate(term = reorder_within(term, beta, topic)) %>%
group_by(topic, term) %>%
arrange(desc(beta)) %>%
ungroup() %>%
ggplot(aes(beta, term, fill = as.factor(topic))) +
geom_col(show.legend = FALSE) +
scale_y_reordered() +
labs(title = "Top 7 terms in each LDA topic",
x = expression(beta), y = NULL) +
facet_wrap(~ topic, ncol = 4, scales = "free")
# Exploring gamma values
td_beta <- tidy(forums_lda)
td_gamma <- tidy(forums_lda, matrix = "gamma")
td_beta
## # A tibble: 67,400 × 3
## topic term beta
## <int> <chr> <dbl>
## 1 1 000 1.73e- 4
## 2 2 000 2.91e- 4
## 3 3 000 1.48e-211
## 4 4 000 4.26e-207
## 5 5 000 7.69e- 10
## 6 6 000 1.05e-220
## 7 7 000 1.51e- 13
## 8 8 000 6.89e-209
## 9 9 000 2.99e- 4
## 10 10 000 2.33e-213
## # ℹ 67,390 more rows
td_gamma
## # A tibble: 5,830 × 3
## document topic gamma
## <chr> <int> <dbl>
## 1 10019 1 0.0000977
## 2 10020 1 0.000138
## 3 10022 1 0.0000990
## 4 10027 1 0.000269
## 5 10031 1 0.992
## 6 10037 1 0.00286
## 7 10047 1 0.000147
## 8 10051 1 0.279
## 9 10056 1 0.00104
## 10 10057 1 0.998
## # ℹ 5,820 more rows
top_terms <- td_beta %>%
arrange(beta) %>%
group_by(topic) %>%
top_n(10, beta) %>%
arrange(-beta) %>%
select(topic, term) %>%
summarise(terms = list(term)) %>%
mutate(terms = map(terms, paste, collapse = ", ")) %>%
unnest()
## Warning: `cols` is now required when using `unnest()`.
## ℹ Please use `cols = c(terms)`.
gamma_terms <- td_gamma %>%
group_by(topic) %>%
summarise(gamma = mean(gamma)) %>%
arrange(desc(gamma)) %>%
left_join(top_terms, by = "topic") %>%
mutate(topic = paste0("Topic ", topic),
topic = reorder(topic, gamma))
gamma_terms %>%
select(topic, gamma, terms) %>%
kable(digits = 3,
col.names = c("Topic", "Expected topic proportion", "Top 10 terms"))
| Topic | Expected topic proportion | Top 10 terms |
|---|---|---|
| Topic 6 | 0.247 | statistics, students, questions, teaching, math, school, teach, stats, class, resources |
| Topic 2 | 0.115 | students, data, questions, question, time, task, activity, agree, statistical, statistics |
| Topic 1 | 0.102 | students, data, school, questions, question, time, project, class, statistics, answer |
| Topic 10 | 0.095 | students, data, task, question, questions, tasks, statistical, collect, school, coke |
| Topic 9 | 0.092 | students, technology, level, data, dice, sample, results, simulation, agree, size |
| Topic 5 | 0.089 | students, data, statistics, question, agree, time, gapminder, questions, class, school |
| Topic 7 | 0.087 | data, students, question, questions, class, time, process, statistics, agree, set |
| Topic 3 | 0.073 | students, data, school, statistics, time, questions, median, level, graphs, statistical |
| Topic 4 | 0.059 | statistics, tsdi, mooc, teaching, 1, unit, learn, learning, engage, team |
| Topic 8 | 0.042 | statistics, data, resources, education, teaching, online, mathematics, students, graduate, programs |
plot(forums_stm, n = 10)
# Prepare - set up
library(tidyverse)
library(tidytext)
library(SnowballC)
library(topicmodels)
library(stm)
library(ldatuning)
library(knitr)
library(LDAvis)
library(dplyr)
# Import 2017 data
ts_forum_data_2017 <- read_csv("C:/Users/sag2f/Downloads/2017_ts_forum_data.csv",
col_types = cols(course_id = col_character(),
forum_id = col_character(),
discussion_id = col_character(),
post_id = col_character()
)
)
# Tidying text
forums_tidy_2017 <- ts_forum_data_2017 %>%
unnest_tokens(output = word, input = post_content) %>%
anti_join(stop_words, by = "word")
# Creating a Document Term Matrix with stemming
forums_dtm <- forums_tidy_2017 %>%
mutate(stem = wordStem(word)) %>%
count(discussion_id, word) %>%
cast_dtm(discussion_id, word, n)
forums_dtm
## <<DocumentTermMatrix (documents: 465, terms: 8492)>>
## Non-/sparse entries: 35213/3913567
## Sparsity : 99%
## Maximal term length: 320
## Weighting : term frequency (tf)
temp <- textProcessor(ts_forum_data_2017$post_content,
metadata = ts_forum_data_2017,
lowercase=TRUE,
removestopwords=TRUE,
removenumbers=TRUE,
removepunctuation=TRUE,
wordLengths=c(3,Inf),
stem=TRUE,
onlycharacter= FALSE,
customstopwords=NULL)
## Building corpus...
## Converting to Lower Case...
## Removing punctuation...
## Removing stopwords...
## Removing numbers...
## Stemming...
## Creating Output...
meta <- temp$meta
vocab <- temp$vocab
docs <- temp$documents
# Finding a K
k_metrics <- FindTopicsNumber(
forums_dtm,
topics = seq(1, 30, by = 5),
metrics = c("Griffiths2004", "CaoJuan2009", "Arun2010", "Deveaud2014"),
method = "Gibbs"
)
FindTopicsNumber_plot(k_metrics)
n_distinct(ts_forum_data_2017$forum_name)
## [1] 8
# LDA Model
forums_lda <- LDA(forums_dtm,
k = 8,
control = list(seed = 588)
)
forums_lda
## A LDA_VEM topic model with 8 topics.
# STM Model
docs <- temp$documents
meta <- temp$meta
vocab <- temp$vocab
forums_stm <- stm(documents=docs,
data=meta,
vocab=vocab,
K=8,
max.em.its=25,
verbose = FALSE)
forums_stm
## A topic model with 8 topics, 1766 documents and a 5674 word dictionary.
plot.STM(forums_stm, n = 10)
plot(forums_stm, n = 10)
toLDAvis(mod = forums_stm, docs = docs)
#Explore
#Exploring beta values
terms(forums_lda, 10)
## Topic 1 Topic 2 Topic 3 Topic 4 Topic 5
## [1,] "resources" "deviation" "students" "students" "statistics"
## [2,] "data" "students" "statistics" "technology" "students"
## [3,] "teaching" "shoes" "data" "data" "ap"
## [4,] "confident" "statistic" "questions" "difference" "teach"
## [5,] "feel" "runners" "school" "time" "stats"
## [6,] "agree" "hand" "class" "sample" "school"
## [7,] "statistics" "agree" "time" "class" "class"
## [8,] "confidence" "probability" "question" "software" "data"
## [9,] "information" "standard" "math" "coasters" "math"
## [10,] "statkey" "hypothesis" "task" "teaching" "level"
## Topic 6 Topic 7 Topic 8
## [1,] "statistics" "students" "data"
## [2,] "em" "data" "students"
## [3,] "education" "time" "questions"
## [4,] "learning" "activity" "school"
## [5,] "teaching" "task" "class"
## [6,] "online" "agree" "task"
## [7,] "unit" "class" "agree"
## [8,] "data" "sample" "statistics"
## [9,] "mathematics" "video" "time"
## [10,] "engage" "population" "question"
tidy_lda <- tidy(forums_lda)
tidy_lda
## # A tibble: 67,936 × 3
## topic term beta
## <int> <chr> <dbl>
## 1 1 20 3.94e- 4
## 2 2 20 2.74e- 4
## 3 3 20 3.08e- 4
## 4 4 20 1.35e- 3
## 5 5 20 7.87e- 4
## 6 6 20 1.34e- 3
## 7 7 20 3.31e- 3
## 8 8 20 1.22e- 4
## 9 1 3538 5.85e-270
## 10 2 3538 1.65e-275
## # ℹ 67,926 more rows
top_terms <- tidy_lda %>%
group_by(topic) %>%
slice_max(beta, n = 7, with_ties = FALSE) %>%
ungroup() %>%
arrange(topic, -beta)
top_terms %>%
mutate(term = reorder_within(term, beta, topic)) %>%
group_by(topic, term) %>%
arrange(desc(beta)) %>%
ungroup() %>%
ggplot(aes(beta, term, fill = as.factor(topic))) +
geom_col(show.legend = FALSE) +
scale_y_reordered() +
labs(title = "Top 7 terms in each LDA topic",
x = expression(beta), y = NULL) +
facet_wrap(~ topic, ncol = 4, scales = "free")
# Exploring gamma values
td_beta <- tidy(forums_lda)
td_gamma <- tidy(forums_lda, matrix = "gamma")
td_beta
## # A tibble: 67,936 × 3
## topic term beta
## <int> <chr> <dbl>
## 1 1 20 3.94e- 4
## 2 2 20 2.74e- 4
## 3 3 20 3.08e- 4
## 4 4 20 1.35e- 3
## 5 5 20 7.87e- 4
## 6 6 20 1.34e- 3
## 7 7 20 3.31e- 3
## 8 8 20 1.22e- 4
## 9 1 3538 5.85e-270
## 10 2 3538 1.65e-275
## # ℹ 67,926 more rows
td_gamma
## # A tibble: 3,720 × 3
## document topic gamma
## <chr> <int> <dbl>
## 1 15720 1 0.000127
## 2 15733 1 0.000192
## 3 15734 1 0.0000356
## 4 15747 1 0.0000555
## 5 15766 1 0.0000326
## 6 15768 1 0.000301
## 7 15780 1 0.0000613
## 8 15781 1 0.000155
## 9 15783 1 0.000186
## 10 15787 1 0.000301
## # ℹ 3,710 more rows
top_terms <- td_beta %>%
arrange(beta) %>%
group_by(topic) %>%
top_n(10, beta) %>%
arrange(-beta) %>%
select(topic, term) %>%
summarise(terms = list(term)) %>%
mutate(terms = map(terms, paste, collapse = ", ")) %>%
unnest()
## Warning: `cols` is now required when using `unnest()`.
## ℹ Please use `cols = c(terms)`.
gamma_terms <- td_gamma %>%
group_by(topic) %>%
summarise(gamma = mean(gamma)) %>%
arrange(desc(gamma)) %>%
left_join(top_terms, by = "topic") %>%
mutate(topic = paste0("Topic ", topic),
topic = reorder(topic, gamma))
gamma_terms %>%
select(topic, gamma, terms) %>%
kable(digits = 3,
col.names = c("Topic", "Expected topic proportion", "Top 10 terms"))
| Topic | Expected topic proportion | Top 10 terms |
|---|---|---|
| Topic 5 | 0.208 | statistics, students, ap, teach, stats, school, class, data, math, level |
| Topic 3 | 0.197 | students, statistics, data, questions, school, class, time, question, math, task |
| Topic 8 | 0.178 | data, students, questions, school, class, task, agree, statistics, time, question |
| Topic 7 | 0.141 | students, data, time, activity, task, agree, class, sample, video, population |
| Topic 4 | 0.102 | students, technology, data, difference, time, sample, class, software, coasters, teaching |
| Topic 6 | 0.079 | statistics, em, education, learning, teaching, online, unit, data, mathematics, engage |
| Topic 1 | 0.065 | resources, data, teaching, confident, feel, agree, statistics, confidence, information, statkey |
| Topic 2 | 0.031 | deviation, students, shoes, statistic, runners, hand, agree, probability, standard, hypothesis |
plot(forums_stm, n = 10)
In each year, a different number of topics (ranging from 8 to 11) was extracted. Among them, three topics were selected each year based on their relative popularity, which was calculated using the expected proportion of each topic.
In 2015, Topic 4 (15.8%, Students’ understanding of statistics through assessment and questions), Topic 3 (13.5%, How to teach statistics compared to math class), and Topic 9 (12.2%, Students’ questions according to the level of statistics class) were selected.
In 2016, Topic 6 (24.7%, Students’ common questions when teaching statistics and math), Topic 2 (11.5%, Students’ questions about data and tasks), and Topic 1 (10.2%, Students’ questions about projects) were selected.
In 2017, Topic 5 (20.8%, Teaching statistics as an AP class), Topic 3 (19.7%, Students’ questions on statistics data), and Topic 8 (17.8%, Students’ questions on data and tasks) were selected.
Overall, it seems that teachers have been interested in how to respond or deal with students’ questions regarding activities and data over the years. Additionally, how statistics could be connected to other courses such as Math and AP class seems to be another common topic in the discussions. Meanwhile, the differences among the three years do not seem substantial. In summary, for future contents for MOOC-Eds, pedagogy regarding those common topics could be more considered.