Chapitre 6 Analyse graphique multivariée
Dans ce chapitre, on généralise à des ensembles de variables.
6.1 La confiance institutionnelle, en détail
On veut reprénter 6 variables, correspondant à 5 types d’habitats et 2 pays.
<-readRDS("./data/dfTrust.rds)")
df
<-df %>%
radgroup_by (habitat,cntry) %>%
summarize(Partis=mean(Partis, na.rm=TRUE),
Parlement=mean(Parlement, na.rm=TRUE),
Politiques=mean(Politiques, na.rm=TRUE),
Police=mean(Police, na.rm=TRUE),
Justice=mean(Justice, na.rm=TRUE),
NationsUnies=mean(NationsUnies, na.rm=TRUE),
ParlementEurop=mean(ParlementEurop, na.rm=TRUE)) %>%
filter(!is.na(habitat)) %>%
gather(variable, value, -habitat, -cntry)
ggplot(rad, aes(x=reorder(variable, value),y=value, group=habitat))+
geom_line(aes(color=habitat), size=2)+
facet_grid(.~cntry) +coord_flip()+
scale_color_brewer(type="div",palette=3)+labs(title= "Les éléments de la confiance institutionnelle", caption="ESS2002-2018",y= "confiance (de 1 à 10)",x="institutions")
Une autre variante qui donne l’évolution de l’évolution de les éléments de la confiance institutionnelle
<-df %>%
radgroup_by (Year,cntry) %>%
summarize(Partis=mean(Partis, na.rm=TRUE),
Parlement=mean(Parlement, na.rm=TRUE),
Politiques=mean(Politiques, na.rm=TRUE),
Police=mean(Police, na.rm=TRUE),
Justice=mean(Justice, na.rm=TRUE),
NationsUnies=mean(NationsUnies, na.rm=TRUE),
ParlementEurop=mean(ParlementEurop, na.rm=TRUE)) %>%
gather(variable, value, -Year, -cntry)
ggplot(rad, aes(x=Year,y=value, group=variable))+
geom_line(aes(color=variable), size=1.2)+
facet_wrap(.~cntry, nrow=1) +
scale_color_brewer(palette="Spectral")+labs(title= "Les éléments de la confiance institutionnelle", caption="ESS2002-2018",y= "confiance (de 1 à 10)",x="institutions")
La différence entre les deux pays est claire, la rupture est accusée plus fortement en France qu’en Allemagne. L’explication n’est sans doute pas culturelle mais démographique, un coup d’oeil à la carte des densité permet de comprendre mieux : https://www.populationdata.net/cartes/allemagne-france-densite-de-population-2011/.
On pourra tenté un graphe en radar. Mais il n’est pas si convaincant.
library(fmsb)
<-df %>% filter(cntry=="FR") %>%
radgroup_by (habitat) %>%
summarize(Partis=mean(Partis, na.rm=TRUE),
Parlement=mean(Parlement, na.rm=TRUE),
Politiques=mean(Politiques, na.rm=TRUE),
Police=mean(Police, na.rm=TRUE),
Justice=mean(Justice, na.rm=TRUE),
NationsUnies=mean(NationsUnies, na.rm=TRUE),
ParlementEurop=mean(ParlementEurop, na.rm=TRUE)) %>%
filter(!is.na(habitat)) %>%
::select(-habitat)
dplyr
#on doit indiquer les valeurs minimale et maximale - la fonction rep permet de repeter (ici 7 fois pour les 7 variables/col)
<- rbind(rep(7,7) , rep(3,7) , rad)
data #l'autre method c'est ce choisir maxmin=FALSE
#rownames(rad) <- c("big city", "suburbs" ,"town","village", "countryside")
radarchart(rad, axistype=0, seg=4, title="Moyenne par institution", maxmin=FALSE)
legend(x=0.7, y=1, legend = rownames(rad), bty = "n",text.col = "grey", cex=1.2, pt.cex=3)
6.2 Table de corrélation
Comparer les moyennes est une chose, on souhaiter en plus savoir quelle structure de corrélation les caractérisent. Rien de plus simple
library(ggcorrplot)
<-readRDS("./data/dfTrust.rds)")%>%filter(Year==2018)
df
<-df %>% dplyr::select(NationsUnies,ParlementEurop, Parlement, Justice, Police, Politiques, Partis) %>%
foodrop_na()
<-cor(foo)
r
ggcorrplot(r, hc.order = TRUE, type = "lower",
lab = TRUE)
<-paste0("./plot/g1",".jpg")
gggsave(g,plot=last_plot(), width = 27, height = 19, units = "cm")
6.3 Un cas plus complexe : présidentielle2020
Nsppolls cumulent les sondages publiés des grands instituts. On utilise ces données , ainsi qu’une boucle, pour explorer différents paramètre d’un modèle de lissage.
Le but : mieux percevoir les tendance par une sorte de méta-analyse des différents sondages :
6.4 une boucle pour produire de multiple graphe en variant un paramètre
library(lubridate)
<-.5
alph
for (alph in seq(from=0, to= 1, by=.05)){
<- read_delim("https://raw.githubusercontent.com/nsppolls/nsppolls/master/presidentielle.csv",
df_pol delim = ",", escape_double = FALSE, trim_ws = TRUE)%>%
filter(tour=="Premier tour") %>%filter(candidat=="Eric Zemmour"|
== "Marine Le Pen"|
candidat== "Emmanuel Macron"|
candidat== "Jean-Luc Mélenchon"|
candidat== "Yannick Jadot"|
candidat== "Valérie Pécresse"|
candidat=="Fabien Roussel"|
candidat=="Anne Hidalgo") %>%
candidatfilter(fin_enquete>ymd("2022-01-09")) # on commence en septembre , octobre est-il meilleur ?
table(df_pol$candidat)
<-c("pink", "orange", "gray20", "red","firebrick", "Royalblue", " skyblue", "Chartreuse")
SensiP1
ggplot(df_pol, aes(y=intentions, x=fin_enquete))+
geom_point(aes(color=candidat), size=.5, alpha=1-alph)+
geom_smooth(span = alph, aes(col=candidat,fill=candidat), alpha=0.2)+
scale_color_manual(values=SensiP1)+
scale_fill_manual(values=SensiP1)+
labs(title= "Evolution des intentions de vote #présidentielle2022 1er tour",
subtitle =paste("Lissage méthode loess. alpha=",alph, " - ci=95%"),
caption = "data @nsppolls viz @benavent",
x=NULL)+theme_minimal()+scale_x_date(date_breaks = "1 month", date_minor_breaks = "1 week",
date_labels = "%B")
<-paste0("./nsppolls/sondage_nsppolls", alph*20, ".jpg")
sondage_nsppollsggsave(sondage_nsppolls,plot=last_plot(), width = 27, height = 19, units = "cm")
}
<-df_pol%>%
nmutate(n=1)%>%
group_by(id)%>%summarise(n=sum(n))
#nombre de sondage
<-nrow(n) n
Pour créer le gif on emplie magick. On a pris soin de sauvegarder les graphes dans un répertoire propre, ça facilite la lecture en boucle et la fabrication du gif.
library(magick)
#gif
#on constitue une liste des noms des fichier *.jpg que l'on veut associer
<- paste0("./nsppolls/","sondage_nsppolls", 0:20,".jpg")
frames
#on lit et on stoke dans m les images
<- image_read(frames)
m
#on fabrique et on sauvergarde le gif
<- image_animate(m, fps=1)
m image_write(m, "./plot/sondages_lissage.gif")
6.4.1 effet sondeur
pour anticiper sur le chapitre suivant
<-df_pol%>%
foo::select(candidat, intentions, fin_enquete, echantillon,nom_institut)%>%
dplyrgroup_by(nom_institut, candidat)%>%
summarise(moy=mean(intentions, na.rm=TRUE),
std=sd(intentions, na.rm=TRUE))
<-c("gray90","gray20", "Royalblue", "skyblue", "orange", "yellow", "pink", "firebrick", "green", "gold1", "gold2")
SensiP2
<-ggplot(foo,aes(x=candidat,y=moy))+
ggeom_segment(aes(x = candidat,
y = -std+moy,
xend = candidat,
yend = std+moy,
color = nom_institut), size=1.2)+
geom_point(aes(color=nom_institut), size=2)+
scale_color_manual(values = SensiP2)+
theme_minimal()+
coord_flip()
g
6.5 Modéliser le biais du sondeur
http://www.stat.yale.edu/Courses/1997-98/101/anovareg.htm
$tps<-2
df_pol$tps[df_pol$fin_enquete < ymd("2022-01-31")]<-1
df_pol
$tps[df_pol$fin_enquete > ymd("2022-03-01")]<-3
df_pol
$tps<- as.factor(df_pol$tps)
df_pol
<- lm(intentions~candidat*tps,data=df_pol)
fit1anova(fit1)
## Analysis of Variance Table
##
## Response: intentions
## Df Sum Sq Mean Sq F value Pr(>F)
## candidat 7 122735 17533.6 10705.9435 < 2.2e-16 ***
## tps 2 25 12.7 7.7658 0.0004363 ***
## candidat:tps 14 4534 323.9 197.7554 < 2.2e-16 ***
## Residuals 2096 3433 1.6
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
<- lm(intentions~candidat*tps+candidat*nom_institut,data=df_pol)
fit2anova(fit2)
## Analysis of Variance Table
##
## Response: intentions
## Df Sum Sq Mean Sq F value Pr(>F)
## candidat 7 122735 17533.6 12742.2074 < 2.2e-16 ***
## tps 2 25 12.7 9.2428 0.000101 ***
## nom_institut 10 25 2.5 1.8283 0.051096 .
## candidat:tps 14 4534 323.9 235.3684 < 2.2e-16 ***
## candidat:nom_institut 70 633 9.0 6.5768 < 2.2e-16 ***
## Residuals 2016 2774 1.4
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fit1,fit2)
## Analysis of Variance Table
##
## Model 1: intentions ~ candidat * tps
## Model 2: intentions ~ candidat * tps + candidat * nom_institut
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 2096 3432.7
## 2 2016 2774.1 80 658.65 5.9832 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(fit1)
##
## Call:
## lm(formula = intentions ~ candidat * tps, data = df_pol)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.2585 -0.6350 -0.0278 0.6021 5.6493
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.1765 0.1792 17.726 < 2e-16 ***
## candidatEmmanuel Macron 21.5392 0.2534 84.992 < 2e-16 ***
## candidatEric Zemmour 9.7549 0.2534 38.492 < 2e-16 ***
## candidatFabien Roussel -0.8039 0.2534 -3.172 0.001535 **
## candidatJean-Luc Mélenchon 6.4118 0.2534 25.300 < 2e-16 ***
## candidatMarine Le Pen 13.7353 0.2534 54.198 < 2e-16 ***
## candidatValérie Pécresse 13.2255 0.2534 52.187 < 2e-16 ***
## candidatYannick Jadot 2.7255 0.2534 10.755 < 2e-16 ***
## tps2 -0.6765 0.2342 -2.888 0.003915 **
## tps3 -0.9765 0.2089 -4.674 3.14e-06 ***
## candidatEmmanuel Macron:tps2 0.6844 0.3312 2.066 0.038934 *
## candidatEric Zemmour:tps2 2.0645 0.3312 6.233 5.52e-10 ***
## candidatFabien Roussel:tps2 2.1511 0.3312 6.494 1.04e-10 ***
## candidatJean-Luc Mélenchon:tps2 1.6438 0.3312 4.963 7.52e-07 ***
## candidatMarine Le Pen:tps2 0.5842 0.3312 1.764 0.077955 .
## candidatValérie Pécresse:tps2 -0.9616 0.3312 -2.903 0.003734 **
## candidatYannick Jadot:tps2 -0.1630 0.3312 -0.492 0.622725
## candidatEmmanuel Macron:tps3 4.6819 0.2955 15.847 < 2e-16 ***
## candidatEric Zemmour:tps3 -1.0570 0.2955 -3.578 0.000355 ***
## candidatFabien Roussel:tps3 2.0919 0.2955 7.080 1.95e-12 ***
## candidatJean-Luc Mélenchon:tps3 5.1319 0.2955 17.370 < 2e-16 ***
## candidatMarine Le Pen:tps3 3.4154 0.2955 11.560 < 2e-16 ***
## candidatValérie Pécresse:tps3 -4.8670 0.2955 -16.473 < 2e-16 ***
## candidatYannick Jadot:tps3 0.4724 0.2955 1.599 0.109995
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.28 on 2096 degrees of freedom
## Multiple R-squared: 0.9737, Adjusted R-squared: 0.9735
## F-statistic: 3379 on 23 and 2096 DF, p-value: < 2.2e-16
summary(fit2)
##
## Call:
## lm(formula = intentions ~ candidat * tps + candidat * nom_institut,
## data = df_pol)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.7981 -0.5456 -0.0272 0.5924 5.2019
##
## Coefficients:
## Estimate Std. Error
## (Intercept) 3.39409 1.18971
## candidatEmmanuel Macron 20.60082 1.68251
## candidatEric Zemmour 10.59844 1.68251
## candidatFabien Roussel -2.19508 1.68251
## candidatJean-Luc Mélenchon 11.04593 1.68251
## candidatMarine Le Pen 15.30968 1.68251
## candidatValérie Pécresse 7.55835 1.68251
## candidatYannick Jadot 2.30826 1.68251
## tps2 -0.68106 0.21565
## tps3 -0.99409 0.19847
## nom_institutBVA -0.30224 1.23753
## nom_institutCluster17 -0.84531 1.21657
## nom_institutElabe -0.71509 1.21215
## nom_institutHarris Interactive -0.18347 1.21291
## nom_institutIfop -0.18249 1.18474
## nom_institutIpsos -0.08904 1.19038
## nom_institutKantar Public -0.47826 1.31223
## nom_institutOdoxa -0.67101 1.35576
## nom_institutOpinion Way -0.04925 1.18126
## nom_institutYouGov -1.40000 1.65893
## candidatEmmanuel Macron:tps2 0.73921 0.30498
## candidatEric Zemmour:tps2 2.12294 0.30498
## candidatFabien Roussel:tps2 2.12788 0.30498
## candidatJean-Luc Mélenchon:tps2 1.71555 0.30498
## candidatMarine Le Pen:tps2 0.60025 0.30498
## candidatValérie Pécresse:tps2 -0.97779 0.30498
## candidatYannick Jadot:tps2 -0.15932 0.30498
## candidatEmmanuel Macron:tps3 4.79918 0.28068
## candidatEric Zemmour:tps3 -0.99844 0.28068
## candidatFabien Roussel:tps3 2.09508 0.28068
## candidatJean-Luc Mélenchon:tps3 5.15407 0.28068
## candidatMarine Le Pen:tps3 3.59032 0.28068
## candidatValérie Pécresse:tps3 -4.65835 0.28068
## candidatYannick Jadot:tps3 0.29174 0.28068
## candidatEmmanuel Macron:nom_institutBVA 0.75768 1.75014
## candidatEric Zemmour:nom_institutBVA -0.46013 1.75014
## candidatFabien Roussel:nom_institutBVA 1.43661 1.75014
## candidatJean-Luc Mélenchon:nom_institutBVA -4.47432 1.75014
## candidatMarine Le Pen:nom_institutBVA -1.61439 1.75014
## candidatValérie Pécresse:nom_institutBVA 5.43117 1.75014
## candidatYannick Jadot:nom_institutBVA 0.47709 1.75014
## candidatEmmanuel Macron:nom_institutCluster17 0.21696 1.72049
## candidatEric Zemmour:nom_institutCluster17 0.93708 1.72049
## candidatFabien Roussel:nom_institutCluster17 1.75386 1.72049
## candidatJean-Luc Mélenchon:nom_institutCluster17 -1.72026 1.72049
## candidatMarine Le Pen:nom_institutCluster17 -2.63348 1.72049
## candidatValérie Pécresse:nom_institutCluster17 5.22876 1.72049
## candidatYannick Jadot:nom_institutCluster17 0.59139 1.72049
## candidatEmmanuel Macron:nom_institutElabe 1.38103 1.71424
## candidatEric Zemmour:nom_institutElabe -1.35629 1.71424
## candidatFabien Roussel:nom_institutElabe 1.64477 1.71424
## candidatJean-Luc Mélenchon:nom_institutElabe -3.52444 1.71424
## candidatMarine Le Pen:nom_institutElabe -0.78677 1.71424
## candidatValérie Pécresse:nom_institutElabe 5.34773 1.71424
## candidatYannick Jadot:nom_institutElabe 0.80139 1.71424
## candidatEmmanuel Macron:nom_institutHarris Interactive 1.05598 1.71531
## candidatEric Zemmour:nom_institutHarris Interactive -0.57494 1.71531
## candidatFabien Roussel:nom_institutHarris Interactive 0.83821 1.71531
## candidatJean-Luc Mélenchon:nom_institutHarris Interactive -3.70231 1.71531
## candidatMarine Le Pen:nom_institutHarris Interactive -0.96863 1.71531
## candidatValérie Pécresse:nom_institutHarris Interactive 4.65034 1.71531
## candidatYannick Jadot:nom_institutHarris Interactive 0.56962 1.71531
## candidatEmmanuel Macron:nom_institutIfop 1.34434 1.67547
## candidatEric Zemmour:nom_institutIfop -0.55201 1.67547
## candidatFabien Roussel:nom_institutIfop 1.38693 1.67547
## candidatJean-Luc Mélenchon:nom_institutIfop -4.84893 1.67547
## candidatMarine Le Pen:nom_institutIfop -1.37146 1.67547
## candidatValérie Pécresse:nom_institutIfop 5.78598 1.67547
## candidatYannick Jadot:nom_institutIfop 0.22809 1.67547
## candidatEmmanuel Macron:nom_institutIpsos 0.79936 1.68345
## candidatEric Zemmour:nom_institutIpsos -0.87532 1.68345
## candidatFabien Roussel:nom_institutIpsos 1.26446 1.68345
## candidatJean-Luc Mélenchon:nom_institutIpsos -4.62283 1.68345
## candidatMarine Le Pen:nom_institutIpsos -2.71909 1.68345
## candidatValérie Pécresse:nom_institutIpsos 4.63358 1.68345
## candidatYannick Jadot:nom_institutIpsos 1.44225 1.68345
## candidatEmmanuel Macron:nom_institutKantar Public 1.11499 1.85577
## candidatEric Zemmour:nom_institutKantar Public 0.49465 1.85577
## candidatFabien Roussel:nom_institutKantar Public 1.34180 1.85577
## candidatJean-Luc Mélenchon:nom_institutKantar Public -4.09037 1.85577
## candidatMarine Le Pen:nom_institutKantar Public -1.02748 1.85577
## candidatValérie Pécresse:nom_institutKantar Public 4.67986 1.85577
## candidatYannick Jadot:nom_institutKantar Public -0.11224 1.85577
## candidatEmmanuel Macron:nom_institutOdoxa 1.45332 1.91734
## candidatEric Zemmour:nom_institutOdoxa -1.47379 1.91734
## candidatFabien Roussel:nom_institutOdoxa 1.92240 1.91734
## candidatJean-Luc Mélenchon:nom_institutOdoxa -4.05383 1.91734
## candidatMarine Le Pen:nom_institutOdoxa 0.76336 1.91734
## candidatValérie Pécresse:nom_institutOdoxa 4.03981 1.91734
## candidatYannick Jadot:nom_institutOdoxa 0.55035 1.91734
## candidatEmmanuel Macron:nom_institutOpinion Way 0.50026 1.67056
## candidatEric Zemmour:nom_institutOpinion Way -1.46076 1.67056
## candidatFabien Roussel:nom_institutOpinion Way 1.44706 1.67056
## candidatJean-Luc Mélenchon:nom_institutOpinion Way -5.45426 1.67056
## candidatMarine Le Pen:nom_institutOpinion Way -1.84075 1.67056
## candidatValérie Pécresse:nom_institutOpinion Way 6.12136 1.67056
## candidatYannick Jadot:nom_institutOpinion Way 0.33856 1.67056
## candidatEmmanuel Macron:nom_institutYouGov 0.60000 2.34608
## candidatEric Zemmour:nom_institutYouGov -1.60000 2.34608
## candidatFabien Roussel:nom_institutYouGov 1.10000 2.34608
## candidatJean-Luc Mélenchon:nom_institutYouGov -2.20000 2.34608
## candidatMarine Le Pen:nom_institutYouGov 5.10000 2.34608
## candidatValérie Pécresse:nom_institutYouGov 4.10000 2.34608
## candidatYannick Jadot:nom_institutYouGov 2.40000 2.34608
## t value Pr(>|t|)
## (Intercept) 2.853 0.004377 **
## candidatEmmanuel Macron 12.244 < 2e-16 ***
## candidatEric Zemmour 6.299 3.66e-10 ***
## candidatFabien Roussel -1.305 0.192163
## candidatJean-Luc Mélenchon 6.565 6.59e-11 ***
## candidatMarine Le Pen 9.099 < 2e-16 ***
## candidatValérie Pécresse 4.492 7.44e-06 ***
## candidatYannick Jadot 1.372 0.170242
## tps2 -3.158 0.001611 **
## tps3 -5.009 5.96e-07 ***
## nom_institutBVA -0.244 0.807081
## nom_institutCluster17 -0.695 0.487241
## nom_institutElabe -0.590 0.555298
## nom_institutHarris Interactive -0.151 0.879779
## nom_institutIfop -0.154 0.877598
## nom_institutIpsos -0.075 0.940383
## nom_institutKantar Public -0.364 0.715551
## nom_institutOdoxa -0.495 0.620703
## nom_institutOpinion Way -0.042 0.966747
## nom_institutYouGov -0.844 0.398816
## candidatEmmanuel Macron:tps2 2.424 0.015445 *
## candidatEric Zemmour:tps2 6.961 4.55e-12 ***
## candidatFabien Roussel:tps2 6.977 4.07e-12 ***
## candidatJean-Luc Mélenchon:tps2 5.625 2.11e-08 ***
## candidatMarine Le Pen:tps2 1.968 0.049184 *
## candidatValérie Pécresse:tps2 -3.206 0.001367 **
## candidatYannick Jadot:tps2 -0.522 0.601458
## candidatEmmanuel Macron:tps3 17.098 < 2e-16 ***
## candidatEric Zemmour:tps3 -3.557 0.000383 ***
## candidatFabien Roussel:tps3 7.464 1.24e-13 ***
## candidatJean-Luc Mélenchon:tps3 18.363 < 2e-16 ***
## candidatMarine Le Pen:tps3 12.791 < 2e-16 ***
## candidatValérie Pécresse:tps3 -16.597 < 2e-16 ***
## candidatYannick Jadot:tps3 1.039 0.298749
## candidatEmmanuel Macron:nom_institutBVA 0.433 0.665115
## candidatEric Zemmour:nom_institutBVA -0.263 0.792645
## candidatFabien Roussel:nom_institutBVA 0.821 0.411826
## candidatJean-Luc Mélenchon:nom_institutBVA -2.557 0.010644 *
## candidatMarine Le Pen:nom_institutBVA -0.922 0.356411
## candidatValérie Pécresse:nom_institutBVA 3.103 0.001940 **
## candidatYannick Jadot:nom_institutBVA 0.273 0.785186
## candidatEmmanuel Macron:nom_institutCluster17 0.126 0.899664
## candidatEric Zemmour:nom_institutCluster17 0.545 0.586049
## candidatFabien Roussel:nom_institutCluster17 1.019 0.308139
## candidatJean-Luc Mélenchon:nom_institutCluster17 -1.000 0.317496
## candidatMarine Le Pen:nom_institutCluster17 -1.531 0.126012
## candidatValérie Pécresse:nom_institutCluster17 3.039 0.002403 **
## candidatYannick Jadot:nom_institutCluster17 0.344 0.731085
## candidatEmmanuel Macron:nom_institutElabe 0.806 0.420553
## candidatEric Zemmour:nom_institutElabe -0.791 0.428924
## candidatFabien Roussel:nom_institutElabe 0.959 0.337434
## candidatJean-Luc Mélenchon:nom_institutElabe -2.056 0.039913 *
## candidatMarine Le Pen:nom_institutElabe -0.459 0.646309
## candidatValérie Pécresse:nom_institutElabe 3.120 0.001837 **
## candidatYannick Jadot:nom_institutElabe 0.467 0.640200
## candidatEmmanuel Macron:nom_institutHarris Interactive 0.616 0.538214
## candidatEric Zemmour:nom_institutHarris Interactive -0.335 0.737521
## candidatFabien Roussel:nom_institutHarris Interactive 0.489 0.625133
## candidatJean-Luc Mélenchon:nom_institutHarris Interactive -2.158 0.031015 *
## candidatMarine Le Pen:nom_institutHarris Interactive -0.565 0.572343
## candidatValérie Pécresse:nom_institutHarris Interactive 2.711 0.006763 **
## candidatYannick Jadot:nom_institutHarris Interactive 0.332 0.739863
## candidatEmmanuel Macron:nom_institutIfop 0.802 0.422437
## candidatEric Zemmour:nom_institutIfop -0.329 0.741837
## candidatFabien Roussel:nom_institutIfop 0.828 0.407892
## candidatJean-Luc Mélenchon:nom_institutIfop -2.894 0.003844 **
## candidatMarine Le Pen:nom_institutIfop -0.819 0.413138
## candidatValérie Pécresse:nom_institutIfop 3.453 0.000565 ***
## candidatYannick Jadot:nom_institutIfop 0.136 0.891729
## candidatEmmanuel Macron:nom_institutIpsos 0.475 0.634955
## candidatEric Zemmour:nom_institutIpsos -0.520 0.603149
## candidatFabien Roussel:nom_institutIpsos 0.751 0.452670
## candidatJean-Luc Mélenchon:nom_institutIpsos -2.746 0.006085 **
## candidatMarine Le Pen:nom_institutIpsos -1.615 0.106425
## candidatValérie Pécresse:nom_institutIpsos 2.752 0.005968 **
## candidatYannick Jadot:nom_institutIpsos 0.857 0.391697
## candidatEmmanuel Macron:nom_institutKantar Public 0.601 0.548025
## candidatEric Zemmour:nom_institutKantar Public 0.267 0.789843
## candidatFabien Roussel:nom_institutKantar Public 0.723 0.469738
## candidatJean-Luc Mélenchon:nom_institutKantar Public -2.204 0.027628 *
## candidatMarine Le Pen:nom_institutKantar Public -0.554 0.579867
## candidatValérie Pécresse:nom_institutKantar Public 2.522 0.011753 *
## candidatYannick Jadot:nom_institutKantar Public -0.060 0.951779
## candidatEmmanuel Macron:nom_institutOdoxa 0.758 0.448546
## candidatEric Zemmour:nom_institutOdoxa -0.769 0.442182
## candidatFabien Roussel:nom_institutOdoxa 1.003 0.316155
## candidatJean-Luc Mélenchon:nom_institutOdoxa -2.114 0.034612 *
## candidatMarine Le Pen:nom_institutOdoxa 0.398 0.690574
## candidatValérie Pécresse:nom_institutOdoxa 2.107 0.035242 *
## candidatYannick Jadot:nom_institutOdoxa 0.287 0.774112
## candidatEmmanuel Macron:nom_institutOpinion Way 0.299 0.764623
## candidatEric Zemmour:nom_institutOpinion Way -0.874 0.381997
## candidatFabien Roussel:nom_institutOpinion Way 0.866 0.386475
## candidatJean-Luc Mélenchon:nom_institutOpinion Way -3.265 0.001113 **
## candidatMarine Le Pen:nom_institutOpinion Way -1.102 0.270647
## candidatValérie Pécresse:nom_institutOpinion Way 3.664 0.000254 ***
## candidatYannick Jadot:nom_institutOpinion Way 0.203 0.839420
## candidatEmmanuel Macron:nom_institutYouGov 0.256 0.798174
## candidatEric Zemmour:nom_institutYouGov -0.682 0.495325
## candidatFabien Roussel:nom_institutYouGov 0.469 0.639216
## candidatJean-Luc Mélenchon:nom_institutYouGov -0.938 0.348494
## candidatMarine Le Pen:nom_institutYouGov 2.174 0.029834 *
## candidatValérie Pécresse:nom_institutYouGov 1.748 0.080687 .
## candidatYannick Jadot:nom_institutYouGov 1.023 0.306439
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.173 on 2016 degrees of freedom
## Multiple R-squared: 0.9788, Adjusted R-squared: 0.9777
## F-statistic: 902.8 on 103 and 2016 DF, p-value: < 2.2e-16
library(jtools)
library(interactions)
cat_plot(fit2, pred=candidat,modx= nom_institut, color.class="Spectral")+
scale_color_manual(values = SensiP2)+coord_flip()
cat_plot(fit2, pred= tps,modx=candidat, color.class="Spectral", dodge.width=0)+
scale_color_manual(values = SensiP2)+geom_line(aes(color=candidat))