R program:
#
rm(list=ls(all=TRUE))
#
library(MASS)
library(foreign)
library(basicspace) BasicSpace Package by James Lo, Jeff Lewis, Royce Carroll, and myself
setwd("C:/uga_course_homework_12/")
data <- read.dta("cces_2008.dta",convert.factors = FALSE)
attach(data,warn.conflicts = FALSE)
#
T <- cbind(CC317a,CC317b,CC317c,CC317d,CC317h,CC317g) 0 - 100 Rating of Self and Candidates
TT <- T
TT <- ifelse(is.na(T),999,TT)
mode(TT) <- "double"
colnames(TT) <- c("self","D-Party","R-Party","Bush","Obama","McCain")
#
# Note that polarity=2 selects D-Party -- The Respondent Self Placement
# is in the first column -- respondent=1
# The Call to Aldrich and McKelvey Scaling
result <- aldmck(TT,polarity=2,respondent=1,missing=c(999),verbose=TRUE)
#
#
# ---- Useful Commands To See What is in an Object
#
# > length(result)
# [1] 8
# > class(result)
# [1] "aldmck"
# > names(result)
# [1] "stimuli" "respondents" "eigenvalues" "AMfit" "R2"
# [6] "N" "N.neg" "N.pos"
#
# > names(result$respondents)
# [1] "intercept" "weight" "idealpt" "R2" "selfplace" "polinfo"
#
# > summary(result) -- shows everything
# > plot(result) -- shows basic plots of results
#
windows()
plot(result) The Default Plot in the Package
VOTE <- CC327
VOTED <- ifelse(is.na(VOTE),999,VOTE) Get Who They Voted for
idealpoints1 <- ifelse(is.na(result$respondents$weight),99,result$respondents$weight) The Weight Parameter
idealpoints2 <- ifelse(is.na(result$respondents$idealpt),99,result$respondents$idealpt) The scaled ideal point
obama.voters <- result$respondents$idealpt[idealpoints1>0 & idealpoints2!=99 & VOTED==2] Obama voters
mccain.voters <- result$respondents$idealpt[idealpoints1>0 & idealpoints2!=99 & VOTED==1] McCain voters
#
#crazy.voters <- idealpoints[(idealpoints[,2]>0 & idealpoints[,3]!=99 & (VOTED > 2 & VOTED <=9)),3]
#crazy2.voters <- idealpoints[(idealpoints[,2]>0 & idealpoints[,3]!=99 & VOTED==999),3]
# 10,364
# 10,940
# 2,207
# 2,238
obamaShare <- length(obama.voters)/(length(obama.voters)+length(mccain.voters))
mccainShare <- length(mccain.voters)/(length(obama.voters)+length(mccain.voters))
obamadens <- density(obama.voters) Set up so that the Obama and McCain Densities sum to 1
obamadens$y <- obamadens$y*obamaShare
#
mccaindens <- density(mccain.voters)
mccaindens$y <- mccaindens$y*mccainShare
#
ymax1 <- max(obamadens$y)
ymax2 <- max(mccaindens$y)
ymax <- 1.1*max(ymax1,ymax2)
#
windows()
#
plot(obamadens,xlab="",ylab="",
main="",
xlim=c(-2.0,2.0),ylim=c(0,ymax),type="l",lwd=3,col="red",font=2)
lines(obamadens,lwd=3,col="blue")
lines(mccaindens,lwd=3,col="red")
#
# Main title
mtext("Aldrich-McKelvey Scaling 2008 CCES L-C Scale\nMcCain (red), Obama (blue)",side=3,line=1.50,cex=1.2,font=2)
# x-axis title
mtext("Liberal - Conservative",side=1,line=2.75,cex=1.2)
# y-axis title
mtext("Density",side=2,line=2.5,cex=1.2)
#
text(-1.5,ymax,paste("Obama Voters ",
100.0*round(obamaShare, 3),"%"),col="blue",font=2)
text(-1.5,0.9*ymax,paste("N = ",
1.0*round(length(obama.voters), 7)),col="blue",font=2)
text( 1.5,ymax,paste("McCain Voters ",
100.0*round(mccainShare, 3),"%"),col="red",font=2)
text( 1.5,0.9*ymax,paste("N = ",
1.0*round(length(mccain.voters), 7)),col="red",font=2)
#
#
#
arrows(result$stimuli[4], 0.05,result$stimuli[4],0.0,length=0.1,lwd=3,col="blue4") This is a nice way
text(result$stimuli[4],.075,"Obama",col="blue4",font=2) to show where the stimuli are
arrows(result$stimuli[5], 0.05,result$stimuli[5],0.0,length=0.1,lwd=3,col="red4")
text(result$stimuli[5],.075,"McCain",col="red4",font=2)
arrows(result$stimuli[3], 0.05,result$stimuli[3],0.0,length=0.1,lwd=3,col="red4")
text(result$stimuli[3],.10,"Bush",col="red4",font=2)
#
#
detach(data)
- Run AM_L-C_2008_CCES.r and turn in the two plots that it makes.
- Report summary(result) NEATLY FORMATTED.
- How many non-voters are there? Does this seem odd to you? Explain.
In this problem we are going to run Aldrich & McKelvey
scaling on the Urban Unrest 7 Point Scale from the
1968 NES.
Download the R program:
- Run basicspace_AM_Urban_Unrest_1968_Stata_2.r and turn in the two plots that it makes. Do the
voter plots make sense in terms of basic spatial theory? Explain.
- Report summary(result) NEATLY FORMATTED.
Modify basicspace_AM_Urban_Unrest_1968_Stata_2.r to scale the Vietnam 7 point scale. The variables
are:
T <- cbind(VAR00466,VAR00467,VAR00468,VAR00469,VAR00470)
The end points were labeled 1 = IMMEDIATE WITHDRAWAL and 7 = COMPLETE MILITARY VICTORY. Change the labels on the
plots appropriately.
- Run basicspace_AM_Vietnam_1968_2.r and turn in the two plots that it makes. Do the
voter plots make sense in terms of basic spatial theory? Explain.
- Report summary(result) NEATLY FORMATTED.
- Compare the fits of this scaling with those for the Urban Unrest Scale. Why do you suppose they are different?
Work Exercise (2) on pages 99-100 of Analyzing Spatial Models of Choice and Judgment with R. See the book website
Analyzing Spatial Models of Choice and Judgment with R for the data.
Here is an example
program:
Neatly format the display so that the labels do not overlap the histograms! Presentation matters!