# R FILE NUMBER 2 FOR "THE POLITICAL ENTROPY OF VOTE CHOICE", SUMMER 1997
# THIS FILE CONTAINS THE DATA MANIPULATION AND TRANSFORMATION WORK
# FOR BUILDING THE IDEOLOGY ENTROPY TERM WITH A PRIOR
# THE NEXT FILE IS THE MODEL FILE: entropy.model.s   

# REQUIRED FUNCTION:
uncert.wt <- function(in.vector)  {
    max.pos <- order(in.vector)[length(in.vector)]
    weight.vector <- in.vector[max.pos]
    for(i in 1:length(in.vector))  {
	if ((max.pos - i) >= 1)
	    if ((max.pos + i) <= length(in.vector))
		weight.vector <- c( weight.vector,
		    (in.vector[max.pos-i] + in.vector[max.pos+i])/2 )
	    else ( weight.vector <- c(weight.vector,in.vector[max.pos-i]) )
	else  {
	     if ((max.pos + i) <= length(in.vector))
	     	weight.vector <- c(weight.vector,in.vector[max.pos+i]) 
	}
    }
    while(length(weight.vector) < length(in.vector))
	weight.vector <- c(weight.vector,min(in.vector))
    weight.vector <- weight.vector/sum(weight.vector)
    return(weight.vector)
}

print("START OF ENTROPY HPRIME CALCULATIONS")
# LOOK AT CANDIDATE IDEOLOGY, CREATE NEW r_ij PRIOR KNOWLEDGE VARIABLE
# BARTELS: NA -> 4 (MIDDLE OF SCALE)
Dem.Certainty.Very <- NULL
Dem.Certainty.Pretty <- NULL
Dem.Certainty.Not <- NULL
Rep.Certainty.Very <- NULL
Rep.Certainty.Pretty <- NULL
Rep.Certainty.Not <- NULL
print("LOOP THROUGH DEMOCRATS")
for(i in 1:nrow(e.data2))  {
	if(e.data2[i,"Dem.Certainty"]==1)  
	    Dem.Certainty.Very<-c(Dem.Certainty.Very,e.data2[i,"Dem.Ideology"])
	if(e.data2[i,"Dem.Certainty"]==3)  {
	    Dem.Certainty.Pretty<-c(Dem.Certainty.Pretty,e.data2[i,"Dem.Ideology"])
	    e.data2[i,"Dem.Certainty"] <- 2
	}
	if(e.data2[i,"Dem.Certainty"]==5)  {
	    Dem.Certainty.Not<-c(Dem.Certainty.Not,e.data2[i,"Dem.Ideology"])
	    e.data2[i,"Dem.Certainty"] <- 3
	}
	if(e.data2[i,"Dem.Certainty"]==8)  {
	    Dem.Certainty.Not<-c(Dem.Certainty.Not,e.data2[i,"Dem.Ideology"])
	    e.data2[i,"Dem.Certainty"] <- 3
	}
}
e.data2[,"Dem.Certainty"][e.data2[,"Dem.Certainty"]==4] <- 3

print("LOOP THROUGH REPUBLICANS")
for(i in 1:nrow(e.data2))  {
	if(e.data2[i,"Rep.Certainty"]==1)
	    Rep.Certainty.Very<-c(Rep.Certainty.Very,e.data2[i,"Rep.Ideology"])
	if(e.data2[i,"Rep.Certainty"]==3)  {
	    Rep.Certainty.Pretty<-c(Rep.Certainty.Pretty,e.data2[i,"Rep.Ideology"])
	    e.data2[i,"Rep.Certainty"] <- 2
	}
	if(e.data2[i,"Rep.Certainty"]==5)  {
	    Rep.Certainty.Not<-c(Rep.Certainty.Not,e.data2[i,"Rep.Ideology"])
    	    e.data2[i,"Rep.Certainty"] <- 3
	}
	if(e.data2[i,"Rep.Certainty"]==8)  {
	    Rep.Certainty.Not<-c(Rep.Certainty.Not,e.data2[i,"Rep.Ideology"])
	    e.data2[i,"Rep.Certainty"] <- 3
	}
}
e.data2[,"Rep.Certainty"][e.data2[,"Rep.Certainty"]==4] <- 3

Prob.Dem.Certainty.Very <- table(Dem.Certainty.Very)/length(Dem.Certainty.Very)
Prob.Rep.Certainty.Very <- table(Rep.Certainty.Very)/length(Rep.Certainty.Very)
Prob.Dem.Certainty.Pretty <- table(Dem.Certainty.Pretty)/length(Dem.Certainty.Pretty)
Prob.Rep.Certainty.Pretty <- table(Rep.Certainty.Pretty)/length(Rep.Certainty.Pretty)
Prob.Dem.Certainty.Not <- table(Dem.Certainty.Not)/length(Dem.Certainty.Not)
Prob.Rep.Certainty.Not <- table(Rep.Certainty.Not)/length(Rep.Certainty.Not)

print("LIST OF IDEOLOGY PROBABILITIES BY PARTY/CERTAINTY")
Prob.list <- list(Prob.Dem.Certainty.Very, Prob.Rep.Certainty.Very,
	Prob.Dem.Certainty.Pretty, Prob.Rep.Certainty.Pretty,
	Prob.Dem.Certainty.Not, Prob.Rep.Certainty.Not)

Uncert.Dem.Certainty.Very <- uncert.wt(Prob.Dem.Certainty.Very)
Uncert.Rep.Certainty.Very <- uncert.wt(Prob.Rep.Certainty.Very)
Uncert.Dem.Certainty.Pretty <- uncert.wt(Prob.Dem.Certainty.Pretty)
Uncert.Rep.Certainty.Pretty <- uncert.wt(Prob.Rep.Certainty.Pretty)
Uncert.Dem.Certainty.Not <- uncert.wt(Prob.Dem.Certainty.Not)
Uncert.Rep.Certainty.Not <- uncert.wt(Prob.Rep.Certainty.Not)

print("LIST OF UNCERTAINTY WEIGHTS BY PARTY/CERTAINTY")
Uncert.list <- list(Uncert.Dem.Certainty.Very,Uncert.Rep.Certainty.Very,
	Uncert.Dem.Certainty.Pretty,Uncert.Rep.Certainty.Pretty,
	Uncert.Dem.Certainty.Not,Uncert.Rep.Certainty.Not)

# BUILD ENTROPY VECTOR FOR DEMOCRAT CLINTON SUPPORT
e.vector.Dem.Supp.Clt <- table(e.data2[,"Dem.Supp.Clt"][e.data2[,"Dem.Supp.Clt"] != 0])
e.vector.Dem.Supp.Clt <- e.vector.Dem.Supp.Clt/sum(e.vector.Dem.Supp.Clt)
entropy.Dem.Supp.Clt <- -sum(e.vector.Dem.Supp.Clt*log(e.vector.Dem.Supp.Clt))

# BUILD ENTROPY VECTOR FOR REPUBLICAN CLINTON SUPPORT
e.vector.Rep.Supp.Clt <- table(e.data2[,"Rep.Supp.Clt"][e.data2[,"Rep.Supp.Clt"] != 0])
e.vector.Rep.Supp.Clt <- e.vector.Rep.Supp.Clt/sum(e.vector.Rep.Supp.Clt)
entropy.Rep.Supp.Clt <- -sum(e.vector.Rep.Supp.Clt*log(e.vector.Rep.Supp.Clt))

# BUILD ENTROPY VECTOR FOR DEMOCRAT CRIME BILL
e.vector.Dem.Supp.CB <- table(e.data2[,"Dem.Vote.CB"][e.data2[,"Dem.Vote.CB"] != 0])
e.vector.Dem.Supp.CB <- e.vector.Dem.Supp.CB/sum(e.vector.Dem.Supp.CB)
entropy.Dem.Supp.CB <- -sum(e.vector.Dem.Supp.CB*log(e.vector.Dem.Supp.CB))

# BUILD ENTROPY VECTOR FOR REPUBLICAN CRIME BILL
e.vector.Rep.Supp.CB <- table(e.data2[,"Rep.Vote.CB"][e.data2[,"Rep.Vote.CB"] != 0])
e.vector.Rep.Supp.CB <- e.vector.Rep.Supp.CB/sum(e.vector.Rep.Supp.CB)
entropy.Rep.Supp.CB <- -sum(e.vector.Rep.Supp.CB*log(e.vector.Rep.Supp.CB))

# BUILD ENTROPY VECTOR FOR DEMOCRAT GOVERNMENT HELP WITH JOB CREATION
e.vector.Dem.Gvt.Help <- table(e.data2[,"Dem.Gvt.Help"][e.data2[,"Dem.Gvt.Help"] != 0])
e.vector.Dem.Gvt.Help <- e.vector.Dem.Gvt.Help/sum(e.vector.Dem.Gvt.Help)
entropy.Dem.Gvt.Help <- -sum(e.vector.Dem.Gvt.Help*log(e.vector.Dem.Gvt.Help))

# BUILD ENTROPY VECTOR FOR REPUBLICAN GOVERNMENT HELP WITH JOB CREATION
e.vector.Rep.Gvt.Help <- table(e.data2[,"Rep.Gvt.Help"][e.data2[,"Rep.Gvt.Help"] != 0])
e.vector.Rep.Gvt.Help <- e.vector.Rep.Gvt.Help/sum(e.vector.Rep.Gvt.Help)
entropy.Rep.Gvt.Help <- -sum(e.vector.Rep.Gvt.Help*log(e.vector.Rep.Gvt.Help))

# BUILD ENTROPY VECTOR FOR DEMOCRAT GOVERNMENT SPENDING
e.vector.Dem.Gvt.Spend <- table(e.data2[,"Dem.Gvt.Spend"][e.data2[,"Dem.Gvt.Spend"] != 0])
e.vector.Dem.Gvt.Spend <- e.vector.Dem.Gvt.Spend/sum(e.vector.Dem.Gvt.Spend)
entropy.Dem.Gvt.Spend <- -sum(e.vector.Dem.Gvt.Spend*log(e.vector.Dem.Gvt.Spend))

# BUILD ENTROPY VECTOR FOR REPUBLICAN GOVERNMENT SPENDING
e.vector.Rep.Gvt.Spend <- table(e.data2[,"Rep.Gvt.Spend"][e.data2[,"Rep.Gvt.Spend"] != 0])
e.vector.Rep.Gvt.Spend <- e.vector.Rep.Gvt.Spend/sum(e.vector.Rep.Gvt.Spend)
entropy.Rep.Gvt.Spend <- -sum(e.vector.Rep.Gvt.Spend*log(e.vector.Rep.Gvt.Spend))

# BUILD ENTROPY VECTOR FOR DEMOCRAT FEDERAL HEALTHCARE 
e.vector.Dem.Fed.Health <- table(e.data2[,"Dem.Fed.Health"][e.data2[,"Dem.Fed.Health"] != 0])
e.vector.Dem.Fed.Health <- e.vector.Dem.Fed.Health/sum(e.vector.Dem.Fed.Health)
entropy.Dem.Fed.Health <- -sum(e.vector.Dem.Fed.Health*log(e.vector.Dem.Fed.Health))

# BUILD ENTROPY VECTOR FOR REPUBLICAN FEDERAL HEALTHCARE
e.vector.Rep.Fed.Health <- table(e.data2[,"Rep.Fed.Health"][e.data2[,"Rep.Fed.Health"] != 0])
e.vector.Rep.Fed.Health <- e.vector.Rep.Fed.Health/sum(e.vector.Rep.Fed.Health)
entropy.Rep.Fed.Health <- -sum(e.vector.Rep.Fed.Health*log(e.vector.Rep.Fed.Health))

print("NOW BUILDING THE IDEOLOGY ENTROPY TERM WITHOUT A PRIOR")
e.data2 <- cbind(e.data2,e.data2[,"Ideology"],e.data2[,"Dem.Ideology"], e.data2[,"Rep.Ideology"])
nc <- ncol(e.data2)
dimnames(e.data2)[[2]][(nc-2):(nc)] <- c("NP.Ideology","NP.Dem.Ideology","NP.Rep.Ideology")

# ADJUST RESPONDENT IDEOLOGY
e.data2[,"NP.Ideology"][e.data2[,"NP.Ideology"]==8] <- 4

# DON'T KNOWS TURNED INTO 4s
e.data2[,"NP.Dem.Ideology"][e.data2[,"NP.Dem.Ideology"]==8] <- 4

# DON'T KNOWS TURNED INTO 4s
e.data2[,"NP.Rep.Ideology"][e.data2[,"NP.Rep.Ideology"]==8] <- 4

# BUILD ENTROPY VECTOR FOR DEMOCRAT NO PRIOR IDEOLOGY
e.vector.Dem.NP.Ideology <- table(e.data2[,"NP.Dem.Ideology"][e.data2[,"NP.Dem.Ideology"] != 0])
e.vector.Dem.NP.Ideology <- e.vector.Dem.NP.Ideology/sum(e.vector.Dem.NP.Ideology)
entropy.Dem.NP.Ideology <- -sum(e.vector.Dem.NP.Ideology*log(e.vector.Dem.NP.Ideology))

# BUILD ENTROPY VECTOR FOR REPUBLICAN NO PRIOR IDEOLOGY
e.vector.Rep.NP.Ideology <- table(e.data2[,"NP.Rep.Ideology"][e.data2[,"NP.Rep.Ideology"] != 0])
e.vector.Rep.NP.Ideology <- e.vector.Rep.NP.Ideology/sum(e.vector.Rep.NP.Ideology)
entropy.Rep.NP.Ideology <- -sum(e.vector.Rep.NP.Ideology*log(e.vector.Rep.NP.Ideology))



