The main dataset downloaded from idescat.cat: https://www.idescat.cat/indicadors/?id=aec&n=15893&lang=en&t=201500

The parties in the dataset above were grouped together into a main party through this Observable notebook: MVTEC Workshop 1 - Election Analysis: Data Exploration / Joseph Ricafort | Observable (observablehq.com)

Main parties: Exploring how municipalities voted

The party variable has been categorized into their main party. There 18 main parties in total.

Dataset preview

How distributed are the percentages of the municipality votes for every main party?

Municipalities has percentages to how much of the voters voted for a specific party. These percentage scores were then visualized through distribution for every main party. Percentages between years 2015 and 2019 for every party was also visualized

ERC, JxC, CIU and Convergencia Democratica were the most popular parties. Their median values are relatively higher compared to the other parties.

There could be some missing data for some parties which it is hard yet define whether there has been shifts or not.

Shift from one party to another

Comparison between 2015 and 2019 proportion of votes across different parties

Here’ the scatterplot among the different parties and how the percentages of municipality voted. The x-axis represents the voted proportion for 2015 while the y-axis represents the voted proportion for 2019.

Shifts of municipalities between parties

From the previous dataset, we determine whether there has been a flip on shift in a winning party between 2015 and 2019.

If there is a change between those 2 years, we indicate ‘no win’ (2015) to ‘win’ (2019) as a gained while a ‘win’ (2015) to ‘no win’ (2019) as lost. For no change such as ‘win’ to ‘win’ or ‘no win’ to ‘no win’, we indicate it as no change.

Parties in the others groups seemed to have gained many municipal votes. - In contrary, the ERC has lost more than it gained as compared to last year

More Advanced Exploration: Clustering municipalities

On this part of the exploration, we try to cluster the municipalities and uing the main parties as the variables to see patterns with.

Identifying the parties with the most number of votes by computing the mean number of votes in the past two election. We will use this to highlight the most popular parties.

We then just select the numerical variables, removing the municipality names in the process.

Applying K-means clustering

k1 <- kmeans(parties_clust_nums, 5)
k2 <- kmeans(parties_clust_nums, 5)

table(k1$cluster, k2$cluster)
plot(k1$centers[,3], k1$centers[,2])

k3 <- kmeans(parties_clust_nums, 6)
plot(k3$centers[,3], k3$centers[,2])

Heirarchical clustering

From the plot above, seems like we can group the municipalities into 3 clusters. If we go further down, it could also be cut further into 7.

table(c1, c2)
   c2
c1    1   2   3   4   5   6   7
  1 227   0   0   0   0  78   0
  2   0 183   0 107   0   0  85
  3   0   0 179   0  83   0   0

Let’s aggregate the values of every variable for every group based on how we cut it in the tree

cdg1 <- aggregate(as.data.frame(parties_clust_nums), list(c1), mean)
cdg2 <- aggregate(as.data.frame(parties_clust_nums), list(c2), mean)

cdg1
cdg2

Pairwise visualization between main parties

Using 3 classes

Using 7 classes

The clustering method above needs to be profiled to see the characteristics of the classes in a more detailed level.

Voter turnout

Data source for voter turnout have summarized the votes per county: https://www.idescat.cat/indicadors/?id=aec&n=15893&tema=elecc&t=201900

Voter turnout seem to have shifted with a median of 61% voter turnout in 2015 to 68.8% in 2019. Voter turnout has been higher in 2019 compared to the previous year of 2015 by 7.8%.

Priorat and Terra Alta had an incredibly high voter turnout compared to the rest in 2015 at 75% and 78.7%.

Here is a more detailed view of the distribution of counties on voter turnover percentages.

LS0tCnRpdGxlOiAiQ2F0YWx1bnlhIE11bmljaXBhbGl0eSBFbGVjdGlvbiAyMDE1LTIwMTkgRXhwbG9yYXRpb24iCm91dHB1dDogaHRtbF9ub3RlYm9vawplZGl0b3Jfb3B0aW9uczogCiAgbWFya2Rvd246IAogICAgd3JhcDogNzIKLS0tCgpUaGUgbWFpbiBkYXRhc2V0IGRvd25sb2FkZWQgZnJvbSBpZGVzY2F0LmNhdDoKPGh0dHBzOi8vd3d3LmlkZXNjYXQuY2F0L2luZGljYWRvcnMvP2lkPWFlYyZuPTE1ODkzJmxhbmc9ZW4mdD0yMDE1MDA+CgpUaGUgcGFydGllcyBpbiB0aGUgZGF0YXNldCBhYm92ZSB3ZXJlIGdyb3VwZWQgdG9nZXRoZXIgaW50byBhIG1haW4gcGFydHkKdGhyb3VnaCB0aGlzIE9ic2VydmFibGUgbm90ZWJvb2s6IFtNVlRFQyBXb3Jrc2hvcCAxIC0gRWxlY3Rpb24gQW5hbHlzaXM6CkRhdGEgRXhwbG9yYXRpb24gLyBKb3NlcGggUmljYWZvcnQgXHwgT2JzZXJ2YWJsZQoob2JzZXJ2YWJsZWhxLmNvbSldKGh0dHBzOi8vb2JzZXJ2YWJsZWhxLmNvbS9kLzdlYjAxZjAwMGMyOGFkMmUpCgojIyBNYWluIHBhcnRpZXM6IEV4cGxvcmluZyBob3cgbXVuaWNpcGFsaXRpZXMgdm90ZWQKClRoZSBwYXJ0eSB2YXJpYWJsZSBoYXMgYmVlbiBjYXRlZ29yaXplZCBpbnRvIHRoZWlyIG1haW4gcGFydHkuIFRoZXJlIDE4Cm1haW4gcGFydGllcyBpbiB0b3RhbC4KCiMjIyMgRGF0YXNldCBwcmV2aWV3CgpgYGB7cn0KcGFydGllc19jbGVhbgpgYGAKCiMjIyBIb3cgZGlzdHJpYnV0ZWQgYXJlIHRoZSBwZXJjZW50YWdlcyBvZiB0aGUgbXVuaWNpcGFsaXR5IHZvdGVzIGZvciBldmVyeSBtYWluIHBhcnR5PwoKTXVuaWNpcGFsaXRpZXMgaGFzIHBlcmNlbnRhZ2VzIHRvIGhvdyBtdWNoIG9mIHRoZSB2b3RlcnMgdm90ZWQgZm9yIGEKc3BlY2lmaWMgcGFydHkuIFRoZXNlIHBlcmNlbnRhZ2Ugc2NvcmVzIHdlcmUgdGhlbiB2aXN1YWxpemVkIHRocm91Z2gKZGlzdHJpYnV0aW9uIGZvciBldmVyeSBtYWluIHBhcnR5LiBQZXJjZW50YWdlcyBiZXR3ZWVuIHllYXJzIDIwMTUgYW5kCjIwMTkgZm9yIGV2ZXJ5IHBhcnR5IHdhcyBhbHNvIHZpc3VhbGl6ZWQKCkVSQywgSnhDLCBDSVUgYW5kIENvbnZlcmdlbmNpYSBEZW1vY3JhdGljYSB3ZXJlIHRoZSBtb3N0IHBvcHVsYXIKcGFydGllcy4gVGhlaXIgbWVkaWFuIHZhbHVlcyBhcmUgcmVsYXRpdmVseSBoaWdoZXIgY29tcGFyZWQgdG8gdGhlIG90aGVyCnBhcnRpZXMuCgpgYGB7cn0KZ2dwbG90KHBhcnRpZXNfY2xlYW4pICsKICBnZW9tX2JveHBsb3QoYWVzKHggPSB2b3RlZF9wcm9wb3J0aW9uLCB5ID0gYXMuZmFjdG9yKHllYXIpKSwgYWxwaGEgPSAwLjE1LCBzaXplID0gMC4xNSkgKwogICMgZ2VvbV92bGluZShhZXMoeGludGVyY2VwdCA9IG1lZGlhbih2b3RlcykpLCBjb2xvciA9ICJibHVlIikgKyAjIE1lZGlhbiB2YWx1ZSBmb3IgYm90aCB5ZWFycwogIGZhY2V0X3dyYXAodmFycyhtYWluX3BhcnR5KSkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzY2FsZXM6OnByZXR0eV9icmVha3MobiA9IDIpKQpgYGAKClRoZXJlIGNvdWxkIGJlIHNvbWUgbWlzc2luZyBkYXRhIGZvciBzb21lIHBhcnRpZXMgd2hpY2ggaXQgaXMgaGFyZCB5ZXQKZGVmaW5lIHdoZXRoZXIgdGhlcmUgaGFzIGJlZW4gc2hpZnRzIG9yIG5vdC4KCiMjIyBTaGlmdCBmcm9tIG9uZSBwYXJ0eSB0byBhbm90aGVyCgojIyMjIENvbXBhcmlzb24gYmV0d2VlbiAyMDE1IGFuZCAyMDE5IHByb3BvcnRpb24gb2Ygdm90ZXMgYWNyb3NzIGRpZmZlcmVudCBwYXJ0aWVzCgpIZXJlJyB0aGUgc2NhdHRlcnBsb3QgYW1vbmcgdGhlIGRpZmZlcmVudCBwYXJ0aWVzIGFuZCBob3cgdGhlCnBlcmNlbnRhZ2VzIG9mIG11bmljaXBhbGl0eSB2b3RlZC4gVGhlIHgtYXhpcyByZXByZXNlbnRzIHRoZSB2b3RlZApwcm9wb3J0aW9uIGZvciAyMDE1IHdoaWxlIHRoZSB5LWF4aXMgcmVwcmVzZW50cyB0aGUgdm90ZWQgcHJvcG9ydGlvbiBmb3IKMjAxOS4KCmBgYHtyfQpnZ3Bsb3QocGFydGllc19wcm9wX3NoaWZ0KSArCiBnZW9tX3BvaW50KGFlcyh4ID0gdm90ZWRfcHJvcF8yMDE1LCB5ID0gdm90ZWRfcHJvcF8yMDE5LCBjb2xvciA9IG1haW5fcGFydHkpLCBhbHBoYSA9IDAuMzUpICsKIHhsaW0oMCwgMTAwKSArIHlsaW0oMCwgMTAwKSArCiBmYWNldF93cmFwKHZhcnMobWFpbl9wYXJ0eSkpCmBgYAoKIyMjIyBTaGlmdHMgb2YgbXVuaWNpcGFsaXRpZXMgYmV0d2VlbiBwYXJ0aWVzCgpGcm9tIHRoZSBwcmV2aW91cyBkYXRhc2V0LCB3ZSBkZXRlcm1pbmUgd2hldGhlciB0aGVyZSBoYXMgYmVlbiBhIGZsaXAgb24Kc2hpZnQgaW4gYSB3aW5uaW5nIHBhcnR5IGJldHdlZW4gMjAxNSBhbmQgMjAxOS4KCklmIHRoZXJlIGlzIGEgY2hhbmdlIGJldHdlZW4gdGhvc2UgMiB5ZWFycywgd2UgaW5kaWNhdGUgJ25vIHdpbicgKDIwMTUpCnRvICd3aW4nICgyMDE5KSBhcyBhIGdhaW5lZCB3aGlsZSBhICd3aW4nICgyMDE1KSB0byAnbm8gd2luJyAoMjAxOSkgYXMKbG9zdC4gRm9yIG5vIGNoYW5nZSBzdWNoIGFzICd3aW4nIHRvICd3aW4nIG9yICdubyB3aW4nIHRvICdubyB3aW4nLCB3ZQppbmRpY2F0ZSBpdCBhcyBubyBjaGFuZ2UuCgpgYGB7cn0KcGFydGllc19jaGFuZ2UKYGBgCgpgYGB7cn0KY2JQYWxldHRlIDwtIGMoImRhcmtncmVlbiIsICJyZWQiLCAiZ3JleSIpCgpnZ3Bsb3QocGFydGllc19jaGFuZ2UpICsKICBnZW9tX3BvaW50KGFlcyh4ID0gdm90ZWRfcHJvcF8yMDE1LCB5ID0gdm90ZWRfcHJvcF8yMDE5LCBjb2xvciA9IHN0YXR1c18yMDE5KSwgYWxwaGEgPSAwLjM1KSArCiAgZmFjZXRfd3JhcCh2YXJzKG1haW5fcGFydHkpKSArCiAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjYlBhbGV0dGUpICsKICBnZW9tX2FibGluZShpbnRlcmNlcHQgPSAwLCBzbG9wZSA9IDEsIGFscGhhID0gMC4xNSkKYGBgCgpQYXJ0aWVzIGluIHRoZSBvdGhlcnMgZ3JvdXBzIHNlZW1lZCB0byBoYXZlIGdhaW5lZCBtYW55IG11bmljaXBhbAp2b3Rlcy4gLSBJbiBjb250cmFyeSwgdGhlIEVSQyBoYXMgbG9zdCBtb3JlIHRoYW4gaXQgZ2FpbmVkIGFzIGNvbXBhcmVkCnRvIGxhc3QgeWVhcgoKIyMjIE1vcmUgQWR2YW5jZWQgRXhwbG9yYXRpb246IENsdXN0ZXJpbmcgbXVuaWNpcGFsaXRpZXMKCk9uIHRoaXMgcGFydCBvZiB0aGUgZXhwbG9yYXRpb24sIHdlIHRyeSB0byBjbHVzdGVyIHRoZSBtdW5pY2lwYWxpdGllcwphbmQgdWluZyB0aGUgbWFpbiBwYXJ0aWVzIGFzIHRoZSB2YXJpYWJsZXMgdG8gc2VlIHBhdHRlcm5zIHdpdGguCgpgYGB7cn0KcGFydGllc19jbHVzdGVyCmBgYAoKSWRlbnRpZnlpbmcgdGhlIHBhcnRpZXMgd2l0aCB0aGUgbW9zdCBudW1iZXIgb2Ygdm90ZXMgYnkgY29tcHV0aW5nIHRoZQptZWFuIG51bWJlciBvZiB2b3RlcyBpbiB0aGUgcGFzdCB0d28gZWxlY3Rpb24uIFdlIHdpbGwgdXNlIHRoaXMgdG8KaGlnaGxpZ2h0IHRoZSBtb3N0IHBvcHVsYXIgcGFydGllcy4KCldlIHRoZW4ganVzdCBzZWxlY3QgdGhlIG51bWVyaWNhbCB2YXJpYWJsZXMsIHJlbW92aW5nIHRoZSBtdW5pY2lwYWxpdHkKbmFtZXMgaW4gdGhlIHByb2Nlc3MuCgpgYGB7cn0KcGFydGllc19saXN0IDwtIHBhcnRpZXNfY2xlYW4kbWFpbl9wYXJ0eSAlPiUgCiAgdW5pcXVlKCkgJT4lIAogIHNvcnQoKQoKcGFydGllc19jbHVzdF9udW1zIDwtIHBhcnRpZXNfY2x1c3RlciAlPiUKICBzZWxlY3QoLW11bmljaXBhbGl0eSkKcGFydGllc19jbHVzdF9udW1zCmBgYAoKIyMjIEFwcGx5aW5nIEstbWVhbnMgY2x1c3RlcmluZwoKYGBge3J9CmsxIDwtIGttZWFucyhwYXJ0aWVzX2NsdXN0X251bXMsIDUpCmsyIDwtIGttZWFucyhwYXJ0aWVzX2NsdXN0X251bXMsIDUpCgp0YWJsZShrMSRjbHVzdGVyLCBrMiRjbHVzdGVyKQpwbG90KGsxJGNlbnRlcnNbLDNdLCBrMSRjZW50ZXJzWywyXSkKCmszIDwtIGttZWFucyhwYXJ0aWVzX2NsdXN0X251bXMsIDYpCnBsb3QoazMkY2VudGVyc1ssM10sIGszJGNlbnRlcnNbLDJdKQpgYGAKCiMjIyBIZWlyYXJjaGljYWwgY2x1c3RlcmluZwoKYGBge3J9CmQgIDwtIGRpc3QocGFydGllc19jbHVzdF9udW1zKQpoMSA8LSBoY2x1c3QoZCwgbWV0aG9kPSJ3YXJkLkQiKQpwbG90KGgxKQpgYGAKCkZyb20gdGhlIHBsb3QgYWJvdmUsIHNlZW1zIGxpa2Ugd2UgY2FuIGdyb3VwIHRoZSBtdW5pY2lwYWxpdGllcyBpbnRvIDMKY2x1c3RlcnMuIElmIHdlIGdvIGZ1cnRoZXIgZG93biwgaXQgY291bGQgYWxzbyBiZSBjdXQgZnVydGhlciBpbnRvIDcuCgpgYGB7cn0KYzEgPC0gY3V0cmVlKGgxLCAzKQpjMiA8LSBjdXRyZWUoaDEsIDcpCnRhYmxlKGMxLCBjMikKYGBgCgpMZXQncyBhZ2dyZWdhdGUgdGhlIHZhbHVlcyBvZiBldmVyeSB2YXJpYWJsZSBmb3IgZXZlcnkgZ3JvdXAgYmFzZWQgb24KaG93IHdlIGN1dCBpdCBpbiB0aGUgdHJlZQoKYGBge3J9CmNkZzEgPC0gYWdncmVnYXRlKGFzLmRhdGEuZnJhbWUocGFydGllc19jbHVzdF9udW1zKSwgbGlzdChjMSksIG1lYW4pCmNkZzIgPC0gYWdncmVnYXRlKGFzLmRhdGEuZnJhbWUocGFydGllc19jbHVzdF9udW1zKSwgbGlzdChjMiksIG1lYW4pCgpjZGcxCmNkZzIKYGBgCgojIyMgUGFpcndpc2UgdmlzdWFsaXphdGlvbiBiZXR3ZWVuIG1haW4gcGFydGllcwoKIyMjIyBVc2luZyAzIGNsYXNzZXMKCmBgYHtyfQpwYWlycyhwYXJ0aWVzX2NsdXN0X251bXMsIGNvbD1jMSkKYGBgCgojIyMjIFVzaW5nIDcgY2xhc3NlcwoKYGBge3J9CnBhaXJzKHBhcnRpZXNfY2x1c3RfbnVtcywgY29sPWMyKQpgYGAKClRoZSBjbHVzdGVyaW5nIG1ldGhvZCBhYm92ZSBuZWVkcyB0byBiZSBwcm9maWxlZCB0byBzZWUgdGhlCmNoYXJhY3RlcmlzdGljcyBvZiB0aGUgY2xhc3NlcyBpbiBhIG1vcmUgZGV0YWlsZWQgbGV2ZWwuCgojIyBWb3RlciB0dXJub3V0CgpEYXRhIHNvdXJjZSBmb3Igdm90ZXIgdHVybm91dCBoYXZlIHN1bW1hcml6ZWQgdGhlIHZvdGVzIHBlciBjb3VudHk6CjxodHRwczovL3d3dy5pZGVzY2F0LmNhdC9pbmRpY2Fkb3JzLz9pZD1hZWMmbj0xNTg5MyZ0ZW1hPWVsZWNjJnQ9MjAxOTAwPgoKYGBge3J9CmNvdW50aWVzX2NsZWFuCmBgYAoKVm90ZXIgdHVybm91dCBzZWVtIHRvIGhhdmUgc2hpZnRlZCB3aXRoIGEgbWVkaWFuIG9mIDYxJSB2b3RlciB0dXJub3V0IGluCjIwMTUgdG8gNjguOCUgaW4gMjAxOS4gVm90ZXIgdHVybm91dCBoYXMgYmVlbiBoaWdoZXIgaW4gMjAxOSBjb21wYXJlZCB0bwp0aGUgcHJldmlvdXMgeWVhciBvZiAyMDE1IGJ5IDcuOCUuCgpgYGB7cn0KbWVkX3Z0IDwtIGNvdW50aWVzX2NsZWFuICU+JQogIGdyb3VwX2J5KHllYXIpICU+JQogIHN1bW1hcml6ZSh2b3Rlcl90dXJub3V0ID0gbWVkaWFuKHZvdGVyX3R1cm5vdXQpKQptZWRfdnQKYGBgCgpgYGB7cn0KZ2dwbG90KGNvdW50aWVzX2NsZWFuLCBhZXMoeCA9IHZvdGVyX3R1cm5vdXQsIHkgPSAxKSkgKwogIGdlb21fYm94cGxvdCgpICsKICBmYWNldF9ncmlkKHJvd3MgPSB2YXJzKHllYXIpKQpgYGAKClByaW9yYXQgYW5kIFRlcnJhIEFsdGEgaGFkIGFuIGluY3JlZGlibHkgaGlnaCB2b3RlciB0dXJub3V0IGNvbXBhcmVkIHRvCnRoZSByZXN0IGluIDIwMTUgYXQgNzUlIGFuZCA3OC43JS4KCmBgYHtyfQpjb3VudGllc19jbGVhbiAlPiUKICBmaWx0ZXIodm90ZXJfdHVybm91dCA+IDc1ICYgeWVhciA9PSAiMjAxNSIpCmBgYAoKSGVyZSBpcyBhIG1vcmUgZGV0YWlsZWQgdmlldyBvZiB0aGUgZGlzdHJpYnV0aW9uIG9mIGNvdW50aWVzIG9uIHZvdGVyCnR1cm5vdmVyIHBlcmNlbnRhZ2VzLgoKYGBge3J9CmdncGxvdChjb3VudGllc19jbGVhbikgKwogIGdlb21faGlzdG9ncmFtKGFlcyh4ID0gdm90ZXJfdHVybm91dCksIGJpbnMgPSAzMCkgKwogICMgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gbWVkaWFuKHZvdGVyX3R1cm5vdXQpKSArCiAgZmFjZXRfZ3JpZChyb3dzID0gdmFycyh5ZWFyKSkKYGBgCg==