--- title: "Regression and Other Stories: Death penalty poll" author: "Andrew Gelman, Jennifer Hill, Aki Vehtari" date: "`r format(Sys.Date())`" output: html_document: theme: readable toc: true toc_depth: 2 toc_float: true code_download: true --- Death penalty poll - Proportion of American adults supporting the death penalty. See Chapter 4 in Regression and Other Stories. ------------- ```{r setup, include=FALSE} knitr::opts_chunk$set(message=FALSE, error=FALSE, warning=FALSE, comment=NA) # switch this to TRUE to save figures in separate files savefigs <- FALSE ``` #### Load packages ```{r } library("rprojroot") root<-has_file(".ROS-Examples-root")$make_fix_file() library("ggplot2") theme_set(bayesplot::theme_default(base_family = "sans")) ``` #### Load data ```{r } 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 ```{r eval=FALSE, include=FALSE} if (savefigs) postscript(root("Death/figs","polls.ps"), horizontal=TRUE) ``` ```{r } 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") ``` ```{r eval=FALSE, include=FALSE} if (savefigs) dev.off() ``` #### ggplot version ```{r } 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 ```{r eval=FALSE, include=FALSE} if (savefigs) postscript(root("Death/figs","states.ps"), horizontal=TRUE) ``` ```{r } 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) } ``` ```{r eval=FALSE, include=FALSE} if (savefigs) dev.off() ``` #### ggplot version ```{r } 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 ```{r eval=FALSE, include=FALSE} if (savefigs) postscript(root("Death/figs","deathpolls.ps"), horizontal=TRUE) ``` ```{r } 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))) ``` ```{r eval=FALSE, include=FALSE} if (savefigs) dev.off() ``` #### ggplot version ```{r } 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") ```