Setup

library(pacman); p_load(ggplot2, DT)

data$SES <- factor(data$SES, levels = c("Below $20k", "$20k - $40k", "$40k - $60k", "$60k - $80k", "$80k - $100k", "$100k - $120k", "$120k - $140k", "$140k - $160k", "$160k - $200k", "Above $200k"))

datatable(data, extensions = c("Buttons", "FixedColumns"), options = list(dom = 'Bfrtip', buttons = c('copy', 'csv', 'print'), scrollX = T, fixedColumns = list(leftColumns = 3))) 

Rationale

College Board data from 2011 is often cited in support of the claim of limited relevance of income to racial/ethnic gaps in SAT scores in the U.S. It would be much clearer if it were graphed differently. The original plot can be found here: https://resources.corwin.com/sites/default/files/singleton_2e_figure_3.2.pdf. I have plotted it again below, in a way that I believe facilitates comparisons.

The Chart

ggplot(data, aes(x = SES, y = Score, group = Race, color = Race)) + 
  geom_line(size = 2) + 
  geom_point(size = 2) + 
  xlab("") + ylab("Three-Part SAT Composite Score") + 
  ggtitle("2011 Average SAT Scores by Parental Income and Race/Ethnicity") + 
  scale_color_brewer(palette = "Paired") + theme_bw() + 
  theme(plot.title = element_text(hjust = .5), legend.position = c(.075, .87), legend.background = element_blank())

And again without “All” and the ambiguous category “Other Ethnic”.

ggplot(data, aes(x = SES, y = Score, group = Race, color = Race)) + 
  geom_line(size = 2) + 
  geom_point(size = 2) + 
  xlab("") + ylab("Three-Part SAT Composite Score") + 
  ggtitle("2011 Average SAT Scores by Parental Income and Race/Ethnicity (Pruned)") + 
  scale_color_brewer(palette = "Paired") + theme_bw() + 
  theme(plot.title = element_text(hjust = .5), legend.position = c(.075, .9), legend.background = element_blank())

I only wish I had CIs.

Other Years

First, 1995. This was leaked by La Griffe Du Lion in 2001, here: http://www.lagriffedulion.f2s.com/testing.htm

datatable(data95, extensions = c("Buttons", "FixedColumns"), options = list(dom = 'Bfrtip', buttons = c('copy', 'csv', 'print'), scrollX = T, fixedColumns = list(leftColumns = 3))) 
ggplot(data95, aes(x = SES, y = Total, group = Race, color = Race)) + 
  geom_line(size = 2) + 
  geom_point(size = 2) + 
  xlab("") + ylab("Two-Part SAT Composite Score") + 
  ggtitle("1995 Average SAT Scores by Parental Income and Race/Ethnicity") + 
  scale_color_brewer(palette = "Paired") + theme_bw() + 
  theme(plot.title = element_text(hjust = .5), legend.position = c(.075, .9), legend.background = element_blank())

Next, 2003. This was published in Dixon-Roman, Everson & Mcardle (2013).

datatable(data03, extensions = c("Buttons", "FixedColumns"), options = list(dom = 'Bfrtip', buttons = c('copy', 'csv', 'print'), scrollX = T, fixedColumns = list(leftColumns = 3))) 
ggplot(data03, aes(x = SES, y = Total, group = Race, color = Race)) + 
  geom_line(size = 2) + 
  geom_point(size = 2) + 
  xlab("") + ylab("Two-Part SAT Composite Score") + 
  ggtitle("2003 Average SAT Scores by Parental Income and Race/Ethnicity") + 
  scale_color_brewer(palette = "Paired") + theme_bw() + 
  theme(plot.title = element_text(hjust = .5), legend.position = c(.075, .9), legend.background = element_blank())

Finally, 2008. This was leaked by the Journal of Blacks in Higher Education, here: https://www.jbhe.com/latest/news/1-22-09/satgap.html.

datatable(data08, extensions = c("Buttons", "FixedColumns"), options = list(dom = 'Bfrtip', buttons = c('copy', 'csv', 'print'), scrollX = T, fixedColumns = list(leftColumns = 3))) 
ggplot(data08, aes(x = SES, y = Score, group = Race, color = Race)) + 
  geom_line(size = 2) + 
  geom_point(size = 2) + 
  xlab("") + ylab("Two-Part SAT Composite Score") + 
  ggtitle("2008 Average SAT Scores by Parental Income and Race/Ethnicity") + 
  scale_color_brewer(palette = "Paired") + theme_bw() + 
  theme(plot.title = element_text(hjust = .5), legend.position = c(.075, .9), legend.background = element_blank())