*** Replication files: calculating indices for:
*** Markus Wagner (2020), Affective polarization in multiparty sytems, Electoral Studies
*** Link: https://www.sciencedirect.com/science/article/pii/S0261379420300822
*** Do-File: Markus Wagner & Nikolaus Kowarz, University of Vienna 
*** In case of questions or corrections, contact markus.wagner@univie.ac.at
*** Date: 20/12/2020

*** This do-file calculates the four indices mentioned in the article: weighted and unweighted spread of scores and mean distance.
*** It does for the IMD dataset and then each dataset separately.
*** Presidential vote shares are taken where parliamentary vote shares not available.


*** Global working directory 
global DATADIR "..\affectivepolarization" // replace with your working directory
cd "$DATADIR"

********************** Comparative Study of Electoral Systems (CSES) *****************************


**********************************************************
************************ IMD  ************************
**********************************************************

use "cses_imd.dta", clear

recode IMD5001_A-IMD5001_I (0=.) (70/.=.) // missing values lower house election vote shares
recode IMD3008_A-IMD3008_I (11/.=.) // missing values like-dislike scores
recode IMD5003_A-IMD5003_I (0=.) (70/.=.) // missing values upper house vote shares
recode IMD5005_A-IMD5005_I (0=.) (70/.=.) // missing values presidential vote shares



replace IMD5001_A=IMD5005_A if IMD5001_A==.&IMD5005_A!=.  // replace lower house scores with presidential scores where relevant
replace IMD5001_B=IMD5005_B if IMD5001_B==.&IMD5005_B!=.
replace IMD5001_C=IMD5005_C if IMD5001_C==.&IMD5005_C!=.
replace IMD5001_D=IMD5005_D if IMD5001_D==.&IMD5005_D!=.
replace IMD5001_E=IMD5005_E if IMD5001_E==.&IMD5005_E!=.
replace IMD5001_F=IMD5005_F if IMD5001_F==.&IMD5005_F!=.
replace IMD5001_G=IMD5005_G if IMD5001_G==.&IMD5005_G!=.
replace IMD5001_H=IMD5005_H if IMD5001_H==.&IMD5005_H!=.
replace IMD5001_I=IMD5005_I if IMD5001_I==.&IMD5005_I!=.


egen partynumber=rownonmiss(IMD3008_A-IMD3008_I)
egen votenumber=rownonmiss(IMD5001_A-IMD5001_I) 
gen completeA=(IMD3008_A!=.&IMD5001_A!=.)
gen completeB=(IMD3008_B!=.&IMD5001_B!=.)
gen completeC=(IMD3008_C!=.&IMD5001_C!=.)
gen completeD=(IMD3008_D!=.&IMD5001_D!=.)
gen completeE=(IMD3008_E!=.&IMD5001_E!=.)
gen completeF=(IMD3008_F!=.&IMD5001_F!=.)
gen completeG=(IMD3008_G!=.&IMD5001_H!=.)
gen completeH=(IMD3008_H!=.&IMD5001_G!=.)
gen completeI=(IMD3008_I!=.&IMD5001_I!=.)

egen completenumber=rowtotal(completeA-completeI) if votenumber!=0&partynumber!=0
replace completenumber=0 if partynumber==0
replace completenumber=0 if votenumber==0

*** Aff pol

egen meanlike=rowmean(IMD3008_A-IMD3008_I)

gen affpolA=(IMD3008_A-meanlike)^2
gen affpolB=(IMD3008_B-meanlike)^2
gen affpolC=(IMD3008_C-meanlike)^2 
gen affpolD=(IMD3008_D-meanlike)^2 
gen affpolE=(IMD3008_E-meanlike)^2 
gen affpolF=(IMD3008_F-meanlike)^2 
gen affpolG=(IMD3008_G-meanlike)^2 
gen affpolH=(IMD3008_H-meanlike)^2 
gen affpolI=(IMD3008_I-meanlike)^2 



egen sumaffpol=rowtotal(affpolA-affpolI) if partynumber!=0
gen affpol=sqrt(sumaffpol/partynumber)


***** WEIGHTED

*** Correct vote shares
egen sumvotes=rowtotal(IMD5001_A-IMD5001_I) if votenumber!=0
replace sumvotes=sumvotes-IMD5001_A if completeA!=1&IMD5001_A!=.
replace sumvotes=sumvotes-IMD5001_B if completeB!=1&IMD5001_B!=.
replace sumvotes=sumvotes-IMD5001_C if completeC!=1&IMD5001_C!=.
replace sumvotes=sumvotes-IMD5001_D if completeD!=1&IMD5001_D!=.
replace sumvotes=sumvotes-IMD5001_E if completeE!=1&IMD5001_E!=.
replace sumvotes=sumvotes-IMD5001_F if completeF!=1&IMD5001_F!=.
replace sumvotes=sumvotes-IMD5001_G if completeG!=1&IMD5001_G!=.
replace sumvotes=sumvotes-IMD5001_H if completeH!=1&IMD5001_H!=.
replace sumvotes=sumvotes-IMD5001_I if completeI!=1&IMD5001_I!=.
gen voteA=IMD5001_A/sumvotes 
gen voteB=IMD5001_B/sumvotes 
gen voteC=IMD5001_C/sumvotes 
gen voteD=IMD5001_D/sumvotes 
gen voteE=IMD5001_E/sumvotes 
gen voteF=IMD5001_F/sumvotes 
gen voteG=IMD5001_G/sumvotes 
gen voteH=IMD5001_H/sumvotes 
gen voteI=IMD5001_I/sumvotes 

*** check
egen allvotes=rowtotal(voteA-voteI)

gen helpA=voteA*IMD3008_A
gen helpB=voteB*IMD3008_B
gen helpC=voteC*IMD3008_C
gen helpD=voteD*IMD3008_D
gen helpE=voteE*IMD3008_E
gen helpF=voteF*IMD3008_F
gen helpG=voteG*IMD3008_G
gen helpH=voteH*IMD3008_H
gen helpI=voteI*IMD3008_I

egen weightedmeanlike=rowtotal(helpA-helpI)  if completenumber!=0

gen affpolAwgt=voteA*((IMD3008_A-weightedmeanlike)^2)
gen affpolBwgt=voteB*((IMD3008_B-weightedmeanlike)^2)
gen affpolCwgt=voteC*((IMD3008_C-weightedmeanlike)^2) 
gen affpolDwgt=voteD*((IMD3008_D-weightedmeanlike)^2)
gen affpolEwgt=voteE*((IMD3008_E-weightedmeanlike)^2)
gen affpolFwgt=voteF*((IMD3008_F-weightedmeanlike)^2)
gen affpolGwgt=voteG*((IMD3008_G-weightedmeanlike)^2)
gen affpolHwgt=voteH*((IMD3008_H-weightedmeanlike)^2)
gen affpolIwgt=voteI*((IMD3008_I-weightedmeanlike)^2)

egen affpolwgt=rowtotal(affpolAwgt-affpolIwgt) if completenumber!=0
replace affpolwgt=sqrt(affpolwgt)
replace affpolwgt=. if completenumber==1



*** Distance from most liked party
egen maxlike_help=rowmax(IMD3008_A-IMD3008_I)

gen likedistA=(IMD3008_A-maxlike_help)^2
gen likedistB=(IMD3008_B-maxlike_help)^2
gen likedistC=(IMD3008_C-maxlike_help)^2 
gen likedistD=(IMD3008_D-maxlike_help)^2 
gen likedistE=(IMD3008_E-maxlike_help)^2 
gen likedistF=(IMD3008_F-maxlike_help)^2 
gen likedistG=(IMD3008_G-maxlike_help)^2 
gen likedistH=(IMD3008_H-maxlike_help)^2 
gen likedistI=(IMD3008_I-maxlike_help)^2 



egen sumlikedist=rowtotal(likedistA-likedistI) if partynumber!=0
gen likedistpol=sqrt(sumlikedist/(partynumber-1)) if maxlike_help!=.


***** WEIGHTED

*** Correct vote shares
gen maxA=(likedistA==0)
gen maxB=(likedistB==0)
gen maxC=(likedistC==0)
gen maxD=(likedistD==0)
gen maxE=(likedistE==0)
gen maxF=(likedistF==0)
gen maxG=(likedistG==0)
gen maxH=(likedistH==0)
gen maxI=(likedistI==0)
egen countmax=rowtotal(maxA-maxI)
replace voteA=0 if maxA==1&countmax==1
replace voteB=0 if maxB==1&countmax==1
replace voteC=0 if maxC==1&countmax==1
replace voteD=0 if maxD==1&countmax==1
replace voteE=0 if maxE==1&countmax==1
replace voteF=0 if maxF==1&countmax==1
replace voteG=0 if maxG==1&countmax==1
replace voteH=0 if maxH==1&countmax==1
replace voteI=0 if maxI==1&countmax==1


forvalues x=2(1)9 {
replace voteA=voteA/`x' if maxA==1&countmax==`x'
replace voteB=voteB/`x'  if maxB==1&countmax==`x'
replace voteC=voteC/`x'  if maxC==1&countmax==`x'
replace voteD=voteD/`x'  if maxD==1&countmax==`x'
replace voteE=voteE/`x'  if maxE==1&countmax==`x'
replace voteF=voteF/`x'  if maxF==1&countmax==`x'
replace voteG=voteG/`x'  if maxG==1&countmax==`x'
replace voteH=voteH/`x'  if maxH==1&countmax==`x'
replace voteI=voteI/`x'  if maxI==1&countmax==`x'
}

egen sumvotesnew=rowtotal(voteA-voteI)
replace voteA=voteA/sumvotesnew 
replace voteB=voteB/sumvotesnew
replace voteC=voteC/sumvotesnew 
replace voteD=voteD/sumvotesnew 
replace voteE=voteE/sumvotesnew  
replace voteF=voteF/sumvotesnew  
replace voteG=voteG/sumvotesnew  
replace voteH=voteH/sumvotesnew  
replace voteI=voteI/sumvotesnew  

gen likedistAwgt=voteA*((IMD3008_A-maxlike_help)^2) 
gen likedistBwgt=voteB*((IMD3008_B-maxlike_help)^2) 
gen likedistCwgt=voteC*((IMD3008_C-maxlike_help)^2)
gen likedistDwgt=voteD*((IMD3008_D-maxlike_help)^2) 
gen likedistEwgt=voteE*((IMD3008_E-maxlike_help)^2) 
gen likedistFwgt=voteF*((IMD3008_F-maxlike_help)^2) 
gen likedistGwgt=voteG*((IMD3008_G-maxlike_help)^2) 
gen likedistHwgt=voteH*((IMD3008_H-maxlike_help)^2) 
gen likedistIwgt=voteI*((IMD3008_I-maxlike_help)^2) 

egen likedistwgt=rowtotal(likedistAwgt-likedistIwgt) if completenumber!=0
replace likedistwgt=sqrt(likedistwgt)
replace likedistwgt=. if completenumber==1


drop completeA- sumaffpol sumvotes- affpolIwgt
drop maxlike_help- sumlikedist
drop maxA- likedistIwgt

save "csesimd_affpol.dta", replace

**********************************************************
************************ Module 1 ************************
**********************************************************

use "cses1.dta", clear // CSES module 1 

drop if A1004=="BLR_2001" // No vote share data from BLR

recode A5005_A-A5005_F (0=.) (70/.=.) // Percent vote- Lower House; missing values 
recode A3020_A-A3020_F (11/.=.) // Like-dislike party; missing values
recode A5009_A-A5009_F (0=.) (70/.=.) // Percent vote - Presidental election vote share; missing values 
replace A5005_A=A5009_A if A5005_A==.&A5009_A!=. // For LTU; BLR; CHL; RUS: presidential election vote share
replace A5005_B=A5009_B if A5005_B==.&A5009_B!=.
replace A5005_C=A5009_C if A5005_C==.&A5009_C!=.
replace A5005_D=A5009_D if A5005_D==.&A5009_D!=.
replace A5005_E=A5009_E if A5005_E==.&A5009_E!=.
replace A5005_F=A5009_F if A5005_F==.&A5009_F!=.
egen partynumber=rownonmiss(A3020_A-A3020_F)
egen votenumber=rownonmiss(A5005_A-A5005_F) 
gen completeA=(A3020_A!=.&A5005_A!=.)
gen completeB=(A3020_B!=.&A5005_B!=.)
gen completeC=(A3020_C!=.&A5005_C!=.)
gen completeD=(A3020_D!=.&A5005_D!=.)
gen completeE=(A3020_E!=.&A5005_E!=.)
gen completeF=(A3020_F!=.&A5005_F!=.)
egen completenumber=rowtotal(completeA-completeF) if votenumber!=0&partynumber!=0
replace completenumber=0 if partynumber==0
replace completenumber=0 if votenumber==0

*** Aff pol

egen meanlike=rowmean(A3020_A-A3020_F) // generate meanlike variable; mean like-dislike variables

gen affpolA=(A3020_A-meanlike)^2 // generate affective polarization variables 
gen affpolB=(A3020_B-meanlike)^2
gen affpolC=(A3020_C-meanlike)^2 
gen affpolD=(A3020_D-meanlike)^2 
gen affpolE=(A3020_E-meanlike)^2 
gen affpolF=(A3020_F-meanlike)^2 

egen sumaffpol=rowtotal(affpolA-affpolF) if partynumber!=0
gen affpol=sqrt(sumaffpol/partynumber)


***** WEIGHTED

*** Correct vote shares
egen sumvotes=rowtotal(A5005_A-A5005_F) if votenumber!=0
replace sumvotes=sumvotes-A5005_A if completeA!=1&A5005_A!=.
replace sumvotes=sumvotes-A5005_B if completeB!=1&A5005_B!=.
replace sumvotes=sumvotes-A5005_C if completeC!=1&A5005_C!=.
replace sumvotes=sumvotes-A5005_D if completeD!=1&A5005_D!=.
replace sumvotes=sumvotes-A5005_E if completeE!=1&A5005_E!=.
replace sumvotes=sumvotes-A5005_F if completeF!=1&A5005_F!=.
gen voteA=A5005_A/sumvotes 
gen voteB=A5005_B/sumvotes 
gen voteC=A5005_C/sumvotes 
gen voteD=A5005_D/sumvotes 
gen voteE=A5005_E/sumvotes 
gen voteF=A5005_F/sumvotes 

*** check
egen allvotes=rowtotal(voteA-voteF)

gen helpA=voteA*A3020_A
gen helpB=voteB*A3020_B
gen helpC=voteC*A3020_C
gen helpD=voteD*A3020_D
gen helpE=voteE*A3020_E
gen helpF=voteF*A3020_F

egen weightedmeanlike=rowtotal(helpA-helpF)  if completenumber!=0

gen affpolAwgt=voteA*((A3020_A-weightedmeanlike)^2)
gen affpolBwgt=voteB*((A3020_B-weightedmeanlike)^2)
gen affpolCwgt=voteC*((A3020_C-weightedmeanlike)^2) 
gen affpolDwgt=voteD*((A3020_D-weightedmeanlike)^2)
gen affpolEwgt=voteE*((A3020_E-weightedmeanlike)^2)
gen affpolFwgt=voteF*((A3020_F-weightedmeanlike)^2)

egen affpolwgt=rowtotal(affpolAwgt-affpolFwgt) if completenumber!=0
replace affpolwgt=sqrt(affpolwgt)
replace affpolwgt=. if completenumber==1



*** Distance from most liked party
egen maxlike_help=rowmax(A3020_A-A3020_F) // generate maxlike_help --> max liked party   

gen likedistA=(A3020_A-maxlike_help)^2 // squared distance from most liked party
gen likedistB=(A3020_B-maxlike_help)^2
gen likedistC=(A3020_C-maxlike_help)^2 
gen likedistD=(A3020_D-maxlike_help)^2 
gen likedistE=(A3020_E-maxlike_help)^2 
gen likedistF=(A3020_F-maxlike_help)^2 


egen sumlikedist=rowtotal(likedistA-likedistF) if partynumber!=0
gen likedistpol=sqrt(sumlikedist/(partynumber-1)) if maxlike_help!=.

***** WEIGHTED

*** Correct vote shares
gen maxA=(likedistA==0)
gen maxB=(likedistB==0)
gen maxC=(likedistC==0)
gen maxD=(likedistD==0)
gen maxE=(likedistE==0)
gen maxF=(likedistF==0)
egen countmax=rowtotal(maxA-maxF)
replace voteA=0 if maxA==1&countmax==1
replace voteB=0 if maxB==1&countmax==1
replace voteC=0 if maxC==1&countmax==1
replace voteD=0 if maxD==1&countmax==1
replace voteE=0 if maxE==1&countmax==1
replace voteF=0 if maxF==1&countmax==1
forvalues x=2(1)6 {
replace voteA=voteA/`x' if maxA==1&countmax==`x'
replace voteB=voteB/`x'  if maxB==1&countmax==`x'
replace voteC=voteC/`x'  if maxC==1&countmax==`x'
replace voteD=voteD/`x'  if maxD==1&countmax==`x'
replace voteE=voteE/`x'  if maxE==1&countmax==`x'
replace voteF=voteF/`x'  if maxF==1&countmax==`x'
}
egen sumvotesnew=rowtotal(voteA-voteF)
replace voteA=voteA/sumvotesnew 
replace voteB=voteB/sumvotesnew
replace voteC=voteC/sumvotesnew 
replace voteD=voteD/sumvotesnew 
replace voteE=voteE/sumvotesnew  
replace voteF=voteF/sumvotesnew  

gen likedistAwgt=voteA*((A3020_A-maxlike_help)^2) 
gen likedistBwgt=voteB*((A3020_B-maxlike_help)^2) 
gen likedistCwgt=voteC*((A3020_C-maxlike_help)^2)
gen likedistDwgt=voteD*((A3020_D-maxlike_help)^2) 
gen likedistEwgt=voteE*((A3020_E-maxlike_help)^2) 
gen likedistFwgt=voteF*((A3020_F-maxlike_help)^2) 

egen likedistwgt=rowtotal(likedistAwgt-likedistFwgt) if completenumber!=0

replace likedistwgt=sqrt(likedistwgt)
replace likedistwgt=. if completenumber==1

drop completeA- sumaffpol sumvotes- affpolFwgt
drop maxlike_help- sumlikedist
drop maxA- likedistFwgt

save "cses1_affpol.dta", replace

**********************************************************
************************ Module 2 ************************
**********************************************************

use "cses2.dta", clear // load data 

drop if B1004=="KGZ_2005" // drop b/c parties not clear

recode B5001_A-B5001_I (0=.) (70/.=.) // lower house vote share; missing values 
recode B5003_A-B5003_I (0=.) (90/.=.) // upper house vote share; missing values
recode B5005_A-B5005_I (0=.) (90/.=.) // presidential election vote share; missing values
recode  B3037_A- B3037_I (11/.=.)
replace B5001_A=B5003_A if B5001_A==.&B5003_A!=.  // FOR JAPAN
replace B5001_B=B5003_B if B5001_B==.&B5003_B!=.
replace B5001_C=B5003_C if B5001_C==.&B5003_C!=.
replace B5001_D=B5003_D if B5001_D==.&B5003_D!=.
replace B5001_E=B5003_E if B5001_E==.&B5003_E!=.
replace B5001_F=B5003_F if B5001_F==.&B5003_F!=.
replace B5001_G=B5003_G if B5001_G==.&B5003_G!=.
replace B5001_H=B5003_H if B5001_H==.&B5003_H!=.
replace B5001_I=B5003_I if B5001_I==.&B5003_I!=.

replace B5001_A=B5005_A if B5001_A==.&B5005_A!=.  // France, KGZ, PHL, RUS; TWN
replace B5001_B=B5005_B if B5001_B==.&B5005_B!=.
replace B5001_C=B5005_C if B5001_C==.&B5005_C!=.
replace B5001_D=B5005_D if B5001_D==.&B5005_D!=.
replace B5001_E=B5005_E if B5001_E==.&B5005_E!=.
replace B5001_F=B5005_F if B5001_F==.&B5005_F!=.
replace B5001_G=B5005_G if B5001_G==.&B5005_G!=.
replace B5001_H=B5005_H if B5001_H==.&B5005_H!=.
replace B5001_I=B5005_I if B5001_I==.&B5005_I!=.

egen partynumber=rownonmiss( B3037_A- B3037_F) 
egen votenumber=rownonmiss(B5001_A-B5001_F) 
gen completeA=( B3037_A!=.&B5001_A!=.)
gen completeB=( B3037_B!=.&B5001_B!=.)
gen completeC=( B3037_C!=.&B5001_C!=.)
gen completeD=( B3037_D!=.&B5001_D!=.)
gen completeE=( B3037_E!=.&B5001_E!=.)
gen completeF=( B3037_F!=.&B5001_F!=.)
gen completeG=( B3037_G!=.&B5001_G!=.)
gen completeH=( B3037_H!=.&B5001_H!=.)
gen completeI=( B3037_I!=.&B5001_I!=.)

egen completenumber=rowtotal(completeA-completeI) if votenumber!=0&partynumber!=0
replace completenumber=0 if partynumber==0
replace completenumber=0 if votenumber==0

*** Aff pol

egen meanlike=rowmean( B3037_A- B3037_I) // generate meanlike variable; mean like-dislike variables 

gen affpolA=( B3037_A-meanlike)^2 // generate affective polarization variables; difference like-dislike and meanlike 
gen affpolB=( B3037_B-meanlike)^2
gen affpolC=( B3037_C-meanlike)^2 
gen affpolD=( B3037_D-meanlike)^2 
gen affpolE=( B3037_E-meanlike)^2 
gen affpolF=( B3037_F-meanlike)^2 
gen affpolG=( B3037_G-meanlike)^2 
gen affpolH=( B3037_H-meanlike)^2 
gen affpolI=( B3037_I-meanlike)^2 


egen sumaffpol=rowtotal(affpolA-affpolI) if partynumber!=0
gen affpol=sqrt(sumaffpol/partynumber)


***** WEIGHTED

*** Correct vote shares
egen sumvotes=rowtotal(B5001_A-B5001_I) if votenumber!=0
replace sumvotes=sumvotes-B5001_A if completeA!=1&B5001_A!=.
replace sumvotes=sumvotes-B5001_B if completeB!=1&B5001_B!=.
replace sumvotes=sumvotes-B5001_C if completeC!=1&B5001_C!=.
replace sumvotes=sumvotes-B5001_D if completeD!=1&B5001_D!=.
replace sumvotes=sumvotes-B5001_E if completeE!=1&B5001_E!=.
replace sumvotes=sumvotes-B5001_F if completeF!=1&B5001_F!=.
replace sumvotes=sumvotes-B5001_G if completeG!=1&B5001_G!=.
replace sumvotes=sumvotes-B5001_H if completeH!=1&B5001_H!=.
replace sumvotes=sumvotes-B5001_I if completeI!=1&B5001_I!=.

gen voteA=B5001_A/sumvotes 
gen voteB=B5001_B/sumvotes 
gen voteC=B5001_C/sumvotes 
gen voteD=B5001_D/sumvotes 
gen voteE=B5001_E/sumvotes 
gen voteF=B5001_F/sumvotes 
gen voteG=B5001_G/sumvotes 
gen voteH=B5001_H/sumvotes 
gen voteI=B5001_I/sumvotes 

*** check
egen allvotes=rowtotal(voteA-voteI)

gen helpA=voteA* B3037_A
gen helpB=voteB* B3037_B
gen helpC=voteC* B3037_C
gen helpD=voteD* B3037_D
gen helpE=voteE* B3037_E
gen helpF=voteF* B3037_F
gen helpG=voteG* B3037_G
gen helpH=voteH* B3037_H
gen helpI=voteI* B3037_I


egen weightedmeanlike=rowtotal(helpA-helpI)  if completenumber!=0

gen affpolAwgt=voteA*(( B3037_A-weightedmeanlike)^2)
gen affpolBwgt=voteB*(( B3037_B-weightedmeanlike)^2)
gen affpolCwgt=voteC*(( B3037_C-weightedmeanlike)^2) 
gen affpolDwgt=voteD*(( B3037_D-weightedmeanlike)^2)
gen affpolEwgt=voteE*(( B3037_E-weightedmeanlike)^2)
gen affpolFwgt=voteF*(( B3037_F-weightedmeanlike)^2)
gen affpolGwgt=voteG*(( B3037_G-weightedmeanlike)^2)
gen affpolHwgt=voteH*(( B3037_H-weightedmeanlike)^2)
gen affpolIwgt=voteI*(( B3037_I-weightedmeanlike)^2)

egen affpolwgt=rowtotal(affpolAwgt-affpolIwgt) if completenumber!=0
replace affpolwgt=sqrt(affpolwgt)
replace affpolwgt=. if completenumber==1



*** Distance from most liked party
egen maxlike_help=rowmax( B3037_A- B3037_I) // generate maxlike variable; most liked party

gen likedistA=( B3037_A-maxlike_help)^2 // generate likedist variables; distance from most likes party
gen likedistB=( B3037_B-maxlike_help)^2
gen likedistC=( B3037_C-maxlike_help)^2 
gen likedistD=( B3037_D-maxlike_help)^2 
gen likedistE=( B3037_E-maxlike_help)^2 
gen likedistF=( B3037_F-maxlike_help)^2 
gen likedistG=( B3037_G-maxlike_help)^2 
gen likedistH=( B3037_H-maxlike_help)^2 
gen likedistI=( B3037_I-maxlike_help)^2 


egen sumlikedist=rowtotal(likedistA-likedistI) if partynumber!=0
gen likedistpol=sqrt(sumlikedist/(partynumber-1)) if maxlike_help!=.


***** WEIGHTED

*** Correct vote shares
gen maxA=(likedistA==0)
gen maxB=(likedistB==0)
gen maxC=(likedistC==0)
gen maxD=(likedistD==0)
gen maxE=(likedistE==0)
gen maxF=(likedistF==0)
gen maxG=(likedistG==0)
gen maxH=(likedistH==0)
gen maxI=(likedistI==0)

egen countmax=rowtotal(maxA-maxI)
replace voteA=0 if maxA==1&countmax==1
replace voteB=0 if maxB==1&countmax==1
replace voteC=0 if maxC==1&countmax==1
replace voteD=0 if maxD==1&countmax==1
replace voteE=0 if maxE==1&countmax==1
replace voteF=0 if maxF==1&countmax==1
replace voteG=0 if maxG==1&countmax==1
replace voteH=0 if maxH==1&countmax==1
replace voteI=0 if maxI==1&countmax==1


forvalues x=2(1)9 {
replace voteA=voteA/`x' if maxA==1&countmax==`x'
replace voteB=voteB/`x'  if maxB==1&countmax==`x'
replace voteC=voteC/`x'  if maxC==1&countmax==`x'
replace voteD=voteD/`x'  if maxD==1&countmax==`x'
replace voteE=voteE/`x'  if maxE==1&countmax==`x'
replace voteF=voteF/`x'  if maxF==1&countmax==`x'
replace voteG=voteG/`x'  if maxG==1&countmax==`x'
replace voteH=voteH/`x'  if maxH==1&countmax==`x'
replace voteI=voteI/`x'  if maxI==1&countmax==`x'

}
egen sumvotesnew=rowtotal(voteA-voteI)
replace voteA=voteA/sumvotesnew 
replace voteB=voteB/sumvotesnew
replace voteC=voteC/sumvotesnew 
replace voteD=voteD/sumvotesnew 
replace voteE=voteE/sumvotesnew  
replace voteF=voteF/sumvotesnew  
replace voteG=voteG/sumvotesnew  
replace voteH=voteH/sumvotesnew  
replace voteI=voteI/sumvotesnew  

gen likedistAwgt=voteA*(( B3037_A-maxlike_help)^2) 
gen likedistBwgt=voteB*(( B3037_B-maxlike_help)^2) 
gen likedistCwgt=voteC*(( B3037_C-maxlike_help)^2)
gen likedistDwgt=voteD*(( B3037_D-maxlike_help)^2) 
gen likedistEwgt=voteE*(( B3037_E-maxlike_help)^2) 
gen likedistFwgt=voteF*(( B3037_F-maxlike_help)^2) 
gen likedistGwgt=voteG*(( B3037_G-maxlike_help)^2) 
gen likedistHwgt=voteH*(( B3037_H-maxlike_help)^2) 
gen likedistIwgt=voteI*(( B3037_I-maxlike_help)^2) 

egen likedistwgt=rowtotal(likedistAwgt-likedistIwgt) if completenumber!=0
replace likedistwgt=sqrt(likedistwgt)
replace likedistwgt=. if completenumber==1

drop completeA- sumaffpol sumvotes- affpolIwgt
drop maxlike_help- sumlikedist
drop maxA- likedistIwgt

save "cses2_affpol.dta", replace

**********************************************************
************************ Module 3 ************************
**********************************************************

use "cses3.dta", clear

recode C5001_A-C5001_I (0=.) (70/.=.) // lower house vote share; missing values
recode C5003_A-C5003_I (0=.) (70/.=.) // upper house vote shara; missing values
recode C5005_A-C5005_I (0=.) (70/.=.) // presidential election vote share; missing values

recode C3009_A-C3009_I (11/.=.) // like-dislike; missing values

replace C5001_A=C5003_A if C5001_A==.&C5003_A!=.  // FOR JAPAN
replace C5001_B=C5003_B if C5001_B==.&C5003_B!=.
replace C5001_C=C5003_C if C5001_C==.&C5003_C!=.
replace C5001_D=C5003_D if C5001_D==.&C5003_D!=.
replace C5001_E=C5003_E if C5001_E==.&C5003_E!=.
replace C5001_F=C5003_F if C5001_F==.&C5003_F!=.
replace C5001_G=C5003_G if C5001_G==.&C5003_G!=.
replace C5001_H=C5003_H if C5001_H==.&C5003_H!=.
replace C5001_I=C5003_I if C5001_I==.&C5003_I!=.

replace C5001_A=C5005_A if C5001_A==.&C5005_A!=.  // ROU; TWN
replace C5001_B=C5005_B if C5001_B==.&C5005_B!=.
replace C5001_C=C5005_C if C5001_C==.&C5005_C!=.
replace C5001_D=C5005_D if C5001_D==.&C5005_D!=.
replace C5001_E=C5005_E if C5001_E==.&C5005_E!=.
replace C5001_F=C5005_F if C5001_F==.&C5005_F!=.
replace C5001_G=C5005_G if C5001_G==.&C5005_G!=.
replace C5001_H=C5005_H if C5001_H==.&C5005_H!=.
replace C5001_I=C5005_I if C5001_I==.&C5005_I!=.

egen partynumber=rownonmiss(C3009_A-C3009_I)
egen votenumber=rownonmiss(C5001_A-C5001_I) 
gen completeA=(C3009_A!=.&C5001_A!=.)
gen completeB=(C3009_B!=.&C5001_B!=.)
gen completeC=(C3009_C!=.&C5001_C!=.)
gen completeD=(C3009_D!=.&C5001_D!=.)
gen completeE=(C3009_E!=.&C5001_E!=.)
gen completeF=(C3009_F!=.&C5001_F!=.)
gen completeG=(C3009_G!=.&C5001_G!=.)
gen completeH=(C3009_H!=.&C5001_H!=.)
gen completeI=(C3009_I!=.&C5001_I!=.)

egen completenumber=rowtotal(completeA-completeI) if votenumber!=0&partynumber!=0
replace completenumber=0 if partynumber==0
replace completenumber=0 if votenumber==0

*** Aff pol

egen meanlike=rowmean(C3009_A-C3009_I) // generate meanlike variable out of like-dislike variables

gen affpolA=(C3009_A-meanlike)^2 // generate affective polarization varibales 
gen affpolB=(C3009_B-meanlike)^2
gen affpolC=(C3009_C-meanlike)^2 
gen affpolD=(C3009_D-meanlike)^2 
gen affpolE=(C3009_E-meanlike)^2 
gen affpolF=(C3009_F-meanlike)^2 
gen affpolG=(C3009_G-meanlike)^2 
gen affpolH=(C3009_H-meanlike)^2 
gen affpolI=(C3009_I-meanlike)^2 

egen sumaffpol=rowtotal(affpolA-affpolI) if partynumber!=0
gen affpol=sqrt(sumaffpol/partynumber)


***** WEIGHTED

*** Correct vote shares
egen sumvotes=rowtotal(C5001_A-C5001_I) if votenumber!=0
replace sumvotes=sumvotes-C5001_A if completeA!=1&C5001_A!=.
replace sumvotes=sumvotes-C5001_B if completeB!=1&C5001_B!=.
replace sumvotes=sumvotes-C5001_C if completeC!=1&C5001_C!=.
replace sumvotes=sumvotes-C5001_D if completeD!=1&C5001_D!=.
replace sumvotes=sumvotes-C5001_E if completeE!=1&C5001_E!=.
replace sumvotes=sumvotes-C5001_F if completeF!=1&C5001_F!=.
replace sumvotes=sumvotes-C5001_G if completeG!=1&C5001_G!=.
replace sumvotes=sumvotes-C5001_H if completeH!=1&C5001_H!=.
replace sumvotes=sumvotes-C5001_I if completeI!=1&C5001_I!=.

gen voteA=C5001_A/sumvotes 
gen voteB=C5001_B/sumvotes 
gen voteC=C5001_C/sumvotes 
gen voteD=C5001_D/sumvotes 
gen voteE=C5001_E/sumvotes 
gen voteF=C5001_F/sumvotes 
gen voteG=C5001_G/sumvotes 
gen voteH=C5001_H/sumvotes 
gen voteI=C5001_I/sumvotes 

*** check
egen allvotes=rowtotal(voteA-voteI)

gen helpA=voteA*C3009_A
gen helpB=voteB*C3009_B
gen helpC=voteC*C3009_C
gen helpD=voteD*C3009_D
gen helpE=voteE*C3009_E
gen helpF=voteF*C3009_F
gen helpG=voteG*C3009_G
gen helpH=voteH*C3009_H
gen helpI=voteI*C3009_I

egen weightedmeanlike=rowtotal(helpA-helpI)  if completenumber!=0

gen affpolAwgt=voteA*((C3009_A-weightedmeanlike)^2)
gen affpolBwgt=voteB*((C3009_B-weightedmeanlike)^2)
gen affpolCwgt=voteC*((C3009_C-weightedmeanlike)^2) 
gen affpolDwgt=voteD*((C3009_D-weightedmeanlike)^2)
gen affpolEwgt=voteE*((C3009_E-weightedmeanlike)^2)
gen affpolFwgt=voteF*((C3009_F-weightedmeanlike)^2)
gen affpolGwgt=voteG*((C3009_G-weightedmeanlike)^2)
gen affpolHwgt=voteH*((C3009_H-weightedmeanlike)^2)
gen affpolIwgt=voteI*((C3009_I-weightedmeanlike)^2)

egen affpolwgt=rowtotal(affpolAwgt-affpolIwgt) if completenumber!=0
replace affpolwgt=sqrt(affpolwgt)
replace affpolwgt=. if completenumber==1


*** Distance from most liked party
egen maxlike_help=rowmax(C3009_A-C3009_I) // enerate maxlike variable; most liked party

gen likedistA=(C3009_A-maxlike_help)^2 // generate likedist variables; distance from most likes party
gen likedistB=(C3009_B-maxlike_help)^2
gen likedistC=(C3009_C-maxlike_help)^2 
gen likedistD=(C3009_D-maxlike_help)^2 
gen likedistE=(C3009_E-maxlike_help)^2 
gen likedistF=(C3009_F-maxlike_help)^2 
gen likedistG=(C3009_G-maxlike_help)^2 
gen likedistH=(C3009_H-maxlike_help)^2 
gen likedistI=(C3009_I-maxlike_help)^2 


egen sumlikedist=rowtotal(likedistA-likedistI) if partynumber!=0
gen likedistpol=sqrt(sumlikedist/(partynumber-1)) if maxlike_help!=.


***** WEIGHTED

*** Correct vote shares
gen maxA=(likedistA==0)
gen maxB=(likedistB==0)
gen maxC=(likedistC==0)
gen maxD=(likedistD==0)
gen maxE=(likedistE==0)
gen maxF=(likedistF==0)
gen maxG=(likedistG==0)
gen maxH=(likedistH==0)
gen maxI=(likedistI==0)
egen countmax=rowtotal(maxA-maxI)
replace voteA=0 if maxA==1&countmax==1
replace voteB=0 if maxB==1&countmax==1
replace voteC=0 if maxC==1&countmax==1
replace voteD=0 if maxD==1&countmax==1
replace voteE=0 if maxE==1&countmax==1
replace voteF=0 if maxF==1&countmax==1
replace voteG=0 if maxG==1&countmax==1
replace voteH=0 if maxH==1&countmax==1
replace voteI=0 if maxI==1&countmax==1


forvalues x=2(1)9 {
replace voteA=voteA/`x' if maxA==1&countmax==`x'
replace voteB=voteB/`x'  if maxB==1&countmax==`x'
replace voteC=voteC/`x'  if maxC==1&countmax==`x'
replace voteD=voteD/`x'  if maxD==1&countmax==`x'
replace voteE=voteE/`x'  if maxE==1&countmax==`x'
replace voteF=voteF/`x'  if maxF==1&countmax==`x'
replace voteG=voteG/`x'  if maxG==1&countmax==`x'
replace voteH=voteH/`x'  if maxH==1&countmax==`x'
replace voteI=voteI/`x'  if maxI==1&countmax==`x'

}
egen sumvotesnew=rowtotal(voteA-voteI)
replace voteA=voteA/sumvotesnew 
replace voteB=voteB/sumvotesnew
replace voteC=voteC/sumvotesnew 
replace voteD=voteD/sumvotesnew 
replace voteE=voteE/sumvotesnew  
replace voteF=voteF/sumvotesnew  
replace voteG=voteG/sumvotesnew  
replace voteH=voteH/sumvotesnew  
replace voteI=voteI/sumvotesnew  

gen likedistAwgt=voteA*((C3009_A-maxlike_help)^2) 
gen likedistBwgt=voteB*((C3009_B-maxlike_help)^2) 
gen likedistCwgt=voteC*((C3009_C-maxlike_help)^2)
gen likedistDwgt=voteD*((C3009_D-maxlike_help)^2) 
gen likedistEwgt=voteE*((C3009_E-maxlike_help)^2) 
gen likedistFwgt=voteF*((C3009_F-maxlike_help)^2) 
gen likedistGwgt=voteG*((C3009_G-maxlike_help)^2) 
gen likedistHwgt=voteH*((C3009_H-maxlike_help)^2) 
gen likedistIwgt=voteI*((C3009_I-maxlike_help)^2) 

egen likedistwgt=rowtotal(likedistAwgt-likedistIwgt) if completenumber!=0
replace likedistwgt=sqrt(likedistwgt)
replace likedistwgt=. if completenumber==1

drop completeA- sumaffpol sumvotes- affpolIwgt
drop maxlike_help- sumlikedist
drop maxA- likedistIwgt

save "cses3_affpol.dta", replace

**********************************************************
************************ Module 4 ************************
**********************************************************

use "cses4.dta", clear


recode D5001_A-D5001_I (0=.) (70/.=.) // lower house vote share; missing values
recode D3011_A-D3011_I (11/.=.) // like-dislike party; missing values
recode D5003_A-D5003_I (0=.) (70/.=.) // upper house vote share; missing values
recode D5005_A-D5005_I (0=.) (70/.=.) // presidential election vote share; missing values 


replace D5001_A=D5003_A if D5001_A==.&D5003_A!=.  // FOR JAPAN
replace D5001_B=D5003_B if D5001_B==.&D5003_B!=.
replace D5001_C=D5003_C if D5001_C==.&D5003_C!=.
replace D5001_D=D5003_D if D5001_D==.&D5003_D!=.
replace D5001_E=D5003_E if D5001_E==.&D5003_E!=.
replace D5001_F=D5003_F if D5001_F==.&D5003_F!=.
replace D5001_G=D5003_G if D5001_G==.&D5003_G!=.
replace D5001_H=D5003_H if D5001_H==.&D5003_H!=.
replace D5001_I=D5003_I if D5001_I==.&D5003_I!=.

replace D5005_A=40.44 if D1003==64202014 // FIX ROMANIA
replace D5005_B=30.37 if D1003==64202014
replace D5005_C=5.2 if D1003==64202014
replace D5005_D=4.03 if D1003==64202014
replace D5005_E=3.68 if D1003==64202014
replace D5005_F=3.47 if D1003==64202014

replace D5001_A=D5005_A if D5001_A==.&D5005_A!=.  // FRANCE & ROMANIA
replace D5001_B=D5005_B if D5001_B==.&D5005_B!=.
replace D5001_C=D5005_C if D5001_C==.&D5005_C!=.
replace D5001_D=D5005_D if D5001_D==.&D5005_D!=.
replace D5001_E=D5005_E if D5001_E==.&D5005_E!=.
replace D5001_F=D5005_F if D5001_F==.&D5005_F!=.
replace D5001_G=D5005_G if D5001_G==.&D5005_G!=.
replace D5001_H=D5005_H if D5001_H==.&D5005_H!=.
replace D5001_I=D5005_I if D5001_I==.&D5005_I!=.


egen partynumber=rownonmiss(D3011_A-D3011_I)
egen votenumber=rownonmiss(D5001_A-D5001_I) 
gen completeA=(D3011_A!=.&D5001_A!=.)
gen completeB=(D3011_B!=.&D5001_B!=.)
gen completeC=(D3011_C!=.&D5001_C!=.)
gen completeD=(D3011_D!=.&D5001_D!=.)
gen completeE=(D3011_E!=.&D5001_E!=.)
gen completeF=(D3011_F!=.&D5001_F!=.)
gen completeG=(D3011_G!=.&D5001_H!=.)
gen completeH=(D3011_H!=.&D5001_G!=.)
gen completeI=(D3011_I!=.&D5001_I!=.)

egen completenumber=rowtotal(completeA-completeI) if votenumber!=0&partynumber!=0
replace completenumber=0 if partynumber==0
replace completenumber=0 if votenumber==0

bys D1003: egen maxcomp=max(completenumber)

egen partynumber_reduced=rownonmiss(D3011_A-D3011_D)
egen votenumber_reduced=rownonmiss(D5001_A-D5001_D) 
egen completenumber_reduced=rowtotal(completeA-completeD) if votenumber_reduced!=0&partynumber_reduced!=0
replace completenumber_reduced=0 if partynumber_reduced==0
replace completenumber_reduced=0 if votenumber_reduced==0


*** Aff pol

egen meanlike=rowmean(D3011_A-D3011_I) // generate meanlike our of like-dislike variables

gen affpolA=(D3011_A-meanlike)^2 // generate affective polarization variables
gen affpolB=(D3011_B-meanlike)^2
gen affpolC=(D3011_C-meanlike)^2 
gen affpolD=(D3011_D-meanlike)^2 
gen affpolE=(D3011_E-meanlike)^2 
gen affpolF=(D3011_F-meanlike)^2 
gen affpolG=(D3011_G-meanlike)^2 
gen affpolH=(D3011_H-meanlike)^2 
gen affpolI=(D3011_I-meanlike)^2 



egen sumaffpol=rowtotal(affpolA-affpolI) if partynumber!=0
gen affpol=sqrt(sumaffpol/partynumber)


*** UNWEIGHTED FOR FOUR PARTIES


egen meanlike_reduced=rowmean(D3011_A-D3011_D)

gen affpolA_red=(D3011_A-meanlike_reduced)^2
gen affpolB_red=(D3011_B-meanlike_reduced)^2
gen affpolC_red=(D3011_C-meanlike_reduced)^2 
gen affpolD_red=(D3011_D-meanlike_reduced)^2 



egen sumaffpol_reduced=rowtotal(affpolA-affpolD) if partynumber_reduced!=0&maxcomp>5
gen affpol_reduced=sqrt(sumaffpol_reduced/partynumber_reduced)


***** WEIGHTED
*** Correct vote shares
egen sumvotes=rowtotal(D5001_A-D5001_I) if votenumber!=0
replace sumvotes=sumvotes-D5001_A if completeA!=1&D5001_A!=.
replace sumvotes=sumvotes-D5001_B if completeB!=1&D5001_B!=.
replace sumvotes=sumvotes-D5001_C if completeC!=1&D5001_C!=.
replace sumvotes=sumvotes-D5001_D if completeD!=1&D5001_D!=.
replace sumvotes=sumvotes-D5001_E if completeE!=1&D5001_E!=.
replace sumvotes=sumvotes-D5001_F if completeF!=1&D5001_F!=.
replace sumvotes=sumvotes-D5001_G if completeG!=1&D5001_G!=.
replace sumvotes=sumvotes-D5001_H if completeH!=1&D5001_H!=.
replace sumvotes=sumvotes-D5001_I if completeI!=1&D5001_I!=.
gen voteA=D5001_A/sumvotes 
gen voteB=D5001_B/sumvotes 
gen voteC=D5001_C/sumvotes 
gen voteD=D5001_D/sumvotes 
gen voteE=D5001_E/sumvotes 
gen voteF=D5001_F/sumvotes 
gen voteG=D5001_G/sumvotes 
gen voteH=D5001_H/sumvotes 
gen voteI=D5001_I/sumvotes 

*** check
egen allvotes=rowtotal(voteA-voteI)

gen helpA=voteA*D3011_A
gen helpB=voteB*D3011_B
gen helpC=voteC*D3011_C
gen helpD=voteD*D3011_D
gen helpE=voteE*D3011_E
gen helpF=voteF*D3011_F
gen helpG=voteG*D3011_G
gen helpH=voteH*D3011_H
gen helpI=voteI*D3011_I

egen weightedmeanlike=rowtotal(helpA-helpI)  if completenumber!=0

gen affpolAwgt=voteA*((D3011_A-weightedmeanlike)^2)
gen affpolBwgt=voteB*((D3011_B-weightedmeanlike)^2)
gen affpolCwgt=voteC*((D3011_C-weightedmeanlike)^2) 
gen affpolDwgt=voteD*((D3011_D-weightedmeanlike)^2)
gen affpolEwgt=voteE*((D3011_E-weightedmeanlike)^2)
gen affpolFwgt=voteF*((D3011_F-weightedmeanlike)^2)
gen affpolGwgt=voteG*((D3011_G-weightedmeanlike)^2)
gen affpolHwgt=voteH*((D3011_H-weightedmeanlike)^2)
gen affpolIwgt=voteI*((D3011_I-weightedmeanlike)^2)

egen affpolwgt=rowtotal(affpolAwgt-affpolIwgt) if completenumber!=0
replace affpolwgt=sqrt(affpolwgt)
replace affpolwgt=. if completenumber==1


**** WEIGHTED FOR FOUR PARTIES

*** check
egen allvotes_red=rowtotal(voteA-voteD)

*** Correct vote shares
egen sumvotes_red=rowtotal(D5001_A-D5001_D) if votenumber_reduced!=0
replace sumvotes_red=sumvotes_red-D5001_A if completeA!=1&D5001_A!=.
replace sumvotes_red=sumvotes_red-D5001_B if completeB!=1&D5001_B!=.
replace sumvotes_red=sumvotes_red-D5001_C if completeC!=1&D5001_C!=.
replace sumvotes_red=sumvotes_red-D5001_D if completeD!=1&D5001_D!=.

gen voteA_red=D5001_A/sumvotes_red
gen voteB_red=D5001_B/sumvotes_red
gen voteC_red=D5001_C/sumvotes_red 
gen voteD_red=D5001_D/sumvotes_red 


gen helpA_red=voteA_red*D3011_A
gen helpB_red=voteB_red*D3011_B
gen helpC_red=voteC_red*D3011_C
gen helpD_red=voteD_red*D3011_D

egen weightedmeanlike_red=rowtotal(helpA_red-helpD_red)  if completenumber_red!=0

gen affpolAwgt_red=voteA_red*((D3011_A-weightedmeanlike_red)^2)
gen affpolBwgt_red=voteB_red*((D3011_B-weightedmeanlike_red)^2)
gen affpolCwgt_red=voteC_red*((D3011_C-weightedmeanlike_red)^2) 
gen affpolDwgt_red=voteD_red*((D3011_D-weightedmeanlike_red)^2)


egen affpolwgt_red=rowtotal(affpolAwgt_red-affpolDwgt_red) if completenumber_red!=0
replace affpolwgt_red=sqrt(affpolwgt_red)
replace affpolwgt_red=. if completenumber_red==1




*** Distance from most liked party
egen maxlike_help=rowmax(D3011_A-D3011_I)

gen likedistA=(D3011_A-maxlike_help)^2
gen likedistB=(D3011_B-maxlike_help)^2
gen likedistC=(D3011_C-maxlike_help)^2 
gen likedistD=(D3011_D-maxlike_help)^2 
gen likedistE=(D3011_E-maxlike_help)^2 
gen likedistF=(D3011_F-maxlike_help)^2 
gen likedistG=(D3011_G-maxlike_help)^2 
gen likedistH=(D3011_H-maxlike_help)^2 
gen likedistI=(D3011_I-maxlike_help)^2 




egen sumlikedist=rowtotal(likedistA-likedistI) if partynumber!=0
gen likedistpol=sqrt(sumlikedist/(partynumber-1)) if maxlike_help!=.



*** FOUR PARTIES Distance from most liked party
egen maxlike_help_red=rowmax(D3011_A-D3011_D)

gen likedistA_red=(D3011_A-maxlike_help_red)^2
gen likedistB_red=(D3011_B-maxlike_help_red)^2
gen likedistC_red=(D3011_C-maxlike_help_red)^2 
gen likedistD_red=(D3011_D-maxlike_help_red)^2 

egen sumlikedist_red=rowtotal(likedistA-likedistD) if partynumber_red!=0
gen likedistpol_red=sqrt(sumlikedist_red/(partynumber_red-1)) if maxlike_help_red!=.



***** WEIGHTED

*** Correct vote shares
gen maxA=(likedistA==0)
gen maxB=(likedistB==0)
gen maxC=(likedistC==0)
gen maxD=(likedistD==0)
gen maxE=(likedistE==0)
gen maxF=(likedistF==0)
gen maxG=(likedistG==0)
gen maxH=(likedistH==0)
gen maxI=(likedistI==0)
egen countmax=rowtotal(maxA-maxI)
replace voteA=0 if maxA==1&countmax==1
replace voteB=0 if maxB==1&countmax==1
replace voteC=0 if maxC==1&countmax==1
replace voteD=0 if maxD==1&countmax==1
replace voteE=0 if maxE==1&countmax==1
replace voteF=0 if maxF==1&countmax==1
replace voteG=0 if maxG==1&countmax==1
replace voteH=0 if maxH==1&countmax==1
replace voteI=0 if maxI==1&countmax==1


forvalues x=2(1)9 {
replace voteA=voteA/`x' if maxA==1&countmax==`x'
replace voteB=voteB/`x'  if maxB==1&countmax==`x'
replace voteC=voteC/`x'  if maxC==1&countmax==`x'
replace voteD=voteD/`x'  if maxD==1&countmax==`x'
replace voteE=voteE/`x'  if maxE==1&countmax==`x'
replace voteF=voteF/`x'  if maxF==1&countmax==`x'
replace voteG=voteG/`x'  if maxG==1&countmax==`x'
replace voteH=voteH/`x'  if maxH==1&countmax==`x'
replace voteI=voteI/`x'  if maxI==1&countmax==`x'
}

egen sumvotesnew=rowtotal(voteA-voteI)
replace voteA=voteA/sumvotesnew 
replace voteB=voteB/sumvotesnew
replace voteC=voteC/sumvotesnew 
replace voteD=voteD/sumvotesnew 
replace voteE=voteE/sumvotesnew  
replace voteF=voteF/sumvotesnew  
replace voteG=voteG/sumvotesnew  
replace voteH=voteH/sumvotesnew  
replace voteI=voteI/sumvotesnew  

gen likedistAwgt=voteA*((D3011_A-maxlike_help)^2) 
gen likedistBwgt=voteB*((D3011_B-maxlike_help)^2) 
gen likedistCwgt=voteC*((D3011_C-maxlike_help)^2)
gen likedistDwgt=voteD*((D3011_D-maxlike_help)^2) 
gen likedistEwgt=voteE*((D3011_E-maxlike_help)^2) 
gen likedistFwgt=voteF*((D3011_F-maxlike_help)^2) 
gen likedistGwgt=voteG*((D3011_G-maxlike_help)^2) 
gen likedistHwgt=voteH*((D3011_H-maxlike_help)^2) 
gen likedistIwgt=voteI*((D3011_I-maxlike_help)^2) 

egen likedistwgt=rowtotal(likedistAwgt-likedistIwgt) if completenumber!=0
replace likedistwgt=sqrt(likedistwgt)
replace likedistwgt=. if completenumber==1


drop completeA- sumaffpol sumvotes- affpolIwgt
drop maxlike_help- sumlikedist
drop maxA- likedistIwgt

save "cses4_affpol.dta", replace

**********************************************************
************************ Module 5 ************************
********************************************************** 

use "cses5.dta", clear

recode E5001_A-E5001_I (0=.) (70/.=.)
recode E3017_A-E3017_I (11/.=.)
recode E5003_A-E5003_I (0=.) (70/.=.)
recode E5005_A-E5005_I (0=.) (70/.=.)



replace E5001_A=E5005_A if E5001_A==.&E5005_A!=.  // US
replace E5001_B=E5005_B if E5001_B==.&E5005_B!=.
replace E5001_C=E5005_C if E5001_C==.&E5005_C!=.
replace E5001_D=E5005_D if E5001_D==.&E5005_D!=.
replace E5001_E=E5005_E if E5001_E==.&E5005_E!=.
replace E5001_F=E5005_F if E5001_F==.&E5005_F!=.
replace E5001_G=E5005_G if E5001_G==.&E5005_G!=.
replace E5001_H=E5005_H if E5001_H==.&E5005_H!=.
replace E5001_I=E5005_I if E5001_I==.&E5005_I!=.


egen partynumber=rownonmiss(E3017_A-E3017_I)
egen votenumber=rownonmiss(E5001_A-E5001_I) 
gen completeA=(E3017_A!=.&E5001_A!=.)
gen completeB=(E3017_B!=.&E5001_B!=.)
gen completeC=(E3017_C!=.&E5001_C!=.)
gen completeD=(E3017_D!=.&E5001_D!=.)
gen completeE=(E3017_E!=.&E5001_E!=.)
gen completeF=(E3017_F!=.&E5001_F!=.)
gen completeG=(E3017_G!=.&E5001_H!=.)
gen completeH=(E3017_H!=.&E5001_G!=.)
gen completeI=(E3017_I!=.&E5001_I!=.)

egen completenumber=rowtotal(completeA-completeI) if votenumber!=0&partynumber!=0
replace completenumber=0 if partynumber==0
replace completenumber=0 if votenumber==0

*** Aff pol

egen meanlike=rowmean(E3017_A-E3017_I)

gen affpolA=(E3017_A-meanlike)^2
gen affpolB=(E3017_B-meanlike)^2
gen affpolC=(E3017_C-meanlike)^2 
gen affpolD=(E3017_D-meanlike)^2 
gen affpolE=(E3017_E-meanlike)^2 
gen affpolF=(E3017_F-meanlike)^2 
gen affpolG=(E3017_G-meanlike)^2 
gen affpolH=(E3017_H-meanlike)^2 
gen affpolI=(E3017_I-meanlike)^2 



egen sumaffpol=rowtotal(affpolA-affpolI) if partynumber!=0
gen affpol=sqrt(sumaffpol/partynumber)


***** WEIGHTED

*** Correct vote shares
egen sumvotes=rowtotal(E5001_A-E5001_I) if votenumber!=0
replace sumvotes=sumvotes-E5001_A if completeA!=1&E5001_A!=.
replace sumvotes=sumvotes-E5001_B if completeB!=1&E5001_B!=.
replace sumvotes=sumvotes-E5001_C if completeC!=1&E5001_C!=.
replace sumvotes=sumvotes-E5001_D if completeD!=1&E5001_D!=.
replace sumvotes=sumvotes-E5001_E if completeE!=1&E5001_E!=.
replace sumvotes=sumvotes-E5001_F if completeF!=1&E5001_F!=.
replace sumvotes=sumvotes-E5001_G if completeG!=1&E5001_G!=.
replace sumvotes=sumvotes-E5001_H if completeH!=1&E5001_H!=.
replace sumvotes=sumvotes-E5001_I if completeI!=1&E5001_I!=.
gen voteA=E5001_A/sumvotes 
gen voteB=E5001_B/sumvotes 
gen voteC=E5001_C/sumvotes 
gen voteD=E5001_D/sumvotes 
gen voteE=E5001_E/sumvotes 
gen voteF=E5001_F/sumvotes 
gen voteG=E5001_G/sumvotes 
gen voteH=E5001_H/sumvotes 
gen voteI=E5001_I/sumvotes 

*** check
egen allvotes=rowtotal(voteA-voteI)

gen helpA=voteA*E3017_A
gen helpB=voteB*E3017_B
gen helpC=voteC*E3017_C
gen helpD=voteD*E3017_D
gen helpE=voteE*E3017_E
gen helpF=voteF*E3017_F
gen helpG=voteG*E3017_G
gen helpH=voteH*E3017_H
gen helpI=voteI*E3017_I

egen weightedmeanlike=rowtotal(helpA-helpI)  if completenumber!=0

gen affpolAwgt=voteA*((E3017_A-weightedmeanlike)^2)
gen affpolBwgt=voteB*((E3017_B-weightedmeanlike)^2)
gen affpolCwgt=voteC*((E3017_C-weightedmeanlike)^2) 
gen affpolDwgt=voteD*((E3017_D-weightedmeanlike)^2)
gen affpolEwgt=voteE*((E3017_E-weightedmeanlike)^2)
gen affpolFwgt=voteF*((E3017_F-weightedmeanlike)^2)
gen affpolGwgt=voteG*((E3017_G-weightedmeanlike)^2)
gen affpolHwgt=voteH*((E3017_H-weightedmeanlike)^2)
gen affpolIwgt=voteI*((E3017_I-weightedmeanlike)^2)

egen affpolwgt=rowtotal(affpolAwgt-affpolIwgt) if completenumber!=0
replace affpolwgt=sqrt(affpolwgt)
replace affpolwgt=. if completenumber==1



*** Distance from most liked party
egen maxlike_help=rowmax(E3017_A-E3017_I)

gen likedistA=(E3017_A-maxlike_help)^2
gen likedistB=(E3017_B-maxlike_help)^2
gen likedistC=(E3017_C-maxlike_help)^2 
gen likedistD=(E3017_D-maxlike_help)^2 
gen likedistE=(E3017_E-maxlike_help)^2 
gen likedistF=(E3017_F-maxlike_help)^2 
gen likedistG=(E3017_G-maxlike_help)^2 
gen likedistH=(E3017_H-maxlike_help)^2 
gen likedistI=(E3017_I-maxlike_help)^2 



egen sumlikedist=rowtotal(likedistA-likedistI) if partynumber!=0
gen likedistpol=sqrt(sumlikedist/(partynumber-1)) if maxlike_help!=.


***** WEIGHTED

*** Correct vote shares
gen maxA=(likedistA==0)
gen maxB=(likedistB==0)
gen maxC=(likedistC==0)
gen maxD=(likedistD==0)
gen maxE=(likedistE==0)
gen maxF=(likedistF==0)
gen maxG=(likedistG==0)
gen maxH=(likedistH==0)
gen maxI=(likedistI==0)
egen countmax=rowtotal(maxA-maxI)
replace voteA=0 if maxA==1&countmax==1
replace voteB=0 if maxB==1&countmax==1
replace voteC=0 if maxC==1&countmax==1
replace voteD=0 if maxD==1&countmax==1
replace voteE=0 if maxE==1&countmax==1
replace voteF=0 if maxF==1&countmax==1
replace voteG=0 if maxG==1&countmax==1
replace voteH=0 if maxH==1&countmax==1
replace voteI=0 if maxI==1&countmax==1


forvalues x=2(1)9 {
replace voteA=voteA/`x' if maxA==1&countmax==`x'
replace voteB=voteB/`x'  if maxB==1&countmax==`x'
replace voteC=voteC/`x'  if maxC==1&countmax==`x'
replace voteD=voteD/`x'  if maxD==1&countmax==`x'
replace voteE=voteE/`x'  if maxE==1&countmax==`x'
replace voteF=voteF/`x'  if maxF==1&countmax==`x'
replace voteG=voteG/`x'  if maxG==1&countmax==`x'
replace voteH=voteH/`x'  if maxH==1&countmax==`x'
replace voteI=voteI/`x'  if maxI==1&countmax==`x'
}

egen sumvotesnew=rowtotal(voteA-voteI)
replace voteA=voteA/sumvotesnew 
replace voteB=voteB/sumvotesnew
replace voteC=voteC/sumvotesnew 
replace voteD=voteD/sumvotesnew 
replace voteE=voteE/sumvotesnew  
replace voteF=voteF/sumvotesnew  
replace voteG=voteG/sumvotesnew  
replace voteH=voteH/sumvotesnew  
replace voteI=voteI/sumvotesnew  

gen likedistAwgt=voteA*((E3017_A-maxlike_help)^2) 
gen likedistBwgt=voteB*((E3017_B-maxlike_help)^2) 
gen likedistCwgt=voteC*((E3017_C-maxlike_help)^2)
gen likedistDwgt=voteD*((E3017_D-maxlike_help)^2) 
gen likedistEwgt=voteE*((E3017_E-maxlike_help)^2) 
gen likedistFwgt=voteF*((E3017_F-maxlike_help)^2) 
gen likedistGwgt=voteG*((E3017_G-maxlike_help)^2) 
gen likedistHwgt=voteH*((E3017_H-maxlike_help)^2) 
gen likedistIwgt=voteI*((E3017_I-maxlike_help)^2) 

egen likedistwgt=rowtotal(likedistAwgt-likedistIwgt) if completenumber!=0
replace likedistwgt=sqrt(likedistwgt)
replace likedistwgt=. if completenumber==1


drop completeA- sumaffpol sumvotes- affpolIwgt
drop maxlike_help- sumlikedist
drop maxA- likedistIwgt

save "cses5_affpol.dta", replace