Death penalty poll - Proportion of American adults supporting the death penalty. See Chapter 4 in Regression and Other Stories.


Load packages

library("rprojroot")
root<-has_file(".ROS-Examples-root")$make_fix_file()
library("ggplot2")
theme_set(bayesplot::theme_default(base_family = "sans"))

Load data

polls <- matrix(scan(root("Death/data","polls.dat")), ncol=5, byrow=TRUE)
support <- polls[,3]/(polls[,3]+polls[,4])
year <-  polls[,1] + (polls[,2]-6)/12
death <- read.table(root("Death/data","dataforandy.txt"), header=TRUE)
ex.rate <- death[,7]/100
err.rate <- death[,6]/100
hom.rate <- death[,4]/100000
ds.per.homicide <- death[,2]/1000
ds <- death[,1]
ex <- ex.rate*ds
err <- err.rate*ds
hom <- ds/ds.per.homicide
pop <- hom/hom.rate
state.abbrs <- row.names(death)
std.err.rate <- sqrt((err+1)*(ds+1-err)/((ds+2)^2*(ds+3)))

Percentage support for the death penalty

par(mar=c(5,5,4,2)+.1)
plot(year, support*100, xlab="Year",
      ylab="Percentage support for the death penalty", cex=2, cex.main=2,
      cex.axis=2, cex.lab=2, type="l")

ggplot version

poll <- data.frame(support, year)
ggplot(aes(x = year, y = support*100), data = poll) + geom_line() +
    labs(x= "Year", y = "Percentage support for the death penalty")

Rate of reversal of death sentences

par(mar=c(5,5,4,2)+.1)
plot(ds/hom, err.rate, xlab="Death sentences per homicide",
      ylab="Rate of reversal of death sentences", cex=2, cex.main=2,
      cex.axis=2, cex.lab=2, type="n")
text(ds/hom, err.rate, state.abbrs, cex=1.5)
for (i in 1:length(ds)){
  lines(rep(ds[i]/hom[i],2), err.rate[i] + c(-1,1)*std.err.rate[i], lwd=.5)
}

ggplot version

poll <- data.frame(ds, hom, err.rate, std.err.rate, state.abbrs)
ggplot(aes(x = ds/hom, y = err.rate,
           ymin = err.rate - std.err.rate, ymax = err.rate + std.err.rate),
       data = poll) + geom_pointrange() +
    labs(x= "Death sentences per homicide",
         y = "Rate of reversal of death sentences") +
    geom_text(aes(label=state.abbrs), hjust = "right", nudge_x=-0.0005)

Percentage support for the death penalty

par(mar=c(5,5,4,2)+.1)
plot(year, support*100, xlab="Year", ylim=c(min(100*support)-1, max(100*support)+1),
      ylab="Percentage support for the death penalty", cex=2, cex.main=2,
      cex.axis=2, cex.lab=2, pch=20)
for (i in 1:nrow(polls))
  lines(rep(year[i],2), 100*(support[i]+c(-1,1)*sqrt(support[i]*(1-support[i])/1000)))

ggplot version

poll <- data.frame(support, year, sd = sqrt(support*(1-support)/1000))
ggplot(aes(x = year, y = support*100,
           ymin = 100*(support-sd), ymax =  100*(support+sd)),
       data = poll) + geom_pointrange() +
    labs(x= "Year", y = "Percentage support for the death penalty")

LS0tCnRpdGxlOiAiUmVncmVzc2lvbiBhbmQgT3RoZXIgU3RvcmllczogRGVhdGggcGVuYWx0eSBwb2xsIgphdXRob3I6ICJBbmRyZXcgR2VsbWFuLCBKZW5uaWZlciBIaWxsLCBBa2kgVmVodGFyaSIKZGF0ZTogImByIGZvcm1hdChTeXMuRGF0ZSgpKWAiCm91dHB1dDoKICBodG1sX2RvY3VtZW50OgogICAgdGhlbWU6IHJlYWRhYmxlCiAgICB0b2M6IHRydWUKICAgIHRvY19kZXB0aDogMgogICAgdG9jX2Zsb2F0OiB0cnVlCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlCi0tLQpEZWF0aCBwZW5hbHR5IHBvbGwgLSBQcm9wb3J0aW9uIG9mIEFtZXJpY2FuIGFkdWx0cyBzdXBwb3J0aW5nIHRoZSBkZWF0aApwZW5hbHR5LiBTZWUgQ2hhcHRlciA0IGluIFJlZ3Jlc3Npb24gYW5kIE90aGVyIFN0b3JpZXMuCgotLS0tLS0tLS0tLS0tCgoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChtZXNzYWdlPUZBTFNFLCBlcnJvcj1GQUxTRSwgd2FybmluZz1GQUxTRSwgY29tbWVudD1OQSkKIyBzd2l0Y2ggdGhpcyB0byBUUlVFIHRvIHNhdmUgZmlndXJlcyBpbiBzZXBhcmF0ZSBmaWxlcwpzYXZlZmlncyA8LSBGQUxTRQpgYGAKCiMjIyMgTG9hZCBwYWNrYWdlcwoKYGBge3IgfQpsaWJyYXJ5KCJycHJvanJvb3QiKQpyb290PC1oYXNfZmlsZSgiLlJPUy1FeGFtcGxlcy1yb290IikkbWFrZV9maXhfZmlsZSgpCmxpYnJhcnkoImdncGxvdDIiKQp0aGVtZV9zZXQoYmF5ZXNwbG90Ojp0aGVtZV9kZWZhdWx0KGJhc2VfZmFtaWx5ID0gInNhbnMiKSkKYGBgCgojIyMjIExvYWQgZGF0YQoKYGBge3IgfQpwb2xscyA8LSBtYXRyaXgoc2Nhbihyb290KCJEZWF0aC9kYXRhIiwicG9sbHMuZGF0IikpLCBuY29sPTUsIGJ5cm93PVRSVUUpCnN1cHBvcnQgPC0gcG9sbHNbLDNdLyhwb2xsc1ssM10rcG9sbHNbLDRdKQp5ZWFyIDwtICBwb2xsc1ssMV0gKyAocG9sbHNbLDJdLTYpLzEyCmRlYXRoIDwtIHJlYWQudGFibGUocm9vdCgiRGVhdGgvZGF0YSIsImRhdGFmb3JhbmR5LnR4dCIpLCBoZWFkZXI9VFJVRSkKZXgucmF0ZSA8LSBkZWF0aFssN10vMTAwCmVyci5yYXRlIDwtIGRlYXRoWyw2XS8xMDAKaG9tLnJhdGUgPC0gZGVhdGhbLDRdLzEwMDAwMApkcy5wZXIuaG9taWNpZGUgPC0gZGVhdGhbLDJdLzEwMDAKZHMgPC0gZGVhdGhbLDFdCmV4IDwtIGV4LnJhdGUqZHMKZXJyIDwtIGVyci5yYXRlKmRzCmhvbSA8LSBkcy9kcy5wZXIuaG9taWNpZGUKcG9wIDwtIGhvbS9ob20ucmF0ZQpzdGF0ZS5hYmJycyA8LSByb3cubmFtZXMoZGVhdGgpCnN0ZC5lcnIucmF0ZSA8LSBzcXJ0KChlcnIrMSkqKGRzKzEtZXJyKS8oKGRzKzIpXjIqKGRzKzMpKSkKYGBgCgojIyMjIFBlcmNlbnRhZ2Ugc3VwcG9ydCBmb3IgdGhlIGRlYXRoIHBlbmFsdHkKCmBgYHtyIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9CmlmIChzYXZlZmlncykgcG9zdHNjcmlwdChyb290KCJEZWF0aC9maWdzIiwicG9sbHMucHMiKSwgaG9yaXpvbnRhbD1UUlVFKQpgYGAKYGBge3IgfQpwYXIobWFyPWMoNSw1LDQsMikrLjEpCnBsb3QoeWVhciwgc3VwcG9ydCoxMDAsIHhsYWI9IlllYXIiLAogICAgICB5bGFiPSJQZXJjZW50YWdlIHN1cHBvcnQgZm9yIHRoZSBkZWF0aCBwZW5hbHR5IiwgY2V4PTIsIGNleC5tYWluPTIsCiAgICAgIGNleC5heGlzPTIsIGNleC5sYWI9MiwgdHlwZT0ibCIpCmBgYApgYGB7ciBldmFsPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQppZiAoc2F2ZWZpZ3MpIGRldi5vZmYoKQpgYGAKCiMjIyMgZ2dwbG90IHZlcnNpb24KCmBgYHtyIH0KcG9sbCA8LSBkYXRhLmZyYW1lKHN1cHBvcnQsIHllYXIpCmdncGxvdChhZXMoeCA9IHllYXIsIHkgPSBzdXBwb3J0KjEwMCksIGRhdGEgPSBwb2xsKSArIGdlb21fbGluZSgpICsKICAgIGxhYnMoeD0gIlllYXIiLCB5ID0gIlBlcmNlbnRhZ2Ugc3VwcG9ydCBmb3IgdGhlIGRlYXRoIHBlbmFsdHkiKQpgYGAKCiMjIyMgUmF0ZSBvZiByZXZlcnNhbCBvZiBkZWF0aCBzZW50ZW5jZXMKCmBgYHtyIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9CmlmIChzYXZlZmlncykgcG9zdHNjcmlwdChyb290KCJEZWF0aC9maWdzIiwic3RhdGVzLnBzIiksIGhvcml6b250YWw9VFJVRSkKYGBgCmBgYHtyIH0KcGFyKG1hcj1jKDUsNSw0LDIpKy4xKQpwbG90KGRzL2hvbSwgZXJyLnJhdGUsIHhsYWI9IkRlYXRoIHNlbnRlbmNlcyBwZXIgaG9taWNpZGUiLAogICAgICB5bGFiPSJSYXRlIG9mIHJldmVyc2FsIG9mIGRlYXRoIHNlbnRlbmNlcyIsIGNleD0yLCBjZXgubWFpbj0yLAogICAgICBjZXguYXhpcz0yLCBjZXgubGFiPTIsIHR5cGU9Im4iKQp0ZXh0KGRzL2hvbSwgZXJyLnJhdGUsIHN0YXRlLmFiYnJzLCBjZXg9MS41KQpmb3IgKGkgaW4gMTpsZW5ndGgoZHMpKXsKICBsaW5lcyhyZXAoZHNbaV0vaG9tW2ldLDIpLCBlcnIucmF0ZVtpXSArIGMoLTEsMSkqc3RkLmVyci5yYXRlW2ldLCBsd2Q9LjUpCn0KYGBgCmBgYHtyIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9CmlmIChzYXZlZmlncykgZGV2Lm9mZigpCmBgYAoKIyMjIyBnZ3Bsb3QgdmVyc2lvbgoKYGBge3IgfQpwb2xsIDwtIGRhdGEuZnJhbWUoZHMsIGhvbSwgZXJyLnJhdGUsIHN0ZC5lcnIucmF0ZSwgc3RhdGUuYWJicnMpCmdncGxvdChhZXMoeCA9IGRzL2hvbSwgeSA9IGVyci5yYXRlLAogICAgICAgICAgIHltaW4gPSBlcnIucmF0ZSAtIHN0ZC5lcnIucmF0ZSwgeW1heCA9IGVyci5yYXRlICsgc3RkLmVyci5yYXRlKSwKICAgICAgIGRhdGEgPSBwb2xsKSArIGdlb21fcG9pbnRyYW5nZSgpICsKICAgIGxhYnMoeD0gIkRlYXRoIHNlbnRlbmNlcyBwZXIgaG9taWNpZGUiLAogICAgICAgICB5ID0gIlJhdGUgb2YgcmV2ZXJzYWwgb2YgZGVhdGggc2VudGVuY2VzIikgKwogICAgZ2VvbV90ZXh0KGFlcyhsYWJlbD1zdGF0ZS5hYmJycyksIGhqdXN0ID0gInJpZ2h0IiwgbnVkZ2VfeD0tMC4wMDA1KQpgYGAKCiMjIyMgUGVyY2VudGFnZSBzdXBwb3J0IGZvciB0aGUgZGVhdGggcGVuYWx0eQoKYGBge3IgZXZhbD1GQUxTRSwgaW5jbHVkZT1GQUxTRX0KaWYgKHNhdmVmaWdzKSBwb3N0c2NyaXB0KHJvb3QoIkRlYXRoL2ZpZ3MiLCJkZWF0aHBvbGxzLnBzIiksIGhvcml6b250YWw9VFJVRSkKYGBgCmBgYHtyIH0KcGFyKG1hcj1jKDUsNSw0LDIpKy4xKQpwbG90KHllYXIsIHN1cHBvcnQqMTAwLCB4bGFiPSJZZWFyIiwgeWxpbT1jKG1pbigxMDAqc3VwcG9ydCktMSwgbWF4KDEwMCpzdXBwb3J0KSsxKSwKICAgICAgeWxhYj0iUGVyY2VudGFnZSBzdXBwb3J0IGZvciB0aGUgZGVhdGggcGVuYWx0eSIsIGNleD0yLCBjZXgubWFpbj0yLAogICAgICBjZXguYXhpcz0yLCBjZXgubGFiPTIsIHBjaD0yMCkKZm9yIChpIGluIDE6bnJvdyhwb2xscykpCiAgbGluZXMocmVwKHllYXJbaV0sMiksIDEwMCooc3VwcG9ydFtpXStjKC0xLDEpKnNxcnQoc3VwcG9ydFtpXSooMS1zdXBwb3J0W2ldKS8xMDAwKSkpCmBgYApgYGB7ciBldmFsPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQppZiAoc2F2ZWZpZ3MpIGRldi5vZmYoKQpgYGAKCiMjIyMgZ2dwbG90IHZlcnNpb24KCmBgYHtyIH0KcG9sbCA8LSBkYXRhLmZyYW1lKHN1cHBvcnQsIHllYXIsIHNkID0gc3FydChzdXBwb3J0KigxLXN1cHBvcnQpLzEwMDApKQpnZ3Bsb3QoYWVzKHggPSB5ZWFyLCB5ID0gc3VwcG9ydCoxMDAsCiAgICAgICAgICAgeW1pbiA9IDEwMCooc3VwcG9ydC1zZCksIHltYXggPSAgMTAwKihzdXBwb3J0K3NkKSksCiAgICAgICBkYXRhID0gcG9sbCkgKyBnZW9tX3BvaW50cmFuZ2UoKSArCiAgICBsYWJzKHg9ICJZZWFyIiwgeSA9ICJQZXJjZW50YWdlIHN1cHBvcnQgZm9yIHRoZSBkZWF0aCBwZW5hbHR5IikKYGBgCgo=