Intro and TL;DR

This is some analysis of data on U.S. Supreme Court Justices, spanning 1937-2015. Source: Kaggle, via Abigail Larion. Original data from Supreme Court Database, with scores calculated by Andrew Martin (U Michigan) and Kevin Quinn (UC Berkeley)

Caveat: everything that follows is exploratory. It was lots of fun to do, but don’t take it too seriously.

This analysis is divided into four parts:

  1. Do Supreme Court trends change depending on which party is in office? Answer: no, they do not

  2. Where do judges fall on the liberal-conservative spectrum? Answer: pretty much all over the place!

  3. My partner is really into Ruth Bader Ginsburg. How does her historical trend look relative to other current justices? Answer: The Notorious RBG exhibited the greatest change in ideological position of any current court member, going from moderate to very liberal

  4. Can you divide all the justices into groups? Answer: Yes, I divide them into seven groups that span the ideological spectrum

Data Preprocessing

What does the dataset look like? I’ll also load packages that will be useful later

library(ggplot2)
library(plyr)
library(dplyr)
library(RColorBrewer)
library(lsr)
library(car)

library(ggthemes)
library(grid)

ideology <- read.csv("C:/Users/alan/Documents/R/Scripts and projects/Kaggle/Datasets/Supreme Court Ideology/scores.csv")

dim(ideology)
## [1] 719   8
str(ideology)
## 'data.frame':    719 obs. of  8 variables:
##  $ court_term        : int  1937 1937 1937 1937 1937 1937 1937 1937 1937 1937 ...
##  $ justice_code      : int  77 75 71 74 78 67 68 76 72 79 ...
##  $ justice_name      : Factor w/ 45 levels "Abe Fortas","Anthony Kennedy",..: 5 7 16 17 20 21 27 28 29 37 ...
##  $ posterior_mean    : num  -1.598 -0.371 1.574 -0.774 -2.904 ...
##  $ standard_deviation: num  0.635 0.234 0.547 0.259 0.333 0.54 0.274 0.228 0.43 0.345 ...
##  $ posterior_median  : num  -1.546 -0.367 1.541 -0.766 -2.903 ...
##  $ twosigma_left     : num  -2.957 -0.834 0.606 -1.293 -3.56 ...
##  $ twosigma_right    : num  -0.48 0.08 2.76 -0.282 -2.263 ...
head(ideology, n = 2)
##   court_term justice_code        justice_name posterior_mean standard_deviation posterior_median twosigma_left twosigma_right
## 1       1937           77 Benjamin N. Cardozo         -1.598              0.635           -1.546        -2.957          -0.48
## 2       1937           75 Charles Evan Hughes         -0.371              0.234           -0.367        -0.834           0.08
tail(ideology, n = 2)
##     court_term justice_code    justice_name posterior_mean standard_deviation posterior_median twosigma_left twosigma_right
## 718       2015          113 Sonia Sotomayor         -2.507              0.512           -2.492        -3.547         -1.557
## 719       2015          110  Stephen Breyer         -1.415              0.381           -1.401        -2.200         -0.716

The data are clean but incomplete for my purposes. First, I want to make a column indicating whether a given year corresponds to a Democratic or Republican presidency. My assumption is that a party is in power when a member of that party takes office and ends on the year when the other party wins office.

In other words: 2016 would be Democratic, 2017 would be Republican.

dem_years <- c(1937:1952,1961:1968, 1977:1980, 1993:2000, 2009:2015) #via Wikipedia

ideology$president <- ifelse(ideology$court_term %in% dem_years, ideology$president <- 0, ideology$president <- 1)

Next, I want to make a column indicating whether they were appointed by a Democratic or Republican president. For the sake of this analysis, I’m assuming that a judges’ first term corresponds with the rule of the party that nominated him/her.

Observers of American’s current hyper-polarized political system might be surprised that there have been presidents who nominated judges affiliated with the opposing party, Yes, you’re allowed to do that.

#number of years on the bench - might be useful later
ideology <- ideology %>%
  arrange(justice_name) %>%
  group_by(justice_name) %>%
  mutate(n_years = n())

#sets up column for year of appointment
ideology <- ideology %>%
  group_by(justice_name) %>%
  mutate(appoint_year = min(court_term)) 

#sets up a column for party of appointment. 0 means Democrat, 1 means Republican
ideology$appoint_party <- ifelse(ideology$appoint_year %in% dem_years, "D", "R")

#need to manually input part of appointment of justices in 1937. Not going to change the
#appointment year for the sake of this analysis
manual_change <- ideology %>%
  select(justice_code, justice_name, appoint_year, appoint_party) %>%
  group_by(justice_name) %>%
  filter(appoint_year == 1937) 

manual_change_names <- unique(as.character(manual_change$justice_name))
manual_change_names #these are the justices whose appoint_year is listed as 1937
##  [1] "Benjamin N. Cardozo"    "Charles Evan Hughes"    "George Sutherland"      "Harlan F. Stone"        "Hugo Black"             "James Clark McReynolds" "Louis Brandeis"         "Owen Josephus Roberts"  "Pierce Butler"          "Stanley Forman Reed"
#manually shifting justices 1,2,3,4,8,9 to "R". Note that some Democrat judges
#were nominated by Republicans. Column only reflects president who nominated
#them. Info gathered by Wikipedia

ideology <- mutate(ideology, appoint_party = replace(appoint_party, justice_code %in% c(71,72,74,75,76,77), "R"))

Analysis

Where do judges fall on the liberal-conservative spectrum?

First, let’s see what the spectrum looks like. Then let’s focus on the current (early 2017) justices.

ideology_ranked <- ideology %>%
  group_by(justice_name) %>%
  summarize(ind = mean(posterior_mean), first_year = first(court_term), last_year = last(court_term), party = first(appoint_party), spread = max(posterior_mean) - min(posterior_mean)) %>%
  arrange(ind) %>%
  mutate(hist_rank = rank(ind))

The purple line corresponds to the median justice rank, i.e., rank 22.5 / 45. Democrat-nominated justices are blue, Republican-nominated ones are red. Down is liberal, up is conservative.

ggplot(ideology_ranked, aes(x = hist_rank, y = ind, fill = party)) +
  geom_bar(stat = "identity") +
  scale_fill_manual(values = c("royalblue", "red")) + 
  geom_vline(xintercept = 22.5, color = "purple") +
  theme_hc() + 
  labs(title = "Supreme Court Justice Ideological Spectrum", x = "Rank", y = "Ideology") +
  scale_y_continuous(limits = c(-5,5)) +
  theme(legend.position="none") +
  theme(plot.title = element_text(hjust = 0.5))
## Warning: Stacking not well defined when ymin != 0

Interestingly, there are quite a few judges appointed by Democrats who are conservative and judges appointed by Republicans who are liberal. Here’s a list of each:

democratic_conservatives <- filter(ideology_ranked, ind > 0, party == "D")
republican_liberals <- filter(ideology_ranked, ind < 0, party == "R")
democratic_conservatives
## # A tibble: 9 x 7
##             justice_name       ind first_year last_year party spread hist_rank
##                   <fctr>     <dbl>      <int>     <int> <chr>  <dbl>     <dbl>
## 1    Stanley Forman Reed 0.3784500       1937      1956     D  2.679        22
## 2            Byron White 0.4231250       1961      1992     D  1.484        23
## 3      Felix Frankfurter 0.4995417       1938      1961     D  3.170        25
## 4           Tom C. Clark 0.5036667       1949      1966     D  1.338        26
## 5      Robert H. Jackson 0.6976923       1941      1953     D  1.135        28
## 6     Harold Hitz Burton 1.0446429       1945      1958     D  0.844        31
## 7         Fred M. Vinson 1.0464286       1946      1952     D  1.134        32
## 8         Sherman Minton 1.1232500       1949      1956     D  0.648        34
## 9 James Clark McReynolds 3.4692500       1937      1940     D  0.208        44
republican_liberals
## # A tibble: 6 x 7
##          justice_name        ind first_year last_year party spread hist_rank
##                <fctr>      <dbl>      <int>     <int> <chr>  <dbl>     <dbl>
## 1  William J. Brennan -1.9340294       1956      1989     R  2.996         4
## 2   John Paul Stevens -1.8210000       1975      2009     R  3.460         5
## 3 Benjamin N. Cardozo -1.5980000       1937      1937     R  0.000         7
## 4         Earl Warren -1.2578125       1953      1968     R  1.652        13
## 5        David Souter -0.7866842       1990      2008     R  2.671        16
## 6      Harry Blackmun -0.0303600       1969      1993     R  3.710        19

Now let’s focus on current justices and their rank relative to their predecessors.

#Which correspond to current justices?
filter(ideology_ranked, last_year == 2015)
## # A tibble: 9 x 7
##          justice_name        ind first_year last_year party spread hist_rank
##                <fctr>      <dbl>      <int>     <int> <chr>  <dbl>     <dbl>
## 1     Sonia Sotomayor -2.0420000       2009      2015     D  0.958         3
## 2 Ruth Bader Ginsburg -1.5450435       1993      2015     D  2.297         9
## 3         Elena Kagan -1.5296667       2010      2015     D  0.249        10
## 4      Stephen Breyer -1.1321364       1994      2015     D  1.220        14
## 5     Anthony Kennedy  0.6972414       1987      2015     R  1.912        27
## 6        John Roberts  1.1106364       2005      2015     R  1.225        33
## 7        Samuel Alito  1.6603636       2005      2015     R  0.637        39
## 8      Antonin Scalia  2.4675333       1986      2015     R  2.049        42
## 9     Clarence Thomas  3.5234800       1991      2015     R  1.194        45
#dropping Scalia, deceased in 2016
ideology_ranked_current <- filter(ideology_ranked, last_year == 2015 & !(hist_rank == 42))

#current justices - dropped Scalia
ggplot(ideology_ranked, aes(x = hist_rank, y = ind, fill = ifelse(last_year == "2015" & !(hist_rank == 42), "purple", "grey"))) +
  geom_bar(stat = "identity") +
  scale_fill_manual(values = c("grey", "purple")) + 
  geom_vline(xintercept = 22.5, color = "purple") +
  theme_hc() + 
  labs(fill = "Rank", title = "Supreme Court Justice Ideological Spectrum", x = "Rank", y = "Ideology") + 
  scale_y_continuous(limits = c(-5,5)) + 
  theme(legend.position="none") +
  theme(plot.title = element_text(hjust = 0.5))

And finally, a graph of current justices, from most liberal to most conservative. The dashed line represents the mean ideology score of the court in 2015.

#bar graph of current justices
ideology_ranked_current$current_rank <- 1:8

ggplot(ideology_ranked_current, aes(x = reorder(justice_name, hist_rank), y = ind, fill = ifelse(party == "D", "royalblue", "red"))) +
  geom_bar(stat = "identity") + 
  scale_fill_manual(values = c("red", "royalblue")) +
  theme(legend.position="none") +
  geom_hline(yintercept = mean(ideology_ranked_current$ind), linetype = "dashed") + 
  theme_hc() + 
  labs(title = "Current Individual Ideological Spectrum", x = NULL, y = "Ideology") +
  theme(axis.text.x = element_text(size = 6)) +
  theme(legend.position="none") +
  theme(plot.title = element_text(hjust = 0.5))

Three notes before moving on. First, remember that this bar graph represents the average ideology of each justice over the course of their tenure, not a reflection of where they stand today. I’ll get to that in the next section.

Second, and on the same note, you may wonder why the average here is above zero whereas the average in the historical graph (above) is below zero. That’s because the first graph gives a snapshot of the average ideology of each year, uncontaminated by previous years. The bar chart shows the average ideology of the current justices. In other words, 2015 was a “liberal” year (because it was below 0) but the current set of justices, taken as a whole over their tenures, have been very slightly conservative.

Third, Justice Thomas is clearly very conservative. My partner passed the bar exam in California and is an avid court watcher. When I reported the results to her, she suggested that Thomas’ mega-conservatism may not be as decisive as it appears.

According to her on contentious issues, Thomas is never the decisive vote - in other words, he, Alito, and (until recently) Scalia could just be counted on to be interchangeably conservative. It’s on other opinions where Thomas takes incredibly conservative positions.

My partner may be right or may be wrong. In fairness, we were having some wine while discussing it. My partner is very much not a conservative, and in fact is a huge Ruth Bader Ginsburg (or RBG, for the uninitiated) fan. So in the next section, I’ll check out some trends and see where everyone’s favorite tiny justice stands in relation to her peers.

How does RBG’s historical trend look relative to other current justices?

As you can see from this line graph, RBG has become significantly more liberal over the course of her tenure. I bolded her line to make it stand out.

ideology_current <- filter(ideology, justice_name %in% ideology_ranked_current$justice_name)

ggplot(ideology_current, aes(x = court_term, y = posterior_mean)) +
  geom_line(data = subset(ideology_current, justice_code == 106), col = "red4") + #Kennedy
  geom_line(data = subset(ideology_current, justice_code == 108), col = "red") + #Thomas
  geom_line(data = subset(ideology_current, justice_code == 109), col = "dodgerblue2", size = 1.25) + #Ginsburg
  geom_line(data = subset(ideology_current, justice_code == 110), col = "darkslateblue") + #Breyer
  geom_line(data = subset(ideology_current, justice_code == 111), col = "red3") + #Roberts
  geom_line(data = subset(ideology_current, justice_code == 112), col = "red2") + #Alito
  geom_line(data = subset(ideology_current, justice_code == 113), col = "dodgerblue") + #Sotomayor
  geom_line(data = subset(ideology_current, justice_code == 114), col = "dodgerblue4") + #Kagan
  theme_hc() +
  labs(title = "Current Individual Trends - RBG Bolded", x = "Year", y = "Ideology") +
  scale_y_continuous(limits = c(-4,4)) +
  theme(plot.title = element_text(hjust = 0.5))

In fact, it looks like Ginsburg had the most dramatic shift in any direction of any of the current justices:

ideology_ranked_current %>%
  select(justice_name, spread) %>%
  arrange(desc(spread))
## # A tibble: 8 x 2
##          justice_name spread
##                <fctr>  <dbl>
## 1 Ruth Bader Ginsburg  2.297
## 2     Anthony Kennedy  1.912
## 3        John Roberts  1.225
## 4      Stephen Breyer  1.220
## 5     Clarence Thomas  1.194
## 6     Sonia Sotomayor  0.958
## 7        Samuel Alito  0.637
## 8         Elena Kagan  0.249

Silliness aside, this suggests that the recent infatuation with RBG is not merely the result of an increased popularity of social media or random chance. “Early” RBG was not the liberal that she is today.

This presents interesting classification problems. Should we consider RBG “radical”? If we look at her current (2015) ideological ranking, the claim isn’t ridiculous. But if we look at her body of work as a whole since becoming a Supreme Court Justice, the label doesn’t seem as appropriate as it would be for, say, Justice Thomas.

And speaking of clustering, let’s move on to the last piece of analysis…

Can you divide all the justices into groups?

Let’s do this thing. And let’s do it with with the kmeans() function.

First, here is a graph of all the justices, with the x-axis representing ideology (from more liberal to more conservative) and the y-axis representing their average deviation from the norm throughout their tenure. Blue is for Democrat-nominated justices; red is for Republic-nominated ones. The size of the dot represents the number of years the justice served.

ideology %>%
  group_by(justice_name) %>%
  summarize(avg = mean(posterior_mean), dev = mean(standard_deviation), num = n(), party = first(appoint_party)) %>%
  ggplot(aes(x = avg, y = dev, size = num, col = party)) +
  geom_point(alpha = 0.3) + 
  scale_color_manual(values = c("royalblue", "red")) + 
  theme_hc() + 
  scale_x_continuous(name = "Ideology", limits = c(-5,5)) + 
  scale_y_continuous(name = "Deviation from Peers") +
  labs(title = "Individual Justices by Party", col = "Party", size = "Years Served") + 
  theme(plot.title = element_text(hjust = 0.5))

One vital point here: the deviation represents their deviation from the courts when they served. Why does this matter? Someone who might be a weirdo in one time period might be totally normal in another.

In other words, the y-axis represents the “maverick”ness of a judge during the time in which s/he served.

Another point I have to cop to: the size of the bubbles will only be accurate for judges that started their tenure from 1938 onwards. I don’t have the data to accurately represent the number of years served by the judges that served in 1937. As far as this dataset is concerned, they each started their tenure in that year.

Now let’s get clustering. Following a standard rough rule of thumb, the number of clusters should be (1) an odd number, and (2) approximately the square root of the number of observations. Since there are 45 judges, let’s go with seven. I think this ends up working out nicely.

#clustering without president or appoint_party
ideology_cluster <- ideology %>%
  group_by(justice_name) %>%
  summarize(avg = mean(posterior_mean), dev = mean(standard_deviation), num = n(), party = first(appoint_party))

vec.posterior_mean <- scale(as.vector(ideology_cluster$avg))
vec.standard_deviation <- scale(as.vector(ideology_cluster$dev))
vec.n_years <- scale(as.vector(ideology_cluster$num))

cluster_ideology <- as.data.frame(cbind(vec.posterior_mean, vec.standard_deviation))


set.seed(1)
ideology_7_clusters <- kmeans(cluster_ideology, centers = 7, nstart = 15)
ideology_cluster$seven_clusters <- as.factor(ideology_7_clusters$cluster)

#The initial plot needs work, so I'm not printing it
#ggplot(ideology_cluster, aes(x = avg, y = dev, size = num, col = #seven_clusters)) +
#  geom_point(alpha = 0.6) + 
#  scale_color_manual(values = c("deepskyblue4", "orchid4", "red3", #"deepskyblue1", "red", "royalblue1","firebrick4")) +
#  theme_hc() 

#renaming clusters
levels(ideology_cluster$seven_clusters) <- c("Liberal Compromisor", "Placid Moderate", "Conservative Agitator", "Liberal Renegade", "Conservative Renegade", "Liberal Agitator", "Conservative Compromisor")
                                           
ggplot(ideology_cluster, aes(x = avg, y = dev, size = num, col = seven_clusters)) +
  geom_point(alpha = 0.6) + 
  scale_color_manual(values = c("deepskyblue4", "orchid4", "red3", "deepskyblue1", "red", "royalblue1","firebrick4")) +
  theme_hc() + 
  scale_x_continuous(name = "Ideology", limits = c(-5,5)) + 
  scale_y_continuous(name = "Deviation from Peers") +
  scale_size_continuous(guide = FALSE) +
  labs(title = "Individual Justices by Group", col = NULL, size = "Years Served") +
  theme(plot.title = element_text(hjust = 0.5))

Based on the algorithm, I think it makes sense to think of the justices as falling along the following spectrum:

  1. Liberal renegade
  2. Liberal agitator
  3. Liberal compromisor
  4. Placid moderate
  5. Conservative compromisor
  6. Conservative agitator
  7. Conservative renegade

As expected, there are far more compromisors and moderates than there are renegades and agitators. Because the scores represent the averages for each justice, the questions regarding classification that I mentioned earlier once again become relevant.

For instance, how is Ginsburg classified here?

#Where is Ginsburg?
filter(ideology_cluster, justice_name == "Ruth Bader Ginsburg")
## # A tibble: 1 x 6
##          justice_name       avg       dev   num party      seven_clusters
##                <fctr>     <dbl>     <dbl> <int> <chr>              <fctr>
## 1 Ruth Bader Ginsburg -1.545043 0.3026087    23     D Liberal Compromisor

Here she’s a liberal compromisor. But that doesn’t seem to do justice (ha) to her recent move toward more extreme liberalism.

Incidentally, if you’re a very liberal-leaning person (like my partner), you may want to figure out who the heck is that weirdo in the upper-left corner.

filter(ideology_cluster, avg < -3)
## # A tibble: 1 x 6
##         justice_name       avg       dev   num party   seven_clusters
##               <fctr>     <dbl>     <dbl> <int> <chr>           <fctr>
## 1 William O. Douglas -4.648921 0.6046579    38     D Liberal Renegade

That’s William O. Douglas, who is apparently more to the left than Karl Marx, and just as much of a rabble-rouser. Crucially, this isn’t some random guy who sat on the court for two months and died. He has apparently sat on the court for thirty-eight years.

There is, of course, a better than epsilon chance that there’s more to the story than that, but for now I’ll leave you with the full table of justices, where they stand, and the category to which they were assigned.

Thanks for reading! This was a fun mini-project.

print(ideology_cluster[,1:5], n = 45)
## # A tibble: 45 x 5
##                 justice_name         avg       dev   num party
##                       <fctr>       <dbl>     <dbl> <int> <chr>
## 1                 Abe Fortas -1.43500000 0.2660000     4     D
## 2            Anthony Kennedy  0.69724138 0.2228276    29     R
## 3             Antonin Scalia  2.46753333 0.3630333    30     R
## 4            Arthur Goldberg -1.05366667 0.2323333     3     D
## 5        Benjamin N. Cardozo -1.59800000 0.6350000     1     R
## 6                Byron White  0.42312500 0.1770625    32     D
## 7        Charles Evan Hughes  0.17925000 0.2140000     4     R
## 8    Charles Evans Whittaker  1.23533333 0.2523333     6     R
## 9            Clarence Thomas  3.52348000 0.5122000    25     R
## 10              David Souter -0.78668421 0.2423684    19     R
## 11               Earl Warren -1.25781250 0.2298125    16     R
## 12               Elena Kagan -1.52966667 0.3338333     6     D
## 13         Felix Frankfurter  0.49954167 0.2170417    24     D
## 14              Frank Murphy -1.58740000 0.2754000    10     D
## 15            Fred M. Vinson  1.04642857 0.2400000     7     D
## 16         George Sutherland  1.57400000 0.5470000     1     R
## 17           Harlan F. Stone  0.01366667 0.2071111     9     R
## 18        Harold Hitz Burton  1.04464286 0.2347143    14     D
## 19            Harry Blackmun -0.03036000 0.2092400    25     R
## 20                Hugo Black -1.75867647 0.2775294    34     D
## 21    James Clark McReynolds  3.46925000 0.6005000     4     D
## 22           James F. Byrnes -0.19000000 0.2340000     1     D
## 23   John Marshall Harlan II  1.62452941 0.2618235    17     R
## 24         John Paul Stevens -1.82100000 0.3116857    35     R
## 25              John Roberts  1.11063636 0.2673636    11     R
## 26 Lewis Franklin Powell Jr.  0.94206250 0.1916250    16     R
## 27            Louis Brandeis -0.61750000 0.2930000     2     D
## 28     Owen Josephus Roberts  1.53337500 0.2936250     8     R
## 29             Pierce Butler  2.22050000 0.4325000     2     R
## 30            Potter Stewart  0.43752174 0.1692609    23     R
## 31         Robert H. Jackson  0.69769231 0.2238462    13     D
## 32       Ruth Bader Ginsburg -1.54504348 0.3026087    23     D
## 33              Samuel Alito  1.66036364 0.3208182    11     R
## 34       Sandra Day O'Connor  0.98084000 0.2259600    25     R
## 35            Sherman Minton  1.12325000 0.2735000     8     D
## 36           Sonia Sotomayor -2.04200000 0.3900000     7     D
## 37       Stanley Forman Reed  0.37845000 0.2276000    20     D
## 38            Stephen Breyer -1.13213636 0.2596364    22     D
## 39         Thurgood Marshall -2.81266667 0.3744583    24     D
## 40              Tom C. Clark  0.50366667 0.1953889    18     D
## 41          Warren E. Burger  1.86064706 0.2654118    17     R
## 42     Wiley Blount Rutledge -1.41542857 0.2658571     7     D
## 43        William J. Brennan -1.93402941 0.2800294    34     R
## 44        William O. Douglas -4.64892105 0.6046579    38     D
## 45         William Rehnquist  2.94802941 0.3670294    34     R
print(ideology_cluster[,c(1,6)], n = 45)
## # A tibble: 45 x 2
##                 justice_name           seven_clusters
##                       <fctr>                   <fctr>
## 1                 Abe Fortas      Liberal Compromisor
## 2            Anthony Kennedy          Placid Moderate
## 3             Antonin Scalia    Conservative Agitator
## 4            Arthur Goldberg      Liberal Compromisor
## 5        Benjamin N. Cardozo         Liberal Renegade
## 6                Byron White          Placid Moderate
## 7        Charles Evan Hughes          Placid Moderate
## 8    Charles Evans Whittaker Conservative Compromisor
## 9            Clarence Thomas    Conservative Renegade
## 10              David Souter      Liberal Compromisor
## 11               Earl Warren      Liberal Compromisor
## 12               Elena Kagan         Liberal Agitator
## 13         Felix Frankfurter          Placid Moderate
## 14              Frank Murphy      Liberal Compromisor
## 15            Fred M. Vinson Conservative Compromisor
## 16         George Sutherland    Conservative Renegade
## 17           Harlan F. Stone          Placid Moderate
## 18        Harold Hitz Burton Conservative Compromisor
## 19            Harry Blackmun          Placid Moderate
## 20                Hugo Black      Liberal Compromisor
## 21    James Clark McReynolds    Conservative Renegade
## 22           James F. Byrnes          Placid Moderate
## 23   John Marshall Harlan II Conservative Compromisor
## 24         John Paul Stevens         Liberal Agitator
## 25              John Roberts Conservative Compromisor
## 26 Lewis Franklin Powell Jr.          Placid Moderate
## 27            Louis Brandeis      Liberal Compromisor
## 28     Owen Josephus Roberts Conservative Compromisor
## 29             Pierce Butler    Conservative Agitator
## 30            Potter Stewart          Placid Moderate
## 31         Robert H. Jackson          Placid Moderate
## 32       Ruth Bader Ginsburg      Liberal Compromisor
## 33              Samuel Alito Conservative Compromisor
## 34       Sandra Day O'Connor          Placid Moderate
## 35            Sherman Minton Conservative Compromisor
## 36           Sonia Sotomayor         Liberal Agitator
## 37       Stanley Forman Reed          Placid Moderate
## 38            Stephen Breyer      Liberal Compromisor
## 39         Thurgood Marshall         Liberal Agitator
## 40              Tom C. Clark          Placid Moderate
## 41          Warren E. Burger Conservative Compromisor
## 42     Wiley Blount Rutledge      Liberal Compromisor
## 43        William J. Brennan      Liberal Compromisor
## 44        William O. Douglas         Liberal Renegade
## 45         William Rehnquist    Conservative Agitator