Federal judges and the Ivy League

Application exercise
Modified

February 15, 2024

Important

These are suggested answers. This document should be used as reference only, it’s not designed to be an exhaustive key.

library(tidyverse)
library(scales)
library(skimr)

Article III judges

The Federal Judicial Center maintains detailed biographical data on all Article III judges in the United States.1 This data is organized in a relational structure, with tables organized by:

  • Demographics: Basic biographical information on each judge
  • Federal judicial service: Information on each judge’s service in the federal judiciary
  • Other federal service: Information on each judge’s service in other federal judicial offices
  • Education: Information on each judge’s education
  • Professional career: Information on each judge’s professional career
  • Other nominations/recess appointments: Information on individual’s other nominations2 and recess appointments3

Data

The data is available in fjc-judges.RData. .RData files are binary files that store one or more R objects. We can load the data using the load function.

load("data/fjc-judges.RData")

Relational structure

The data is organized in a relational structure. This means that the data is organized in multiple tables, and the tables are linked by common identifiers. For example, the demographics table contains basic biographical information on each judge, and the education table contains information on each judge’s education. The two tables are linked by the nid variable, which is a unique identifier for each judge.

Tip

Every table contains a nid column, which is a unique identifier for each judge. For some tables such as demographics, there is one row for each judge. In other tables judges may have multiple rows, such as education (where each row represents a degree earned by the judge) or service_fjs (where each row represents a single appointment to the judiciary, and some judges have been appointed to multiple positions). For tables where judges appear in multiple rows, the sequence column uniquely identifies each row for a given judge. For example, the first appointment to the judiciary for a judge will have sequence = 1, the second appointment will have sequence = 2, and so on. While they have the same name, these columns do not necessary represent the same variable across tables.

Ivy League influence

In recent decades, scholars and policymakers have expressed concern about the lack of diversity in political institutions such as the federal judiciary. One aspect of this concern is the overrepresentation of graduates from a small number of elite colleges and universities.4 5 6

The Ivy League is a group of eight private colleges and universities in the northeastern United States. The Ivy League is known for its academic excellence and social prestige, and include:

  • Brown University
  • Columbia University
  • Cornell University
  • Dartmouth College
  • Harvard University
  • University of Pennsylvania
  • Princeton University
  • Yale University

We will use this data to answer the question: What percentage of judges appointed to the federal judiciary attended an Ivy League school?

To clarify the scope of our analysis, we will focus on judges appointed to the federal judiciary since 1945 (the post-World War II era). Furthermore we will limit our analysis to judges appointed to the Courts of Appeals and the District Courts.7 And finally, we want to examine how this trend has evolved over time by examining the percentage of Ivy League graduates among judges appointed in each presidential administration. This will also allow us to consider the role of presidential partisanship. Are Democratic or Republican presidents more likely to make appointments from the Ivy League?

Joining the data

Your turn: First we need to identify the relevant tables for our analysis. Use the skimr::skim() function to examine the structure of the all the tables in the fjc-judges.RData file. Based on the output of the skim() function, identify the tables that contain the relevant information for our analysis, an appropriate *_join() function to combine them for our analysis, and the relevant key column(s).

skim(demographics)
skim(service_fjs)
skim(service_other)
skim(education)
skim(professional)
skim(other_appointments)
# add code here

Determine if a judge has an Ivy League degree

We will use the education table to determine if a judge earned a degree from an Ivy League institution. The school column contains the name of the school where the judge earned their degree. Unfortunately the names of the schools are not standardized, so we will need to use a list of Ivy League schools to identify which judges attended an Ivy League institution.

Your turn: We need to know for every judge whether or not at least one of their degrees (e.g. undergraduate, law, etc.) was earned at an Ivy League institution. Create a data frame with one-row-per-judge and a variable ivy_league that is TRUE if the judge earned a degree from an Ivy League institution and FALSE otherwise.

Tip

Unfortunately the names of schools in the database are not standardized, so we need to use a list of Ivy League schools to identify which judges attended an Ivy League institution. You can use this character vector to identify Ivy League schools:

ivy_league <- c(
  # Brown
  "Brown University", "Rhode Island College (now Brown University)",
  # Columbia
  "Columbia University", "Columbia Law School", "King's College (now Columbia University)",
  # Cornell
  "Cornell University", "Cornell Law School", "Cornell University Department of Law",
  # Dartmouth
  "Dartmouth College",
  # Harvard
  "Harvard Law School", "Harvard University", "Harvard University, Kennedy School of Government",
  "Harvard College",
  # UPenn
  "University of Pennsylvania", "University of Pennsylvania, Wharton School",
  "College of Philadelphia (now University of Pennsylvania)",
  "University of Pennsylvania Law School (now Carey Law School)",
  # Princeton
  "Princeton University", "College of New Jersey (now Princeton University)",
  "Princeton University, Woodrow Wilson School of Public and International Affairs (now Princeton School of Public and International Affairs)",
  # Yale
  "Yale University", "Yale College", "Yale Law School", "Yale School of Architecture",
  "Yale School of Organization and Management"
)
ivy_league <- c(
  # Brown
  "Brown University", "Rhode Island College (now Brown University)",
  # Columbia
  "Columbia University", "Columbia Law School", "King's College (now Columbia University)",
  # Cornell
  "Cornell University", "Cornell Law School", "Cornell University Department of Law",
  # Dartmouth
  "Dartmouth College",
  # Harvard
  "Harvard Law School", "Harvard University", "Harvard University, Kennedy School of Government",
  "Harvard College",
  # UPenn
  "University of Pennsylvania", "University of Pennsylvania, Wharton School",
  "College of Philadelphia (now University of Pennsylvania)",
  "University of Pennsylvania Law School (now Carey Law School)",
  # Princeton
  "Princeton University", "College of New Jersey (now Princeton University)",
  "Princeton University, Woodrow Wilson School of Public and International Affairs (now Princeton School of Public and International Affairs)",
  # Yale
  "Yale University", "Yale College", "Yale Law School", "Yale School of Architecture",
  "Yale School of Organization and Management"
)

# add code here

Combine with judicial appointments

Your turn: Combined the summarized education data with information on each appointment to the federal judiciary.

# add code here

Filter the data

Your turn: Filter the data to limit our analysis to judges appointed:

  • To the Courts of Appeals and the District Courts,
  • Since 1945, and
  • By a Democratic or Republican president8
# add code here

Calculate proportion of Ivy League appointments

Your turn: Calculate the proportion of judicial appointments that were Ivy League graduates, for each Courts of Appeals and District Courts, president, and presidential party.

# add code here

Visualize the data

Demo: Let’s generate an initial draft of our plot. Since we want to visualize proportions, a bar chart is a reasonable starting point.

... |>
  # standard bar plot
  ggplot(mapping = aes(
    x = appointing_president, y = prop_ivy_league,
    fill = party_of_appointing_president
  )) +
  geom_col() +
  # facet by court type, have the panels top and bottom
  facet_wrap(facets = vars(court_type), scales = "free_y", ncol = 1)

It’s a decent first step. Some things we need to improve still:

  • Reverse the axes to make it a horizontal bar chart. Ensures all presidential names are visible.
  • Logical ordering of the presidents. We should order them chronologically based on their terms in office.
  • Remove Franklin D. Roosevelt. He died in office in early 1945 and only made a couple of appointments that year, so we don’t really have enough data to justify including him on the chart.
  • Optimal color palette
  • Better labels
  • Move the legend to the top to provide more horizontal space for the plot
... |>
  ggplot(mapping = aes(
    x = prop_ivy_league, y = appointing_president,
    fill = party_of_appointing_president
  )) +
  geom_col() +
  scale_x_continuous(labels = label_percent()) + 
  scale_fill_viridis_d(end = 0.8) +
  facet_wrap(facets = vars(court_type), scales = "free_x", ncol = 2) +
  labs(
    x = NULL, 
    y = NULL, 
    title = "Democratic presidents are more likely to appoint federal judges\nwith Ivy League credentials", 
    subtitle = "Article III judges appointed since 1945 with an Ivy League degree", 
    fill = "Party of appointing president", 
    caption = "Source: Federal Judicial Service Database" 
  ) + 
  theme_minimal() + 
  theme(legend.position = "top") 

How does this answer our original question?

Add response here.

Footnotes

  1. Article III judges are federal judges appointed under the authority of Article III of the United States Constitution. They are appointed for life and possess significant independence from the other branches of government. They include justices of the Supreme Court, as well as judges on the Courts of Appeals, the District Courts, and several other specialized courts.↩︎

  2. Including failed nominations which were never confirmed by the U.S. Senate.↩︎

  3. Individuals appointed to the judiciary while the Senate was in recess - these appointments are temporary and expire at the end of the Senate’s next session.↩︎

  4. Harvard & Yale Still Dominate as Biden Focuses on Diversifying the Judiciary↩︎

  5. Supreme Court shouldn’t be covered in Ivy, 2 lawmakers say↩︎

  6. The New Diversity Crisis in the Federal Judiciary↩︎

  7. While the Supreme Court is the most influential court in the United States, it is also the smallest, with only nine justices at any given time. The Courts of Appeals and the District Courts are the workhorses of the federal judiciary, and are the primary focus of our analysis.↩︎

  8. Some appointments in the dataset were reassignments from one judicial seat to another, and are classified under the party_of_appointing_president as “None (reassignment)”.↩︎