Position idéologique des cantons

[Code seulement]

library(tidyverse)
library(FactoMineR)
library(factoextra)
load("votation.Rda")
v_pca <-
  votation %>% 
  group_by(canton,id_objet) %>% 
  filter(date==last(date)) %>% 
  select(-date) %>% 
  ungroup() %>% 
  spread(id_objet,oui_en,drop = TRUE) 
pca <- 
  v_pca %>%
  column_to_rownames("canton") %>% 
  PCA(graph = FALSE)
get_eigenvalue(pca) %>% 
  head()
##       eigenvalue variance.percent cumulative.variance.percent
## Dim.1  235.60048        36.470662                    36.47066
## Dim.2  125.96457        19.499159                    55.96982
## Dim.3   42.55110         6.586858                    62.55668
## Dim.4   33.22625         5.143382                    67.70006
## Dim.5   29.88263         4.625794                    72.32586
## Dim.6   24.64543         3.815083                    76.14094
fviz_eig(pca, addlabels = TRUE, ylim = c(0, 50))

var_info <- get_pca_var(pca)
var_info
## Principal Component Analysis Results for variables
##  ===================================================
##   Name       Description                                    
## 1 "$coord"   "Coordinates for the variables"                
## 2 "$cor"     "Correlations between variables and dimensions"
## 3 "$cos2"    "Cos2 for the variables"                       
## 4 "$contrib" "contributions of the variables"
tab_dim <- 
  var_info$cor[,1:2] %>% 
  as.data.frame() %>% 
  rownames_to_column("objet") %>% 
  arrange(objet) %>% 
  filter(Dim.1>=0.75 | Dim.1<=-0.75 | Dim.2>=0.75 | Dim.2<=-0.75)

dim1p <- tab_dim %>% filter(Dim.1 >=0.75) %>% arrange(desc(Dim.1)) %>% pull(objet)
dim1m <- tab_dim %>% filter(Dim.1 <=-0.75) %>% arrange(desc(Dim.1)) %>% pull(objet)
dim2p <- tab_dim %>% filter(Dim.2 >=0.75) %>% arrange(desc(Dim.2)) %>% pull(objet)
dim2m <- tab_dim %>% filter(Dim.2 <=-0.75) %>% arrange(desc(Dim.2)) %>% pull(objet)
tab_dim %>%
  DT::datatable(filter="bottom")
# Gauche
tab_dim %>% 
  select(id_objet=objet,dim1=Dim.1,dim2=Dim.2) %>% 
  full_join(index) %>% 
  top_n(10,dim1)
##    id_objet      dim1         dim2
## 1     I_193 0.9447864 -0.108277539
## 2     I_296 0.9626201 -0.067493771
## 3     I_323 0.9374907 -0.202850284
## 4     I_332 0.9515649 -0.196903514
## 5     I_356 0.9459552 -0.042300929
## 6     I_395 0.9698697 -0.063541152
## 7     I_399 0.9488051 -0.027699382
## 8     I_403 0.9412257 -0.157943312
## 9     I_413 0.9512593 -0.119741722
## 10    I_584 0.9574159 -0.009958871
##                                                                                                                                                                                   objet
## 1                                                                                                              Arrêté fédéral sur l'institution du suffrage féminin en matière fédérale
## 2                                                                                                                              Initiative populaire «Davantage de logements abordables»
## 3                                                                                                            Initiative populaire «Oui à I'abrogation du service militaire obligatoire»
## 4                                                                                                                                         Initiative populaire «pour des loyers loyaux»
## 5                                                                               Initiative populaire «Pour la protection de salaires équitables (Initiative sur les salaires minimums)»
## 6                                                                 Initiative populaire «Pour une économie durable et fondée sur une gestion efficiente des ressources (économie verte)»
## 7                                                                                     Initiative populaire «Pour une interdiction du financement des producteurs de matériel de guerre»
## 8                                                                                              Initiative populaire «Pour une offre appropriée en matière de formation professionnelle»
## 9                                                               Initiative populaire «pour une représentation équitable des femmes dans les autorités fédérales (initiative du 3 mars)»
## 10 Loi fédérale sur la procédure de l'Assemblée fédérale, ainsi que sur la forme, la publication et l'entrée en vigueur des actes législatifs (Loi sur les rapports entre les conseils)
# Droite
tab_dim %>% 
  select(id_objet=objet,dim1=Dim.1,dim2=Dim.2) %>% 
  full_join(index) %>% 
  top_n(-10,dim1)
##    id_objet       dim1       dim2
## 1     I_166 -0.8902044  0.2146573
## 2     I_308 -0.8894912  0.3414956
## 3     I_371 -0.8428085  0.2503611
## 4     I_501 -0.8522304  0.2458008
## 5     I_516 -0.8285178 -0.2518822
## 6     I_600 -0.8734097  0.3020095
## 7     I_616 -0.8596307  0.4446306
## 8     I_625 -0.8840915  0.3765081
## 9     I_637 -0.8883511  0.3280253
## 10    I_639 -0.8805601  0.3966826
##                                                                                                                                                                           objet
## 1                                                                                                           Arrêté fédéral relatif à l’acquisition de nouveaux avions de combat
## 2  Initiative populaire «Financer l'avortement est une affaire privée - Alléger l'assurance-maladie en radiant les coûts de l'interruption de grossesse de l'assurance de base»
## 3                                                                                                                 Initiative populaire «Pour le renvoi des étrangers criminels»
## 4                                                                                                               Initiative sur le renvoi et contre-projet: question subsidiaire
## 5                                                                                                  Loi fédérale concernant la révision de l'art. 65 de la Constitution fédérale
## 6                                                                                                           Loi fédérale sur le fonds d'acquisition de l'avion de combat Gripen
## 7                                                                                                                                                Loi fédérale sur les étrangers
## 8                                                                                                         Loi sur l'asile (LAsi) (Modifications urgentes de la loi sur l'asile)
## 9                                 Modification de la loi fédérale sur la partie générale du droit des assurances sociales (LPGA) (Base légale pour la surveillance des assurés)
## 10                                                                                                                                           Modification de la loi sur l'asile
# Circulation
tab_dim %>% 
  select(id_objet=objet,dim1=Dim.1,dim2=Dim.2) %>% 
  full_join(index) %>% 
  top_n(10,dim2)
##    id_objet        dim1      dim2
## 1     I_001  0.06560202 0.8485158
## 2     I_035  0.14099809 0.9092573
## 3     I_062 -0.13745469 0.8628387
## 4     I_288 -0.18732685 0.8631131
## 5     I_291 -0.07595465 0.9189093
## 6     I_405  0.18373081 0.8510514
## 7     I_411 -0.14272030 0.8697155
## 8     I_468  0.18482277 0.8759981
## 9     I_573 -0.31407337 0.8832329
## 10    I_574  0.03244058 0.8565908
##                                                                                                                                                                                                                                                objet
## 1  Arrêté du conseil fédéral relatif à la votation populaire sur l'arrêté fédéral du 26 mars 1895 (dispositions addittionnelles concernant l'introduction du monopole des allumettes, destinées à compléter la constitution fédérale du 29 mai 1874)
## 2                                                                                                                                  Arrêté fédéral concernant l'initiative populaire «sur l'indemnisation des victimes d'actes de violence criminels»
## 3                                                                                                                                                  Arrêté fédéral concernant la prorogation de la redevance pour l'utilisation des routes nationales
## 4                                                                                                                                                    Initiative populaire «contre la construction d'une autoroute entre Bienne et Soleure / Zuchwil»
## 5                                                                                                                                                                                           Initiative populaire «contre le bradage du sol national»
## 6                                                                                                                                    Initiative populaire «pour une politique raisonnable en matière de chanvre protégeant efficacement la jeunesse»
## 7                                                                                                                                                                       Initiative populaire «pour une région sans autoroute entre Morat et Yverdon»
## 8                                                Initiative populaire pour l'insertion dans la constitution fédérale d'un article 41bis et la modification de l'article 42, lettre f, de cette constitution (introduction de l'impôt fédéral direct)
## 9                                                                                                                                                                                                           Loi fédérale sur la circulation routière
## 10                                                                                                                                                                                               Loi fédérale sur la comptabilité des chemins de fer
# 
tab_dim %>% 
  select(id_objet=objet,dim1=Dim.1,dim2=Dim.2) %>% 
  full_join(index) %>% 
  top_n(-20,dim2)
##    id_objet        dim1       dim2
## 1     I_188  0.85341177 -0.4202788
## 2     I_191  0.82551514 -0.4386918
## 3     I_215  0.05113419 -0.7965376
## 4     I_235  0.27115034 -0.7655515
## 5     I_263  0.21145255 -0.7667962
## 6     I_301  0.82621623 -0.3768496
## 7     I_330  0.86109337 -0.4245615
## 8     I_348  0.79283142 -0.4236984
## 9     I_365  0.80303857 -0.5328919
## 10    I_379  0.78648759 -0.4704537
## 11    I_390  0.85399919 -0.3962443
## 12    I_414  0.76059288 -0.5170815
## 13    I_419  0.44853248 -0.8002866
## 14    I_476 -0.31345093 -0.7633349
## 15    I_548  0.27647908 -0.7563380
## 16    I_560  0.81029320 -0.3939614
## 17    I_561  0.83413682 -0.5150047
## 18    I_585  0.77305520 -0.4465121
## 19    I_591  0.81582603 -0.3842395
## 20    I_602  0.88244677 -0.4221226
##                                                                                                                                                                                                                objet
## 1                                                                                                                    Arrêté fédéral sur l'acquisition de la nationalité par les étrangers de la troisième génération
## 2                                                                                                                                                              Arrêté fédéral sur l'espace économique européen (EEE)
## 3                                                                                                                                                                                  Arrêté fédéral sur la viticulture
## 4                                                                                                                                                                     Arrêté sur l'économie laitière 1988 (AEL 1988)
## 5                                                             Contre-projet de l'Assemblée fédérale relatif à  l'initiative populaire «pour une agriculture paysanne compétitive et respectueuse de l'environnement»
## 6                                                                                                                                                 Initiative populaire «Droits égaux pour les personnes handicapées»
## 7                                                   Initiative populaire «Pour des denrées alimentaires saines et produites dans des conditions équitables et écologiques (initiative pour des aliments équitables)»
## 8                                                                                                                       Initiative populaire «pour la 10e révision de l'AVS sans relèvement de l'âge de la retraite»
## 9                                                                                                                Initiative populaire «Pour la souveraineté alimentaire. L'agriculture nous concerne toutes et tous»
## 10                                                                                                 Initiative populaire «pour un assouplissement de l'AVS - contre le relèvement de l'âge de la retraite des femmes»
## 11                                                                                                                                                  Initiative populaire «Pour une caisse maladie unique et sociale»
## 12                                                                                                          Initiative populaire «pour une retraite à la carte dès 62 ans, tant pour les femmes que pour les hommes»
## 13                                                                                                                                                                        Initiative populaire «pro vitesse 130/100»
## 14                                                                                                                                                   Initiative populaire pour la revision totale de la constitution
## 15                                                                                                                                                      Loi fédérale sur l'agriculture (contributions de solidarité)
## 16                                                                                                                                                                      Loi fédérale sur l'assurance-maladie (LAMal)
## 17                                                                                                                                                                            Loi fédérale sur l'assurance-maternité
## 18                                                                                                                                                      Loi fédérale sur la procréation médicalement assistée (LPMA)
## 19                                                                                                                                                                        Loi fédérale sur la radio et la télévision
## 20 Loi fédérale sur le régime des allocations pour perte de gain en faveur des personnes servant dans l'armée, dans le service civil ou dans la protection civile (Loi sur les allocations pour perte de gain, LAPG)
fviz_pca_var(pca, col.var = "cos2",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
             repel = TRUE)

fviz_contrib(pca, choice = "var", axes = 1, top = 10)

fviz_contrib(pca, choice = "var", axes = 2, top = 10)

fviz_pca_var(pca, col.var = "contrib",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"))

index %>% 
  DT::datatable(filter="bottom")
fviz_pca_ind(pca, col.ind = "cos2", pointsize = "cos2",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
             repel = TRUE 
             ) + 
  labs(title = "Classification des cantons selon leur attitudes de votes",
       x = "Droite                                                                        Gauche",
       y = "Liberal                                                                    Etat fort")

vot_cor <- 
  var_info$cor %>% 
  as.data.frame() %>% 
  rownames_to_column("id_objet") %>% 
  select(1:3) %>% 
  janitor::clean_names() 

vot_cor %>% 
  ggplot(aes(dim_1,dim_2)) +
  geom_point()