## # A tibble: 2,477 × 2
## word value
## <chr> <dbl>
## 1 abandon -2
## 2 abandoned -2
## 3 abandons -2
## 4 abducted -2
## 5 abduction -2
## 6 abductions -2
## 7 abhor -3
## 8 abhorred -3
## 9 abhorrent -3
## 10 abhors -3
## # ℹ 2,467 more rows
## # A tibble: 6,786 × 2
## word sentiment
## <chr> <chr>
## 1 2-faces negative
## 2 abnormal negative
## 3 abolish negative
## 4 abominable negative
## 5 abominably negative
## 6 abominate negative
## 7 abomination negative
## 8 abort negative
## 9 aborted negative
## 10 aborts negative
## # ℹ 6,776 more rows
## # A tibble: 13,872 × 2
## word sentiment
## <chr> <chr>
## 1 abacus trust
## 2 abandon fear
## 3 abandon negative
## 4 abandon sadness
## 5 abandoned anger
## 6 abandoned fear
## 7 abandoned negative
## 8 abandoned sadness
## 9 abandonment anger
## 10 abandonment fear
## # ℹ 13,862 more rows
The graduate programs office regularly sends a survey to recent graduates to ascertain their level of satisfaction with their program experience. The purpose of this survey is gather information from recent graduates to enable program directors to make the program more effective and enjoyable for students.
## New names:
## • `Did not take` -> `Did not take...11`
## • `Did not take` -> `Did not take...12`
## • `Yes` -> `Yes...15`
## • `Yes` -> `Yes...16`
## • `` -> `...17`
## • `I received neither` -> `I received neither...21`
## • `I received neither` -> `I received neither...22`
## • `Yes` -> `Yes...26`
## • `Extremely satisfied` -> `Extremely satisfied...28`
## • `Extremely satisfied` -> `Extremely satisfied...29`
## • `Extremely satisfied` -> `Extremely satisfied...30`
## • `Extremely satisfied` -> `Extremely satisfied...31`
## • `Extremely satisfied` -> `Extremely satisfied...32`
## • `` -> `...33`
all_programs <- CSB_grad_survey_comments_2_15_2023$"Online MBA (OMBA)"
program_list <- strsplit(all_programs, ", ", fixed = TRUE)
program_counts <- table(unlist(program_list))
program_counts_df <- as.data.frame(program_counts)
names(program_counts_df) <- c("Program", "Count")
library(ggplot2)
ggplot(program_counts_df, aes(x = Program, y = Count, fill = Program)) +
geom_bar(stat = "identity") +
labs(title = "Survey Results by Program", x = "Program", y = "Count") +
theme(axis.text.x = element_text(angle = 0, hjust = -7)) +
scale_fill_manual(values = c("Online MBA (OMBA)" = "skyblue",
"Business Foundations Certificate (BFC)" = "orange",
"M.S. Business Analytics (MSBA)" = "green",
"Professional MBA (PMBA)" = "red",
"Executive MBA (EMBA)" = "blue"))This section provides sentiment analysis of the student’s comments based on their experience in the program.
##Sentiment Analysis was conducted using the AFINN lexicon
## # A tibble: 6 × 2
## word value
## <chr> <dbl>
## 1 disappointed -2
## 2 growth 2
## 3 friendly 2
## 4 easy 1
## 5 fantastic 4
## 6 opportunities 2
##Visualization of the Sentiment Analysis is presented as a Pie Chart
##
## Attaching package: 'cowplot'
## The following object is masked from 'package:lubridate':
##
## stamp
## Warning: Graphs cannot be vertically aligned unless the axis parameter is set.
## Placing graphs unaligned.
##A better visual representation of the Sentiment Analysis is seen in this Word Cloud
## function (words, freq, scale = c(4, 0.5), min.freq = 3, max.words = Inf,
## random.order = TRUE, random.color = FALSE, rot.per = 0.1,
## colors = "black", ordered.colors = FALSE, use.r.layout = FALSE,
## fixed.asp = TRUE, ...)
## {
## if (!fixed.asp && rot.per > 0)
## stop("Variable aspect ratio not supported for rotated words. Set rot.per=0.")
## tails <- "g|j|p|q|y"
## last <- 1
## nc <- length(colors)
## if (missing(freq)) {
## requireNamespace("tm")
## requireNamespace("slam")
## if (is.character(words) || is.factor(words)) {
## corpus <- tm::Corpus(tm::VectorSource(words))
## corpus <- tm::tm_map(corpus, tm::removePunctuation)
## corpus <- tm::tm_map(corpus, function(x) tm::removeWords(x,
## tm::stopwords()))
## }
## else corpus <- words
## tdm <- tm::TermDocumentMatrix(corpus)
## freq <- slam::row_sums(tdm)
## words <- names(freq)
## }
## if (ordered.colors) {
## if (length(colors) != 1 && length(colors) != length(words)) {
## stop(paste("Length of colors does not match length of words",
## "vector"))
## }
## }
## if (min.freq > max(freq))
## min.freq <- 0
## overlap <- function(x1, y1, sw1, sh1) {
## if (!use.r.layout)
## return(is_overlap(x1, y1, sw1, sh1, boxes))
## s <- 0
## if (length(boxes) == 0)
## return(FALSE)
## for (i in c(last, 1:length(boxes))) {
## bnds <- boxes[[i]]
## x2 <- bnds[1]
## y2 <- bnds[2]
## sw2 <- bnds[3]
## sh2 <- bnds[4]
## if (x1 < x2)
## overlap <- x1 + sw1 > x2 - s
## else overlap <- x2 + sw2 > x1 - s
## if (y1 < y2)
## overlap <- overlap && (y1 + sh1 > y2 - s)
## else overlap <- overlap && (y2 + sh2 > y1 - s)
## if (overlap) {
## last <<- i
## return(TRUE)
## }
## }
## FALSE
## }
## ord <- rank(-freq, ties.method = "random")
## words <- words[ord <= max.words]
## freq <- freq[ord <= max.words]
## if (ordered.colors) {
## colors <- colors[ord <= max.words]
## }
## if (random.order)
## ord <- sample.int(length(words))
## else ord <- order(freq, decreasing = TRUE)
## words <- words[ord]
## freq <- freq[ord]
## words <- words[freq >= min.freq]
## freq <- freq[freq >= min.freq]
## if (ordered.colors) {
## colors <- colors[ord][freq >= min.freq]
## }
## thetaStep <- 0.1
## rStep <- 0.05
## plot.new()
## op <- par("mar")
## par(mar = c(0, 0, 0, 0))
## if (fixed.asp)
## plot.window(c(0, 1), c(0, 1), asp = 1)
## else plot.window(c(0, 1), c(0, 1))
## normedFreq <- freq/max(freq)
## size <- (scale[1] - scale[2]) * normedFreq + scale[2]
## boxes <- list()
## for (i in 1:length(words)) {
## rotWord <- runif(1) < rot.per
## r <- 0
## theta <- runif(1, 0, 2 * pi)
## x1 <- 0.5
## y1 <- 0.5
## wid <- strwidth(words[i], cex = size[i], ...)
## ht <- strheight(words[i], cex = size[i], ...)
## if (grepl(tails, words[i]))
## ht <- ht + ht * 0.2
## if (rotWord) {
## tmp <- ht
## ht <- wid
## wid <- tmp
## }
## isOverlaped <- TRUE
## while (isOverlaped) {
## if (!overlap(x1 - 0.5 * wid, y1 - 0.5 * ht, wid,
## ht) && x1 - 0.5 * wid > 0 && y1 - 0.5 * ht >
## 0 && x1 + 0.5 * wid < 1 && y1 + 0.5 * ht < 1) {
## if (!random.color) {
## if (ordered.colors) {
## cc <- colors[i]
## }
## else {
## cc <- ceiling(nc * normedFreq[i])
## cc <- colors[cc]
## }
## }
## else {
## cc <- colors[sample(1:nc, 1)]
## }
## text(x1, y1, words[i], cex = size[i], offset = 0,
## srt = rotWord * 90, col = cc, ...)
## boxes[[length(boxes) + 1]] <- c(x1 - 0.5 * wid,
## y1 - 0.5 * ht, wid, ht)
## isOverlaped <- FALSE
## }
## else {
## if (r > sqrt(0.5)) {
## warning(paste(words[i], "could not be fit on page. It will not be plotted."))
## isOverlaped <- FALSE
## }
## theta <- theta + thetaStep
## r <- r + rStep * thetaStep/(2 * pi)
## x1 <- 0.5 + r * cos(theta)
## y1 <- 0.5 + r * sin(theta)
## }
## }
## }
## par(mar = op)
## invisible()
## }
## <bytecode: 0x556ed5016f30>
## <environment: namespace:wordcloud>
##Analysis What we see through the analysis of the Student responses to a survey of recent MBA graduates is that overall, students are very happy with the program as it stands. Additionally, their experiences indicated that overall, students are Very Satisfied with their experiences as measured on a Liekert Scale in the survey. Despite the fact that the majority of students received neither a raise nor a promotion, they still overwhelmingly describe their experience as “amazing” and “fantastic”