knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
library(tcps)
Institutional culture is defined as the embedded patterns, behaviours, shared values, beliefs, and ideologies of an educational institution (Kezar & Eckel, 2002). Institutional culture helps define the nature and reality of an educator or learner’s experience at an educational institution.
The Teaching Culture Perceptions Survey (TCPS) has been developed to provide Canadian universities with a tool to assess instructors’, staff members’, and students’ perceptions of how teaching is valued at their universities. This new survey instrument is designed to document the value that Canadian Universities place on teaching, to provide feedback to universities on their teaching culture, and to monitor changes in that culture over time. The research will validate the institutional teaching culture survey instrument under development, and will help determine areas for improving the perceived teaching culture, which may lead to a more positive teaching environment, and ultimately, improved teaching and learning.
For further information on the TCPS, please go to https://qualityteachingculture.wordpress.com/
During the course of the TCPS, a need to provide some form of reporting and visualization of results was realized. In the early stages, many visualizations were created using R and the reports constructed in editing software. This soon matured to a fully fledged R package capable of reading in survey data, calculating the lever scores, visualizing the data and producing a report template for further editing. Any future development of the TCPS or of this package will be available at https://qualityteachingculture.wordpress.com/ and at https://github.com/jkaupp/tcps
The package is freely available and requires R to be installed as well. R is a free open-source software available at https://www.r-project.org/. It is a command line program, but there are many high quality and free interactive development environments (IDE) one can use. RStudio https://www.rstudio.com is a highly recommended IDE to download and install.
To recap:
The most straightforward way to install the tcps package is to use the code below:
if ("devtools" %in% rownames(installed.packages())) { devtools::install_github("jkaupp/tcps") } else { install.packages("devtools") devtools::install_github("jkaupp/tcps") }
In order to properly read and process the data across many different survey platforms and potential edits made by institutions some standardized elements needed to be in place. The questions in the TCPS comprise 6 individual levers, and each of those questions need to be clearly identified. To do so this package looks to identify each TCPS question by a unique identifier, shown below.
These can either be placed within the survey platform as a question number (qualtrics, survey monkey, survey gizmo) or they can be added as the column header after the data has been exported to an excel file, as shown in the image below.
Failure to do so will render this program unable to properly determine the items that comprise the levers. Reading data that is not properly tagged will result in an error, and the functions provided in this package will not work.
tcps_read_excel()
With your properly prepared excel file of exported data from your survey platform of choice, you can use the tcps_read_excel()
function to read in, tidy and augment your data with the TCPS lever scores.
library(tcps) # Load some sample data! file <- tcps_sample("staff_sample.xlsx") # With your data the path would be the full file path to the data e.g. #file <- "PATH/TO YOUR/TCPS Data" tcps_data <- tcps_read_excel(file) head(tcps_data)
If you have multiple surveys (e.g. student, staff, faculty) in a directory you can read them all using the same command but passing in a list of files.
file_list <- tcps_sample(full.names = TRUE) # On your own machine, you'd use dir("path to directory", full.names = TRUE) to construct a list of files! all_tcps_data <- tcps_read_excel(file_list)
tcps_lever_ridgeline()
Now that the excel file has been read into R, you can use some built in functions to visualize the levers and scales using two functions.
tcps_lever_ridgeline()
is used to visualize the six levers within the TCPS. You can visualize a single lever like this, and get a detailed view of the response distribution in both Agreement and Importance modes of the lever. The levers are presented with the levers with the largest gaps between agreement and importance at the top (greatest misalignment) and the smallest at the bottom (less misaligned).
tcps_lever_ridgeline(tcps_data, name = "Prestigious Institution", lever = "lever1")
You can also visualize all levers at once, not specifying a lever or setting lever = NULL
. This does provide a mode homogeneous view of the gaps between agreement and importance across all levers while sacrificing some detail for each individual lever distribution.
tcps_lever_ridgeline(tcps_data, name = "Prestigious Institution")
You can also visualize the combined surveys data (faculty, staff and student) all on the same chart by passing the full data set. Similar to before you can use the lever
argument to visualize a single lever, if you wish.
tcps_lever_ridgeline(all_tcps_data, name = "Prestigious Institution")
You can set aggregate = TRUE
in the function to combine the groups to provide an "Institutional View". Again, you can use the lever
argument to view a single lever, or leave it blank for all levers.
tcps_lever_ridgeline(all_tcps_data, name = "Prestigious Institution", aggregate = TRUE)
You can change the color sets in the two distributions using the pal
argument. There are three built in options, pal = pal_one
(default), pal = pal_two
, pal = pal_three
or you can specify a two element color vector of your own choosing.
tcps_lever_ridgeline(all_tcps_data, name = "Prestigious Institution", aggregate = TRUE, pal = pal_two) tcps_lever_ridgeline(all_tcps_data, name = "Prestigious Institution", aggregate = TRUE, pal = pal_three) tcps_lever_ridgeline(all_tcps_data, name = "Prestigious Institution", aggregate = TRUE, pal = c("orange","dodgerblue"))
tcps_lever_scale()
tcps_lever_scale()
is used to visualize the distributions in each question that comprises a lever. The questions are organized in numeric order starting at the first question in the lever. Each question shows two bars, the top bar represents importance, the bottom bar represents agreement. The 5 response categories of each are color coded and centered around the neutral response ("Somewhat"). The numbers on the left and right indicate the percentage of responses of the top two ("Quite a Bit" and "A Great Deal") and bottom two ("Very Little" and "Not At All") categories. This provides the item by item distribution view, highlighting the high response options and illustrating how individual scale skew can affect the lever distribution.
Due to space requirements you can only visualize a single lever at a time.
tcps_lever_scale(tcps_data, choice = "lever1", name = "Prestigious Institution")
Simply plotting combined data and specifying a lever will plot the scale items for each lever side by side. Note that the lever scale questions differ between groups.
tcps_lever_scale(all_tcps_data, "lever2", name = "Prestigious Institution")
You can use the visualization to construct your own report by various methods. You can:
rmarkdown
package to write reports in R.tcps_report()
function to produce a boilerplate report in html, pdf or word.path <- dirname(tcps_sample("faculty_sample.xlsx", full.names = TRUE)) tcps_report(path_to_data = path, name_of_school = "Prestigious Institution", format = "word")
If you notice a bug or an error, please submit an issue at https://github.com/jkaupp/tcps/issues
Currently there are no plans for further development. However, this being an open source package there will be maintenance to fix any breaking changes. Additionally, I welcome anyone willing to expand the functionality of the package by submitting a pull request on github (http://www.github.com/jkaupp/tcps).
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.