library(tidyverse)  # basic data handling and plotting
library(ggthemes)   # used to give additional styling options for graphs
library(plyr)       # some data handling commands not included in tidyverse that I find useful
library(kableExtra) # used for creating beautiful and interactive table objects
library(magrittr)   # used for additional "pipes" for writing more complex code
library(here)       # used for simple file indexing
library(ggrepel)    # a graphing utility for scatterplots
library(tippy)      # used for embedding tooltips in R Markdown
library(janitor)    # for some extra data handling commands
library(ggpubr)     # for making grid arrangements of tables with figures
library(gridExtra)  # for turning tables into grobs for the above

theme_alan <- function(base_size = 12 , base_family = "")
{
  half_line <- base_size/2
  colors <- ggthemes_data$few
  gray <- colors$medium["gray"]
  black <- colors$dark["black"]
  
  theme(
    line = element_line(colour = "black", size = 0.5, linetype = 1, lineend = "butt"),
    rect = element_rect(fill = "white", 
                        colour = "black", size = 0.5, linetype = 1),
    text = element_text(family = base_family, face = "plain", colour = "black", 
                        size = base_size, lineheight = 0.9, hjust = 0.5, vjust = 0.5,
                        angle = 0, margin = margin(), debug = FALSE),
    
    axis.line = element_blank(),
    axis.line.x = NULL,
    axis.line.y = NULL, 
    axis.text = element_text(size = rel(0.8), colour = "grey30"),
    axis.text.x = element_text(margin = margin(t = 0.8 * half_line/2), vjust = 1),
    axis.text.x.top = element_text(margin = margin(b = 0.8 * half_line/2), vjust = 0),
    axis.text.y = element_text(margin = margin(r = 0.8 * half_line/2), hjust = 1),
    axis.text.y.right = element_text(margin = margin(l = 0.8 * half_line/2), hjust = 0), 
    axis.ticks = element_line(colour = "grey20"), 
    axis.ticks.length = unit(half_line/2, "pt"),
    axis.title.x = element_text(margin = margin(t = half_line), vjust = 1),
    axis.title.x.top = element_text(margin = margin(b = half_line), vjust = 0),
    axis.title.y = element_text(angle = 90, margin = margin(r = half_line), vjust = 1),
    axis.title.y.right = element_text(angle = -90, margin = margin(l = half_line), vjust = 0),
    
    legend.background = element_rect(colour = NA),
    legend.spacing = unit(0.4, "cm"), 
    legend.spacing.x = NULL, 
    legend.spacing.y = NULL,
    legend.margin = margin(0.2, 0.2, 0.2, 0.2, "cm"),
    legend.key = element_rect(fill = "white", colour = NA), 
    legend.key.size = unit(1.2, "lines"), 
    legend.key.height = NULL,
    legend.key.width = NULL,
    legend.text = element_text(size = rel(0.8)), 
    legend.text.align = NULL,
    legend.title = element_text(hjust = 0),
    legend.title.align = NULL,
    legend.position = "right", 
    legend.direction = NULL,
    legend.justification = "center", 
    legend.box = NULL,
    legend.box.margin = margin(0, 0, 0, 0, "cm"),
    legend.box.background = element_blank(),
    legend.box.spacing = unit(0.4, "cm"),
    
    panel.background = element_rect(fill = "white", colour = NA),
    panel.border = element_rect(fill = NA, colour = "grey20"),
    panel.grid.major = element_line(colour = "grey92"),
    panel.grid.minor = element_line(colour = "grey92", size = 0.25),
    panel.spacing = unit(half_line, "pt"),
    panel.spacing.x = NULL,
    panel.spacing.y = NULL,
    panel.ontop = FALSE,
    
    strip.background = element_rect(fill = "NA", colour = "NA"),
    strip.text = element_text(colour = "grey10", size = rel(0.8)),
    strip.text.x = element_text(margin = margin(t = half_line, b = half_line)),
    strip.text.y = element_text(angle = 0, margin = margin(l = half_line, r = half_line)),
    strip.placement = "inside",
    strip.placement.x = NULL, 
    strip.placement.y = NULL,
    strip.switch.pad.grid = unit(0.1, "cm"), 
    strip.switch.pad.wrap = unit(0.1, "cm"), 
    
    plot.background = element_rect(colour = "white"),
    plot.title = element_text(size = rel(1.2), hjust = 0, vjust = 1, margin = margin(b = half_line * 1.2)),
    plot.subtitle = element_text(size = rel(0.9), hjust = 0, vjust = 1, margin = margin(b = half_line * 0.9)),
    plot.caption = element_text(size = rel(0.9), hjust = 1, vjust = 1, margin = margin(t = half_line * 0.9)), 
    plot.margin = margin(half_line, half_line, half_line, half_line),
    
    complete = TRUE)
}

# Wrapper Function for Long Graph Titles
wrapper <- function(x, ...) 
{
  paste(strwrap(x, ...), collapse = "\n")
}

#RDFZ Reds
RDFZReds <- c("#cf8f8d", "#ae002b", "#991815", "#78011e", "#4b0315")

#Grade Colors
GradeColors <- c("#8900df", "#0092df", "#00df76", "#94df00", "#BA9900", "#DF7800", "#C85500", "#B23200", "#9b0f00")

#Grade Fill Scale
scale_fill_lettergrades <- function(...){
  ggplot2:::manual_scale(
    "fill",
    values = setNames(GradeColors, c("A*", "A", "B", "C", "D", "E", "F", "G", "U")),
    ...
  )
}

pd <- position_dodge(width = 0.8)       #My standard dodging for graphs

#function for allowing inline code chunks to be shown verbatim
rinline <- function(code){
  html <- '<code  class="r">``` `r CODE` ```</code>'
  sub("CODE", code, html)
}
#FILL THIS IN WHEN SETTING UP THE SHEET - IT WILL HELP WITH NAMING THE TABLES AND IMAGES THAT ARE OUTPUT, SAVING YOU TIME

Class <- "A2 Psychology"            #Name of the Class Goes Here
Eval <- "Quiz 2 "       #Name of what is being evaluated goes here
A2 Psychology- By Class Performance
Teacher Average Grade
Alan 69.5
June 77.8

Basics of AS Psychology Quiz 2

The AS Psychology Quiz 2 consisted of 6 questions covering Schizophrenia and Mood Disorders, worth a total of 30 points. The questions and their point values can be seen in the table below:

##KNITTED TABLE OF QUESTIONS AND POINT VALUES
QTitle <- paste(Class, Eval, "Questions and Values", sep = " - ")

QT1 <- 
  Paper1 %>%
    head(length(unique(Paper1$Question))) %>%
    subset(select = c(Qnum, Question, Value)) %>%
    setNames(c("Number", "Question", "Value"))
    
QuestionsTableP1 <-
  QT1 %>%
    knitr::kable(caption = QTitle, row.names = F) %>%
    row_spec(0, bold = T, color = "white", background = RDFZReds[3])%>%
    kable_styling(full_width = FALSE, 
                  bootstrap_options = c("striped", "hover", "condensed"),
                  fixed_thead = TRUE) 

save_kable(QuestionsTableP1, paste(QTitle, ".png", sep = ""))

QuestionsTableP1
A2 Psychology - Quiz 2 - Questions and Values
Number Question Value
1 Explain what is meant by “randomised controlled trial” 2
2 Compare the cognitive explanation of schizophrenia with one other explanation of schizophrenia 6
3 Explain what is meant by “unipolar depression” 2
4 Describe two drug treatments for depression 4
5 Describe the Beck Depression Inventory 4
6 Medical techniques, such as drugs, can treat all patients with depression effectively. To what extent do you agree with this statement? Use examples of research you have studied to support your answer. 12

Overall Performance

#Single Histogram

OverallTitle <- paste(Class, Eval, "Histogram of Grades", sep = " - ")

ggplot(data=Paper1Totals, aes(x=Grade)) +
  geom_histogram(aes(y=..density..), alpha = 1, position = "identity", fill = RDFZReds[2]) +
  labs(x="Grade (Percentage)", y="Density") +
  stat_function(fun=dnorm, args = list(mean=mean(Paper1Totals$Grade), sd=sd(Paper1Totals$Grade)), 
                color=RDFZReds[4], size   = 1.4) +
  scale_x_continuous(limits = c(0,100)) + 
  theme_alan() +
  theme(legend.position = "none") +
  ggtitle(wrapper(OverallTitle, width = 45))

ggsave(here(paste(OverallTitle, ".png", sep = "")), plot = last_plot(), device = NULL, path = NULL,
       width = 10, height = 6, units = c("in"),
       dpi = 600)

Overall performance can be seen in the graph above. We had a fairly normal distribution of grades (Shapiro-Wilk Normality test: W= 0.94, p= 0.173) with a mean score of 73.5% (Median = 73.3%) and a standard deviation of 15.8%.

The high score on the test was 29 out of 30 marks (96.7%), which was achieved by 2 student(s).

The low score on the test was 11 out of 30 marks (36.7%), which was achieved by 1 student(s).

Letter Grades (Raw)

Typical raw letter grade boundaries for the school can be seen in the table below:

#Note that this already includes rounding up any grade above 0.5 to the next letter grade (e.g. 79.5% = A)
Letters <- c("A*", "A", "B", "C", "D", "E", "U")
MinVal <- c(89.5, 79.5, 69.5, 59.5, 49.5, 39.5, 0)
MaxVal <- c (100, 89.49, 79.49, 69.49, 59.49, 49.49, 39.49)

LetterBoundaries <- 
  cbind.data.frame(Letters, MinVal, MaxVal) %>%
    setNames(c("Letter", "Bottom", "Top"))

LetterGradesTable <-
  LetterBoundaries  %>%
    setNames(c("Letter Grade", "Bottom Boundary", "Top Boundary")) %>%
    knitr::kable(caption = "RDFZ Letter Grade Boundaries", row.names = F) %>%
    row_spec(0, bold = T, color = "white", background = RDFZReds[3])%>%
    kable_styling(full_width = FALSE, 
                  bootstrap_options = c("striped", "hover", "condensed"),
                  fixed_thead = TRUE) %>%
    footnote(general = "Note this includes rounding of grades like 79.5% up a grade boundary" )

LetterGradesTable
RDFZ Letter Grade Boundaries
Letter Grade Bottom Boundary Top Boundary
A* 89.5 100.00
A 79.5 89.49
B 69.5 79.49
C 59.5 69.49
D 49.5 59.49
E 39.5 49.49
U 0.0 39.49
Note:
Note this includes rounding of grades like 79.5% up a grade boundary

If we assign grade boundaries based on these we can see the following distribution of grades

GB1Title <- paste(Class, Eval, "Paper 1", "Letter Grades (Raw)", sep = " - ")
  
  
Paper1Totals %<>%
  mutate(Letter = cut(x= Paper1Totals$Grade, 
                      breaks = c(LetterBoundaries$Bottom,100), 
                      labels= map_df(LetterBoundaries,rev)$Letter)) %>%
  mutate(Letter = factor(Letter, levels =c("U", "E", "D", "C", "B", "A", "A*")))
    

ggplot(data=Paper1Totals, aes(x=Letter, fill = Letter)) +
  geom_bar(stat = "count", position = pd, width = 0.8) +
  scale_x_discrete(drop = FALSE) +
    scale_fill_lettergrades() +  
  labs(x="Letter Grade", y="Count") +
  theme_alan() +
  ggtitle(wrapper(GB1Title, width = 45))

ggsave(here(paste(GB1Title, ".png", sep = "")), plot = last_plot(), device = NULL, path = NULL,
       width = 8, height = 6, units = c("in"),
       dpi = 600)


LetterCounts <- count(Paper1Totals$Letter)

LetterBoundaries2 <-
  LetterBoundaries  %>%
    mutate(Count = plyr::mapvalues(Letter, from = LetterCounts$x, to = LetterCounts$freq))  %>%
    mutate(Count = as.numeric(Count))  %>%
    mutate(Count = replace_na(Count, 0))

This is actually a pretty good distribution of Grade Boundaries, suggesting that performance on this assessment was at a pretty high level: A total of 10 students earned an A or A-star, with only 3 students earning an E or a U on the exam. The total counts of students in each grade category can be seen in the table below

LetterBoundaries2  %>%
    setNames(c("Letter Grade", "Bottom Boundary", "Top Boundary", "Count")) %>%
    knitr::kable(caption = "RDFZ Letter Grade Boundaries", row.names = F) %>%
    row_spec(0, bold = T, color = "white", background = RDFZReds[3])%>%
    kable_styling(full_width = FALSE, 
                  bootstrap_options = c("striped", "hover", "condensed"),
                  fixed_thead = TRUE) 
RDFZ Letter Grade Boundaries
Letter Grade Bottom Boundary Top Boundary Count
A* 89.5 100.00 5
A 79.5 89.49 5
B 69.5 79.49 7
C 59.5 69.49 4
D 49.5 59.49 1
E 39.5 49.49 2
U 0.0 39.49 1

Between Class Performance

How do the two classes for A2 Psychology compare to one another on Quiz 2 - Paper 1?

Below, you can see a histogram of performance between the two classes.

BetweenTitle <- paste(Class, Eval, "Paper 1", "Histogram of Grades by Class", sep = " - ")

#Histograms by Class
JuneP1Grades <- subset(Paper1Totals, Teacher == "June")
AlanP1Grades <- subset(Paper1Totals, Teacher == "Alan")

ggplot(data=Paper1Totals, aes(x=Grade, fill = Teacher)) +
  geom_histogram(aes(y=..density..), alpha = 0.75, position = "identity") +
  labs(x="Grade (Percentage)", y="Density") +
  stat_function(fun=dnorm, args = list(mean=mean(JuneP1Grades$Grade), sd=sd(JuneP1Grades$Grade)), color=RDFZReds[1], size = 1.2) +
  stat_function(fun=dnorm, args = list(mean=mean(AlanP1Grades$Grade), sd=sd(AlanP1Grades$Grade)), color=RDFZReds[4], size = 1.2) +
  scale_fill_manual(values= c(RDFZReds[4], RDFZReds[1])) +
  scale_x_continuous(limits = c(0,100)) +
  theme_alan() +
  ggtitle(wrapper(BetweenTitle, width = 45))

ggsave(here(paste(BetweenTitle, ".png", sep = "")), plot = last_plot(), device = NULL, path = NULL,
       width = 10, height = 4, units = c("in"),
       dpi = 600)

testcompP1 <- t.test(JuneP1Grades$Grade, AlanP1Grades$Grade, warning = FALSE, message = FALSE)

Alan’s A2 Psychology class averaged a grade of 69.5% (sd = 15.3%), while June’s class averaged a grade of 77.8% (sd = 15.8%). This difference is not significant: t(22.7) = 1.33, p= 0.2.

Grade Correction

We didn’t do any grade correction or curving for this test.

Tables

Tables for Engage

# Alan
AlanTitle <- paste(Class, Eval, "Final Grades - Alan", sep = " - ")

AlanTable <- 
  Paper1Totals %>%
    subset(Teacher == "Alan") %>%
    subset(select = -Teacher) %>%
    arrange(-Grade) %>%
    knitr::kable(caption = AlanTitle, row.names = F) %>%
    row_spec(0, bold = T, color = "white", background = RDFZReds[3])%>%
    kable_styling(full_width = FALSE, 
                  bootstrap_options = c("striped", "hover", "condensed"),
                  fixed_thead = TRUE) 

save_kable(AlanTable, paste(AlanTitle, ".png", sep = ""))

# June
JuneTitle <- paste(Class, Eval, "Final Grades - June", sep = " - ")

JuneTable <- 
  Paper1Totals %>%
    subset(Teacher == "June") %>%
    subset(select = -Teacher) %>%
    arrange(Grade) %>%
    knitr::kable(caption = JuneTitle, row.names = F) %>%
    row_spec(0, bold = T, color = "white", background = RDFZReds[3])%>%
    kable_styling(full_width = FALSE, 
                  bootstrap_options = c("striped", "hover", "condensed"),
                  fixed_thead = TRUE) 

save_kable(JuneTable, paste(JuneTitle, ".png", sep = ""))

Anonymised Tables

# Alan
AnonTitle <- paste(Class, Eval, "Final Grades - Anonymised", sep = " - ")

AnonTable <- 
  Paper1Totals %>%
    subset(select = -c(Student, Teacher)) %>%
    arrange(-Grade) %>%
    knitr::kable(caption = AnonTitle, row.names = F) %>%
    row_spec(0, bold = T, color = "white", background = RDFZReds[3])%>%
    kable_styling(full_width = FALSE, 
                  bootstrap_options = c("striped", "hover", "condensed"),
                  fixed_thead = TRUE) 

save_kable(AnonTable, paste(AnonTitle, ".png", sep = ""))

AnonTable
A2 Psychology - Quiz 2 - Final Grades - Anonymised
Anon sum Grade Letter
J12 29 96.7 A*
A9 29 96.7 A*
J6 28 93.3 A*
J2 27 90.0 A*
J3 27 90.0 A*
J4 26 86.7 A
A10 26 86.7 A
A2 24 80.0 A
J1 24 80.0 A
J8 24 80.0 A
J11 23 76.7 B
A8 22 73.3 B
A3 22 73.3 B
A6 22 73.3 B
A11 21 70.0 B
J10 21 70.0 B
J5 21 70.0 B
A4 20 66.7 C
A1 20 66.7 C
A7 20 66.7 C
A12 20 66.7 C
J7 17 56.7 D
A13 14 46.7 E
J9 13 43.3 E
A5 11 36.7 U

By-Question Analysis and Comments

In the sections below, we analyse the A2 Psychology - Quiz 2 responses on a question by question basis. For each question, we:
* Show the distribution of student grades obtained
* Show the Cambridge Mark Scheme for the question
* Discuss any general comments on student responses, including where students typically went wrong
* Provide an exemplar response provided by the Teacher (you should note that this exemplar response will be at a much higher level than you would be expected to provide in either AS or A2 Psychology)

Paper 1

Question 1-

QNumber <- "1"

FocalData <- 
  Paper1 %>%
    subset(Qnum == QNumber) %>%
    mutate(GradeF = factor(Grade, levels = c(0:Value[1])))
    
FocalTitle <- paste(Class, Eval, "Paper 1 - ", sep = " - ")
FocalSubTitle <- paste("Question ", QNumber, " - ", FocalData$Question[1], " [", FocalData$Value[1], " marks]", sep = "")

ggplot(data=FocalData, aes(x=GradeF)) +
  geom_bar(stat = "count", position = pd, width = 0.8, aes(fill = Teacher)) +
  scale_fill_manual(values= c(RDFZReds[4], RDFZReds[1])) +
  scale_x_discrete(drop = FALSE) +
  labs(x="Question Score", y="Count") +
  theme_alan() +
  ggtitle(wrapper(FocalTitle, width = 50), 
          subtitle = wrapper(FocalSubTitle, width = 100))

Comments

One of few questions with a clear split between the classes. Obviously Dr. Alan didn’t do a good enough job explaining this to his students.

Exemplar Response (Teacher)

A randomised controlled trial is a type of experiment in which participants are randomly allocated to conditions including one or more treatment conditions and at least one control group. In the best case, this control group is either a placebo group or a no treatment condition. Randomized controlled trials exist because they make the relationship between the IV and DV more clear - the inclusion of a control group gives a sensible baseline to compare the treatment group(s) to, and the inclusion of random allocation means that our groups are less likely to be biased one way or another.

Question 2-

QNumber <- "2"

FocalData <- 
  Paper1 %>%
    subset(Qnum == QNumber) %>%
    mutate(GradeF = factor(Grade, levels = c(0:Value[1])))
    
FocalTitle <- paste(Class, Eval, "Paper 1 - ", sep = " - ")
FocalSubTitle <- paste("Question ", QNumber, " - ", FocalData$Question[1], " [", FocalData$Value[1], " marks]", sep = "")

ggplot(data=FocalData, aes(x=GradeF)) +
  geom_bar(stat = "count", position = pd, width = 0.8, aes(fill = Teacher)) +
  scale_fill_manual(values= c(RDFZReds[4], RDFZReds[1])) +
  scale_x_discrete(drop = FALSE) +
  labs(x="Question Score", y="Count") +
  theme_alan() +
  ggtitle(wrapper(FocalTitle, width = 50), 
          subtitle = wrapper(FocalSubTitle, width = 100))

Comments

Compare! This question does not ask you to simply describe two explanations. Also note that the question is about explanations, not about treatments.

You should generally tackle these questions by providing a one sentence description of each, then two comparison points - usually one similarity and one difference is good enough.

Exemplar Response

The cognitive explanation of schizophrenia suggests that schizophrenia is caused by faulty cognition - specifically errors in self-monitoring that make it unclear to sufferers where there “inner voice” is coming from, which leads to delusions. The biochemical explanation, on the other hand, suggests that schizophrenia is caused by having too much of the neurotransmitter dopamine, which can produce many of the observed symptoms.

One similarity between the two explanations is that they are both have convergent evidence supporting them. The cognitive explanation is supported by evidence from studies exploring the ability of schizophrenics to recognize their own voice, and also by lower overall performance on theory of mind tasks by schizophrenics. The biochemical explanation is supported by convergent evidence that patients given synthetic dopamine often experience hallucinations and other schizophrenia-like symptoms.

On difference between the two is that the biochemical explanation is more reductionist than the cognitive one. It suggests that the cause of schizophrenia can be boiled down to the overabundance of a single neurotransmitter, whereas the cognitive explanation allows a role not only for biological differences but also for the influence of cognition on behavior.

Question 3-

QNumber <- "3"

FocalData <- 
  Paper1 %>%
    subset(Qnum == QNumber) %>%
    mutate(GradeF = factor(Grade, levels = c(0:Value[1])))
    
FocalTitle <- paste(Class, Eval, "Paper 1 - ", sep = " - ")
FocalSubTitle <- paste("Question ", QNumber, " - ", FocalData$Question[1], " [", FocalData$Value[1], " marks]", sep = "")

ggplot(data=FocalData, aes(x=GradeF)) +
  geom_bar(stat = "count", position = pd, width = 0.8, aes(fill = Teacher)) +
  scale_fill_manual(values= c(RDFZReds[4], RDFZReds[1])) +
  scale_x_discrete(drop = FALSE) +
  labs(x="Question Score", y="Count") +
  theme_alan() +
  ggtitle(wrapper(FocalTitle, width = 50), 
          subtitle = wrapper(FocalSubTitle, width = 100))

#### Comments Good overall, but make sure not to leave marks on the table by giving insufficient explanations.

Exemplar Response

Unipolar depression is also known as clinical depression or major depressive disorder, and is a mood disorder characterised by extended periods of sadness, despair, or hopelessness. Unipolar depression shares many symptoms like disruption of sleep, weight gain, and loss of decision-making ability with bipolar depression, but can be differentiated because it is not accompanied by temporary elevations of mood into manic or hypomanic territory.

Question 4-

QNumber <- "4"

FocalData <- 
  Paper1 %>%
    subset(Qnum == QNumber) %>%
    mutate(GradeF = factor(Grade, levels = c(0:Value[1])))
    
FocalTitle <- paste(Class, Eval, "Paper 1 - ", sep = " - ")
FocalSubTitle <- paste("Question ", QNumber, " - ", FocalData$Question[1], " [", FocalData$Value[1], " marks]", sep = "")

ggplot(data=FocalData, aes(x=GradeF)) +
  geom_bar(stat = "count", position = pd, width = 0.8, aes(fill = Teacher)) +
  scale_fill_manual(values= c(RDFZReds[4], RDFZReds[1])) +
  scale_x_discrete(drop = FALSE) +
  labs(x="Question Score", y="Count") +
  theme_alan() +
  ggtitle(wrapper(FocalTitle, width = 50), 
          subtitle = wrapper(FocalSubTitle, width = 100))

#### Comments When asked to describe a drug treatment, you should say in basic terms how the drug works.

Exemplar Response

There are two main classes of drugs prescribed for the treatment of depression. The first of these are Monoamine Oxidase Inhibitors, which stop monoamine neurotransmitters like serotonin, dopamine, and norepinephrine from being broken down in the synaptic cleft, and thus lead to overall higher circulating levels of these neurotransmitters. One problem with MAOIs is that because they act so broadly in the body, they have many side effects. Selective Serotonin Reuptake Inhibitors (SSRIs) act in a more targeted way, increasing the levels of Serotonin in the brain by blocking serotonin transporters from reabsorbing serotonin into the presnaptic neuron. In this way both drug treatments increase the available level of serotonin, which helps to treat depression.

Question 5-

QNumber <- "5"

FocalData <- 
  Paper1 %>%
    subset(Qnum == QNumber) %>%
    mutate(GradeF = factor(Grade, levels = c(0:Value[1])))
    
FocalTitle <- paste(Class, Eval, "Paper 1 - ", sep = " - ")
FocalSubTitle <- paste("Question ", QNumber, " - ", FocalData$Question[1], " [", FocalData$Value[1], " marks]", sep = "")

ggplot(data=FocalData, aes(x=GradeF)) +
  geom_bar(stat = "count", position = pd, width = 0.8, aes(fill = Teacher)) +
  scale_fill_manual(values= c(RDFZReds[4], RDFZReds[1])) +
  scale_x_discrete(drop = FALSE) +
  labs(x="Question Score", y="Count") +
  theme_alan() +
  ggtitle(wrapper(FocalTitle, width = 50), 
          subtitle = wrapper(FocalSubTitle, width = 100))

#### Comments Overall good. Easier to make sure you score points by describing the measure itself rather than its history or other features.

Exemplar Response

The Beck Depression inventory is a psychometric test using self-report to assess the frequency and severity of depressive symptoms. It consists of a total of 21 questions, each of which is answered via a rating scale from 0 (no symptoms at all) to 3 (severe symptoms). The overall BDI score is derived by summing the scores of all individual questions - thus BDI scores range from 0 to 63. A patient is considered to have moderate depression if their BDI score is greater than 20, although consultation with a psychiatrist is required for a formal diagnosis. The BDI has high concurrent validity with other psychometric tests like the Hamilton Depression Rating Scale.

Question 6-

QNumber <- "6"

FocalData <- 
  Paper1 %>%
    subset(Qnum == QNumber) %>%
    mutate(GradeF = factor(Grade, levels = c(0:Value[1])))
    
FocalTitle <- paste(Class, Eval, "Paper 1 - ", sep = " - ")
FocalSubTitle <- paste("Question ", QNumber, " - ", FocalData$Question[1], " [", FocalData$Value[1], " marks]", sep = "")

ggplot(data=FocalData, aes(x=GradeF)) +
  geom_bar(stat = "count", position = pd, width = 0.8, aes(fill = Teacher)) +
  scale_fill_manual(values= c(RDFZReds[4], RDFZReds[1])) +
  scale_x_discrete(drop = FALSE) +
  labs(x="Question Score", y="Count") +
  theme_alan() +
  ggtitle(wrapper(FocalTitle, width = 50), 
          subtitle = wrapper(FocalSubTitle, width = 100))

#### Comments

I was pretty charitable with grading here- i.e. those of you who scored 10 or more can probably not expect to receive such high scores from Cambridge on your actual exams. We will work on these questions throughout the year to ensure that you can answer them better, but a few general hints are below:

This is a 12 point question, so you should have an introduction and a conclusion. Start by recapitulating the question and giving me a thesis statement - tell me what your conclusion will be in advance.

You need to “use examples from the research you have studied”. If you don’t use examples you won’t get a very strong mark from Cambridge. Ideally you should be explicitly referencing studies by name - and if you can remember the exact numbers from those studies, that’s even better.

Each paragraph should have a point and begin with a topic sentence. Don’t let your paragraph meander - i.e. don’t start by saying the paragraph is evidence for AGREEING and then end your paragraph not agreeing with the question.

This is an essay, so it should be coherent and linked throughout, rather than just a collection of paragraphs.

The strategy I’d generally take to write a good response here is to really pay attention to the wording of the statement

For example this statement says treat ALL patients

That’s a good place to start - because we have no data that suggests that it works on everything - so start there by citing literally any of the papers and pointing out that at best half of people experience improvement - certainly not ALL patients

I’d then tackle the word “effectively” - what does effectively mean? In some papers like the suicidal ideation one we see a statistical effect, but is it “effective”? Does reducing the time to suicidal ideation really do what we want an antidepressant to do?

From here you can get into things not directly in the statement - the effectiveness of alternative treatments etc.

If you have any questions or comments about student performance in the class, please don’t hesitate to get in touch via email to Alan Nielsen or June Zhu.

This report was generated using R Markdown.