# # # # basicspace_blackbox.r -- Does BASIC SPACE SCALING ON 1980 ISSUE SCALES # # # &&&&&&&&& STIMULI -- 14 ISSUE SCALES FROM 1980 NES &&&&&&&& # # 'LIBERAL/CONSERVATIVE ' VAR0267 # 'DEFENSE ' VAR0281 # 'GOVT SERVICES ' VAR0291 # 'INFLATION ' VAR0301 # 'ABORTION ' VAR0311 # 'TAX CUTS ' VAR0323 # 'LIBERAL/CONSERVATIVE ' VAR1037 # 'GOVT HELP MINORITIES ' VAR1062 # 'RUSSIA ' VAR1078 # 'WOMENS EQUAL ROLE ' VAR1094 # 'GOVT JOBS ' VAR1110 # 'EQUAL RIGHTS AMEND ' VAR1127 # 'BUSING ' VAR1133 # 'ABORTION ' VAR1136 # # # rm(list=ls(all=TRUE)) # library(MASS) library(foreign) library(basicspace) setwd("c:/uga_course_homework_3_2015/") data <- read.dta("c:/uga_course_homework_3_2015/nes1980_first_11.dta") #data <- read.dta("nes1980_first.dta") attach(data,warn.conflicts = FALSE) # T <- cbind(VAR0267,VAR0281,VAR0291,VAR0301,VAR0311,VAR0323,VAR1037,VAR1062,VAR1078, VAR1094,VAR1110,VAR1127,VAR1133,VAR1136) # # RECODE TWO ABORTION QUESTIONS THAT ARE 4-POINT SCALES T[T[,5]==7,5] <- 8 T[T[,14]==7,14] <- 8 TT <- T mode(TT) <- "double" colnames(TT) <- c("lib-consv1","def-spend","govt-serv","inflation", "abortion1","tax-cuts","lib-consv2","govt-help-min","russia", "womens-eq-role","govt-jobs","ERA","busing","abortion2") # #> dim(TT) #[1] 1614 14 # table(TT[,5]) # # 1 2 3 4 8 9 # 178 506 294 569 57 10 # # table(TT[,13]) # # 0 1 2 3 4 5 6 7 8 9 # 81 49 37 39 80 73 230 795 19 211 # # result <- blackbox(TT,missing=c(0,8,9),dims=3,minscale=8,verbose=F) # # # ---- Useful Commands To See What is in an Object # # > length(result) # [1] 9 # > class(result) # [1] "blackbox" # > names(result) # [1] "stimuli" "individuals" "fits" "Nrow" "Ncol" # [6] "Ndata" "Nmiss" "SS_mean" "dims" # > summary(result) -- shows everything # # SSE SSE.explained percent SE singular # Dimension 1 25703.68 27001.45 51.231166 1.356291 111.56085 # Dimension 2 20521.54 32183.59 9.832316 1.271719 78.52109 # Dimension 3 16899.33 35805.80 6.872598 1.217271 70.67879 # # # &&&&&&&&&&&&& DO ONE DIMENSIONAL PLOT BELOW FIRST BASIC DIMENSION &&&&&&&&&&&&&&&& # yy <- as.matrix(result$individuals[[1]]) NOTVOTE <- cbind(VAR0988) # 1004 1. YES, DID VOTE # 403 5. NO, DID NOT VOTE # 6. R REFUSES TO SAY WHETHER VOTED # 7. NOT OLD ENOUGH # # 1 8. DK # 206 9. NA; NO POST ELECTION INTERVIEW # table(NOTVOTE) # NOTVOTE # 1 5 8 9 # 1004 403 1 206 # # VOTE <- cbind(VAR0994) # # 494 1. REAGAN # 383 2. CARTER # 10 5. CLARK # 81 6. ANDERSON # 4 7. OTHER, SPECIFY # # 618 0. INAP., CODED 5, 7-9 IN Q.L1; CODED 5, 8-9 IN # 16 8. DK; REFUSES TO NAME CANDIDATE # 8 9. NA # table(VOTE) # VOTE # 0 1 2 5 6 7 8 9 # 618 494 383 10 81 4 16 8 # zz <- c(yy,VOTE,NOTVOTE) dim(zz) <- c(length(yy),3) # # change sign so negative is Left # reagan.voters <- -zz[zz[,1]!=0.0 & zz[,2]==1,1] carter.voters <- -zz[zz[,1]!=0.0 & zz[,2]==2,1] anderson.voters <- -zz[zz[,1]!=0.0 & zz[,2]==6,1] non.voters <- -zz[zz[,1]!=0.0 & zz[,3]==5,1] reaganShare <- length(reagan.voters)/(length(reagan.voters)+length(carter.voters)+length(anderson.voters)+length(non.voters)) carterShare <- length(carter.voters)/(length(reagan.voters)+length(carter.voters)+length(anderson.voters)+length(non.voters)) andersonShare <- length(anderson.voters)/(length(reagan.voters)+length(carter.voters)+length(anderson.voters)+length(non.voters)) nonShare <- length(non.voters)/(length(reagan.voters)+length(carter.voters)+length(anderson.voters)+length(non.voters)) # rvdens <- density(reagan.voters,na.rm=TRUE) rvdens$y <- rvdens$y*reaganShare # cvdens <- density(carter.voters,na.rm=TRUE) cvdens$y <- cvdens$y*carterShare # avdens <- density(anderson.voters,na.rm=TRUE) avdens$y <- avdens$y*andersonShare # nvdens <- density(non.voters,na.rm=TRUE) nvdens$y <- nvdens$y*nonShare # ymax1 <- max(rvdens$y) ymax2 <- max(cvdens$y) ymax3 <- max(avdens$y) ymax4 <- max(nvdens$y) ymax <- 1.1*max(ymax1,ymax2,ymax3,ymax4) # windows() # plot(rvdens,xlab="",ylab="", main="", xlim=c(-1.0,1.0),ylim=c(0,ymax),font=2) lines(rvdens,lwd=3,col="blue") lines(cvdens,lwd=3,col="red") lines(avdens,lwd=3,col="purple") lines(nvdens,lwd=3,col="black") # # # Main title mtext("Basic Space Scaling: Reagan (blue), Carter (red)\nAnderson (purple), non-Voters (black)",side=3,line=1.50,cex=1.2,font=2) # x-axis title mtext("Liberal-Conservative Dimension",side=1,line=2.75,cex=1.2) # y-axis title mtext("Density",side=2,line=2.5,cex=1.2) # # # &&&&&&&&&&&&& DO TWO DIMENSIONAL PLOT BELOW FIRST AND SECOND BASIC DIMENSIONS &&&&&&&&&&&&&&&& # nresp <- length(yy) yy <- as.matrix(result$individuals[[2]]) # flip sign on first dimension yy[,1] <- -yy[,1] zz <- c(yy,VOTE,NOTVOTE) dim(zz) <- c(nresp,4) # windows() plot(zz[,1],zz[,2],type="n",asp=1, main="", xlab="", ylab="", xlim=c(-1.0,1.0),ylim=c(-1.0,1.0),cex=1.2,font=2) # # Main title mtext("Basic Space Scaling Two Dimensions\nReagan (blue), Carter (red)",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("Social/Lifestyle Issues",side=2,line=2.5,cex=1.2) # points(zz[zz[,3] == 1,1],zz[zz[,3] == 1,2],pch='R',col="blue",font=2) points(zz[zz[,3] == 2,1],zz[zz[,3] == 2,2],pch='C',col="red",font=2) # detach(data)