## ## Drew Linzer ## dlinzer@ucla.edu ## January 6, 2005 ## ## Linzer-CArecall.R ## ## Statistical analyses for chapter by Drew Linzer (2005): ## "Statistical Regularities in the Recall Results." ## In Shawn Bowler and Bruce Cain, eds., "Clicker Politics: ## Essays on the California Recall." New York: Prentice Hall. ## library(foreign) library(systemfit) recall <- dget("C:/.../CArecalldata.put") par(ask=T) ## Figure 3.1. Trend of Job Approval Rating of Gray Davis as Governor ## Source: California Field Poll 2003 cat("Figure 3.1 \n") davis.app <- data.frame(polldate=as.Date(c("1999-03-01","1999-08-28","1999-10-27","2000-02-24","2000-06-23","2000-08-22","2001-01-19","2001-05-19","2001-09-16","2001-12-15","2002-01-14","2002-04-14","2002-07-13","2002-09-11","2003-04-09","2003-07-08","2003-08-07")), Approve=c(54,59,54,62,61,56,57,36,38,38,39,39,41,39,24,23,22), Disapprove=c(15,26,27,20,24,28,34,55,52,51,53,54,49,49,65,66,70)) matplot(davis.app[,1],davis.app[,2:3],ylim=c(0,80),type="l",col=c("gray","black"),lty=1,lwd=2, xaxt="n",yaxt="n",xlab="",ylab="Percent approving/disapproving") matplot(davis.app[,1],davis.app[,2:3],ylim=c(0,80),col=c("gray","black"),pch=c(18,15),cex=c(2,1.5),add=T) axis(2,seq(0,80,10),las=1) axis.Date(1,at=davis.app$polldate,format="%m-%Y",las=3) text(as.Date("1999-08-28"),63,"Approve") text(as.Date("1999-08-28"),31,"Disapprove") ## Figure 3.3. Scatterplot of percent voting for Schwarzenegger for Governor ## versus percent voting in favor of the recall for fifty-eight counties. cat("Figure 3.3 \n") plot(recall$YESRP,recall$ARNOLDP,xlim=c(10,90),ylim=c(10,70),cex=1.3,las=1, xlab="Percent voting in favor of recall",ylab="Percent voting Schwarzenegger for Governor") axis(1,seq(10,90,10)) text(20,19,"San Francisco",pos=4) ## Figure 3.4. Scatterplot of percent voting in favor of the recall ## versus percent registered Republican for fifty-eight counties. cat("Figure 3.4 \n") plot(recall$PCTREP,recall$YESRP,xlim=c(10,55),ylim=c(10,90),cex=1.3,las=1, xlab="Percent registered Republican",ylab="Percent voting in favor of recall") axis(1,seq(10,55,5)) axis(2,seq(10,90,10),las=2) abline(0,1) abline(coefficients(lm(recall$YESRP~recall$PCTREP)),lwd=2) text(15,32,"Linear fit") text(45,30,"Percent voting in favor of recall if all \n Republicans, and only Republicans, \n voted for recall") ## Table 3.1. Counties in which the Davis/Bustamante administration ## suffered its worst losses between 2002 and 2003. cruz03adj <- recall$CRUZV * (recall$GV02/recall$GV03) falloff.cradj <- cruz03adj - recall$DAVIS02V falloff.cradjv <- falloff.cradj/recall$REGVOTER falloff.cradjp <- falloff.cradj/recall$DAVIS02V o <- order(falloff.cradj) tab31a <- data.frame(County=recall$COUNTY[o],BustaFalloff=round(falloff.cradj[o],0), FalloffPct=round(100*falloff.cradjv[o],1),PctChange=round(100*falloff.cradjp[o],1))[1:10,] o <- order(falloff.cradjp) tab31b <- data.frame(County=recall$COUNTY[o],BustaFalloff=round(falloff.cradj[o],0), FalloffPct=round(100*falloff.cradjv[o],1),PctChange=round(100*falloff.cradjp[o],1))[1:10,] cat("\n Table 3.1. Counties in which the Davis/Bustamante administration \n suffered its worst losses between 2002 and 2003.\n") cat("\n Sorted by Net Votes Lost \n") print(tab31a) cat("\n Sorted by Percent Change \n") print(tab31b) cat("\n") ## Figure 3.5. Scatterplot of percentage difference between recall support in 2003 ## and Davis opposition in 2002 versus percent voting for Davis in 2002 for fifty- ## eight counties. California's ten southern counties are denoted with solid triangles. cat("Figure 3.5 \n") d.davisopp <- recall$DAVIS02P-recall$NORP plot(recall$DAVIS02P[recall$SOUTH==0],d.davisopp[recall$SOUTH==0],cex=1.3,xlim=c(20,70),ylim=c(-20,20), xlab="2002 Davis vote share",ylab="Change in opposition to Davis") points(recall$DAVIS02P[recall$SOUTH==1],d.davisopp[recall$SOUTH==1],cex=1.3,pch=17) ## Table 3.2. OLS estimation. DV is logit-transformed estimated percent of ## 2002 voters who voted in favor of the recall in 2003, by county. davrec.logit <- log(recall$EIDAVREC/(1-recall$EIDAVREC)) reg32 <- lm(davrec.logit~PCTREP+log(INCOME01)+LATINO+SOUTH,recall) cat("\n Table 3.2. OLS estimation. DV is logit-transformed estimated \n percent of 2002 voters who voted in favor of the recall in \n 2003, by county.") print(summary(reg32)) ## Table 3.3. SUR estimation, fifty-eight observations. DVs are log-ratios ## of countywide vote shares for all candidates, calculated with respect to ## Bustamante's vote shares. ## NOTE: standard errors differ slightly from published results because of ## computing differences in the estimation algorithm. lr.arnold <- log(recall$ARNOLDP/recall$CRUZP) lr.mcclint <- log(recall$MCCLP/recall$CRUZP) lr.camejo <- log(recall$CAMEJOP/recall$CRUZP) lr.others <- log((100-(recall$ARNOLDP+recall$CRUZP+recall$MCCLP+recall$CAMEJOP))/recall$CRUZP) f.arnold <- lr.arnold~PCTREP+log(INCOME01)+LATINO+SOUTH f.mcclint <- lr.mcclint~PCTREP+log(INCOME01)+LATINO+SOUTH f.camejo <- lr.camejo~PCTREP+log(INCOME01)+LATINO+SOUTH f.others <- lr.others~PCTREP+log(INCOME01)+LATINO+SOUTH eqsystem <- list(f.arnold,f.mcclint,f.camejo,f.others) reg33 <- systemfit("SUR",eqsystem,data=recall) reg33.coeffmat <- round(cbind(reg33$b,reg33$se,reg33$t,reg33$p),3) colnames(reg33.coeffmat) <- c("Coeff.","SE","t","p>t") cat("\n Table 3.3. SUR estimation. DVs are log-ratios of countywide \n vote shares for all candidates, calculated with respect \n to Bustamante's vote shares. \n") print(reg33.coeffmat) cat("\n \n") # end of file.