Due: 2018-03-01 at noon
Many college courses conclude by giving students the opportunity to evaluate the course and the instructor anonymously. However, the use of these student evaluations as an indicator of course quality and teaching effectiveness is often criticized because these measures may reflect the influence of non-teaching related characteristics, such as the physical appearance of the instructor. The article titled, “Beauty in the classroom: instructors’ pulchritude and putative pedagogical productivity” (Hamermesh and Parker, 2005) found that instructors who are viewed to be better looking receive higher instructional ratings. (Daniel S. Hamermesh, Amy Parker, Beauty in the classroom: instructors pulchritude and putative pedagogical productivity, Economics of Education Review, Volume 24, Issue 4, August 2005, Pages 369-376, ISSN 0272-7757, 10.1016/j.econedurev.2004.07.013. http://www.sciencedirect.com/science/article/pii/S0272775704001165.)
For this assignment you will analyze the data from this study in order to learn what goes into a positive professor evaluation.
The data were gathered from end of semester student evaluations for a large sample of professors from the University of Texas at Austin. In addition, six students rated the professors’ physical appearance. (This is a slightly modified version of the original data set that was released as part of the replication data for Data Analysis Using Regression and Multilevel/Hierarchical Models (Gelman and Hill, 2007).) The result is a data frame where each row contains a different course and columns represent variables about the courses and professors.
Go to the course organization on GitHub: https://github.com/Sta199-S18.
Find the repo starting with lab-06
and that has your team name at the end (this should be the only lab-06
repo available to you).
In the repo, click on the green Clone or download button, select Use HTTPS (this might already be selected by default, and if it is, you’ll see the text Clone with HTTPS as in the image below). Click on the clipboard icon to copy the repo URL.
Go to RStudio Cloud and into the course workspace. Create a New Project from Git Repo. You will need to click on the down arrow next to the New Project button to see this option.
Copy and paste the URL of your assignment repo into the dialog box:
Hit OK, and you’re good to go!
In this lab we will work with the tidyverse
and broom
packages. We can install and load them with the following:
When you install the tidyverse package, a long list of packages get installed with it. However when you load it (with the library
function) only a few of them get loaded, e.g. dplyr
, ggplot2
, and forcats
. The broom package is installed with the tidyverse, but we need to load it separately in order to make use of it.
install.packages("tidyverse")
library(tidyverse)
library(broom)
Configure your Git user name and email. If you cannot remember the instructions, refer to an earlier lab. Also remember that you can cache your password for a limited amount of time.
Update the name of your project to match the lab’s title.
Pick one team member to complete the steps in this section while the others contribute to the discussion but do not actually touch the files on their computer.
Before we introduce the data, let’s warm up with some simple exercises.
Open the R Markdown (Rmd) file in your project, change the author name to your team name, and knit the document.
Now, the remaining team members who have not been concurrently making these changes on their projects should click on the Pull button in their Git pane and observe that the changes are now reflected on their projects as well.
In this lab you will first download the data, then upload it to the data/
folder in your RStudio Cloud project.
evals-mod.csv
.evals-mod.csv
file.Then, you can load the data as usual using the following.
evals <- read_csv("data/evals-mod.csv")
Variable name | Description |
---|---|
score |
Average professor evaluation score: (1) very unsatisfactory - (5) excellent |
rank |
Rank of professor: teaching, tenure track, tenure |
ethnicity |
Ethnicity of professor: not minority, minority |
gender |
Gender of professor: female, male |
language |
Language of school where professor received education: english or non-english |
age |
Age of professor |
cls_perc_eval |
Percent of students in class who completed evaluation |
cls_did_eval |
Number of students in class who completed evaluation |
cls_students |
Total number of students in class |
cls_level |
Class level: lower, upper |
cls_profs |
Number of professors teaching sections in course in sample: single, multiple |
cls_credits |
Number of credits of class: one credit (lab, PE, etc.), multi credit |
bty_f1lower |
Beauty rating of professor from lower level female: (1) lowest - (10) highest |
bty_f1upper |
Beauty rating of professor from upper level female: (1) lowest - (10) highest |
bty_f2upper |
Beauty rating of professor from upper level female: (1) lowest - (10) highest |
bty_m1lower |
Beauty rating of professor from lower level male: (1) lowest - (10) highest |
bty_m1upper |
Beauty rating of professor from upper level male: (1) lowest - (10) highest |
bty_m2upper |
Beauty rating of professor from upper level male: (1) lowest - (10) highest |
The rowwise
function is useful for applying mathematical operations to each row.
bty_avg
that is the average attractiveness score of the six students for each professor (bty_f1lower
through bty_m2upper
). Add this new variable to the evals
data frame. Do this in one pipe, using the rowwise
function. Incomplete code is given below to guide you in the right direction, however you will need to fill in the blanks.___ <- evals %>%
rowwise() %>%
___(bty_avg = mean( c( ___ ) )) %>%
ungroup()
Note that we end the pipeline with ungroup()
to remove the effect of the rowwise
function from earlier in the pipeline. The rowwise
function works a lot like group_by
, except it groups the data frame one row at a time so that any operations applied to the data frame is done once per each row. This is helpful for finding the mean beauty score for each row. However in the remainder of the analysis we don’t want to, say, calculate summary statistics for each row, or fit a model for each row. Hence we need to undo the effect of rowwise
, which we can do with ungroup
.
Visualize the distribution of score
. Is the distribution skewed? What does that tell you about how students rate courses? Is this what you expected to see? Why, or why not? Include any summary statistics and visualizations you use in your response.
Visualize and describe the relationship between score
and the new variable you created, bty_avg
.
Hint: See the help page for the function at http://ggplot2.tidyverse.org/reference/index.html.
geom_jitter()
? What does “jitter” mean? What was misleading about the initial scatterplot?Linear model is in the form \(\hat{y} = b_0 + b_1 x\).
Let’s see if the apparent trend in the plot is something more than natural variation. Fit a linear model called m_bty
to predict average professor evaluation score
by average beauty rating (bty_avg
). Based on the regression output, write the linear model.
Replot your visualization from Exercise 3, and add the regression line to this plot in orange color. Turn off the shading for the uncertainty of the line.
Interpret the slope of the linear model in context of the data.
Interpret the intercept of the linear model in context of the data. Comment on whether or not the intercept makes sense in this context.
Determine the \(R^2\) of the model and interpret it in context of the data.
Fit a new linear model called m_gen
to predict average professor evaluation score
based on gender
of the professor. Based on the regression output, write the linear model and interpret the slope and intercept in context of the data.
What is the equation of the line corresponding to male professors? What is it for female professors?
Fit a new linear model called m_rank
to predict average professor evaluation score
based on rank
of the professor. Based on the regression output, write the linear model and interpret the slopes and intercept in context of the data.
See the course slides on using the forcats package for changing the order of levels.
Create a new variable called rank_relevel
where "tenure track"
is the baseline level.
Fit a new linear model called m_rank_relevel
to predict average professor evaluation score
based on rank_relevel
of the professor. This is the new (releveled) variable you created in Exercise 13. Based on the regression output, write the linear model and interpret the slopes and intercept in context of the data. Also determine and interpret the \(R^2\) of the model.
Create another new variable called tenure_eligible
that labels "teaching"
faculty as "no"
and labels "tenure track"
and "tenured"
faculty as "yes"
.
Fit a new linear model called m_tenure_eligible
to predict average professor evaluation score
based on tenure_eligible
ness of the professor. This is the new (regrouped) variable you created in Exercise 15. Based on the regression output, write the linear model and interpret the slopes and intercept in context of the data. Also determine and interpret the \(R^2\) of the model.