Who gets interrupted most on the Supreme Court?

Adam Feldman’s blog Empirical SCOTUS has a recent post on which Supreme Court judges get interrupted most by the other judges, and another post on how much each judge speaks.

I’ve put the data in a github gist:

scotus<-read.csv("https://gist.githubusercontent.com/tslumley/287de14ec1bbf31785cc3b90a5f32fec/raw/a4b9ff93772f3cd1fea0c80e3d943550575112b8/scotus.csv")
scotus
##        name words sentence utterances interrupted gender
## 1    Breyer 59981     1297       1454          36      M
## 2     Kagan 43043      967       1046          50      F
## 3   Roberts 36608     1424       1573          34      M
## 4 Sotomayor 35898     1391       1517          57      F
## 5     Alito 26422      682        718          30      M
## 6  Ginsburg 21647      715        740          31      F
## 7   Kennedy 20343      829        879          31      M
## 8    Scalia 18509      820        936          26      M
## 9    Thomas   299       11         11           0      M

Here’s a barchart of the raw count of interruptions.

par(las=1,mar=c(5.1,8.1,1,1))
with(scotus[order(scotus$interrupted),], barplot(interrupted, names=name, col=ifelse(gender=="F","purple","orange"),horiz=TRUE))

Pretty dramatic, huh?

The raw number of interruptions is highest for the two more-recent female appointees Elena Kagan and Sonia Sotomayor, but the amount of speaking matters. Clarence Thomas wasn’t interrupted at all, but that’s partly because he barely speaks.

Here’s the graph scaled by the amount each judge talks:

par(las=1,mar=c(5.1,8.1,1,1))
with(scotus[order(scotus$interrupted),], 
     barplot(1000*interrupted/words, names=name,
             col=ifelse(gender=="F","purple","orange"),horiz=TRUE,
             xlab="Per 1000 words"))

And scaled by ‘utterances’ – turns at speaking:

par(las=1,mar=c(5.1,8.1,1,1))
with(scotus[order(scotus$interrupted),], 
     barplot(100*interrupted/utterances, names=name,
             col=ifelse(gender=="F","purple","orange"),horiz=TRUE,
             xlab="Per 100 utterances"))

It still looks like there’s a gender effect, but it’s less dramatic. On the other hand, it now seems to apply even to Ruth Bader Ginsburg. The other thing to notice is that Supreme Court judges get a lot of deference: the highest interruption rate is under 5% of utterances.

So, lets model this, both raw and as rates per word or per utterance

summary(glm(interrupted~gender,family=poisson,data=scotus))
## 
## Call:
## glm(formula = interrupted ~ gender, family = poisson, data = scotus)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -7.2342  -0.0326   0.7321   1.4631   1.8176  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  3.82864    0.08513  44.976  < 2e-16 ***
## genderM     -0.56416    0.11669  -4.835 1.33e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 90.27  on 8  degrees of freedom
## Residual deviance: 67.47  on 7  degrees of freedom
## AIC: 114.8
## 
## Number of Fisher Scoring iterations: 5
summary(glm(interrupted~offset(log(utterances))+gender,family=poisson,data=scotus))
## 
## Call:
## glm(formula = interrupted ~ offset(log(utterances)) + gender, 
##     family = poisson, data = scotus)
## 
## Deviance Residuals: 
##      Min        1Q    Median        3Q       Max  
## -1.61846  -0.79395  -0.07378   0.93107   2.02425  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -3.17533    0.08513 -37.302  < 2e-16 ***
## genderM     -0.39375    0.11669  -3.374  0.00074 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 22.174  on 8  degrees of freedom
## Residual deviance: 10.954  on 7  degrees of freedom
## AIC: 58.288
## 
## Number of Fisher Scoring iterations: 4
summary(glm(interrupted~offset(log(words))+gender,family=poisson,data=scotus))
## 
## Call:
## glm(formula = interrupted ~ offset(log(words)) + gender, family = poisson, 
##     data = scotus)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -3.1170  -0.7609   0.2372   1.0772   2.3482  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -6.59153    0.08513 -77.433  < 2e-16 ***
## genderM     -0.34857    0.11669  -2.987  0.00282 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 31.279  on 8  degrees of freedom
## Residual deviance: 22.466  on 7  degrees of freedom
## AIC: 69.8
## 
## Number of Fisher Scoring iterations: 4

The Poisson model with utterances in the denominator looks like a slightly better fit. Since an interruption will always bring an utterance to an end this sounds as though a Poisson distribution wouldn’t be a good fit, but we can consider the model as a model for a stopped Poisson process, which has the same likelihood.

Without considering the denominator, we’d say male judges are interrupted at 57% the rate of female judges. With the denominator, it’s 71% the rate per ‘utterance’. About a third of the difference is explained.

There’s still a bit of overdispersion, so we should look at either a sandwich estimator or an overdispersion estimator for the standard errors

summary(glm(interrupted~offset(log(utterances))+gender,family=quasipoisson,data=scotus))
## 
## Call:
## glm(formula = interrupted ~ offset(log(utterances)) + gender, 
##     family = quasipoisson, data = scotus)
## 
## Deviance Residuals: 
##      Min        1Q    Median        3Q       Max  
## -1.61846  -0.79395  -0.07378   0.93107   2.02425  
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -3.1753     0.1075 -29.548 1.31e-08 ***
## genderM      -0.3938     0.1473  -2.673   0.0319 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasipoisson family taken to be 1.59371)
## 
##     Null deviance: 22.174  on 8  degrees of freedom
## Residual deviance: 10.954  on 7  degrees of freedom
## AIC: NA
## 
## Number of Fisher Scoring iterations: 4

There’s still reasonable evidence of a difference, given the sample size, though of course I only looked at the data because @DrMel_T tweeted about a write-up in Mother Jones.

Finally, a better way to do the graph would take uncertainty into account. There’s a reasonably good confidence interval approximation for count data where you take the square root of the observed value, add and subtract 1 to get an interval, then square again.

par(las=1,mar=c(5.1,8.1,1,1))
scotus$low<-with(scotus, 100*(pmax(0,sqrt(interrupted)-1)^2)/utterances)
scotus$hi<-with(scotus, 100*(sqrt(interrupted)+1)^2/utterances)
with(scotus,plot(I(100*interrupted/utterances),1:9,pch=19,col=ifelse(gender=="F","purple","orange"),xlim=c(0,9),xlab="Interruptions per 100 utterances",ylab="",yaxt="n"))
with(scotus, segments(low,1:9,hi,1:9,col=ifelse(gender=="F","purple","orange")))
axis(2,at=1:9,labels=scotus$name)