Toqué Frères

Toqué Frères

Ce document est un des éléments du Séminaire r pour la recherche en sciences sociales donné à l’Université Paris Nanterre, dans le cadre du programme doctoral de l’Ecole Doctorale EOS. Il synthètise l’ensemble des techniques statistiques et programmatiques (en r)qui seront examinées dans ce séminaire et constituent le socle d’une culture statistique doctorale : statistiques descriptives et graphiques, modèles factoriels, analyses de variance, régressions, modèles SEM, test d’hypothèse et puissance de test.

Il est organisé non pas par un ordre croissant de complexité des techniques, mais par l’ordre naturel d’un jeu de données, celui de l’ESS, qui depuis 2002, interroge des européens tout les deux ans, sur leur sentiment de bonheur, de confiance dans les institutions , de confiance envers les autres, et des valeurs auxquelles ils adhèrent.

Audelà des éléments méthodologiques et techniques, le jeu de données que cet atelier emploie ouvre à une réflexion sur l’évolution des sociétés européennes des quinze dernières années. Avec toutes les réserves néçessaires, il faudra tenir les résultats obtenus comme bien plus que des illustrations, ils donnent des indications sur des évolutions réelles de notre société. Il reste à trouver la bonne lunette théorique pour les analyser.

Ce document est un laboratoire, il evoluera à mesure qu’on le pratiquera avec nos étudiants qui sont incités à se l’approprier en partie ou en entier, à le copier, le modifier et l’adapter à leurs envies et leurs besoins. (on va bientôt coller une licence copy left ;)

Les critiques, les conseils, les suggestions, les commentaires sont bienvenus en DM sur (???)(https://twitter.com/benavent)

Les élements de l’analyse

Objectifs :

Naturellement une introduction à l’univers r et son eco-système : un langage r, un espace de travail Rstudio, les packages et leurs communautés, des plateformes de données.

  1. Comprendre ce qu’est un markdown et apprendre à éditer un carnet de recherche en markdown avec bookdown
  2. Sensibilisation à la question de la “reproducibility” ( permettre de reproduire les calculs et les résultats en transmettant le code et les données Munafò et al. (2017)) mais aussi de la réplication (permise par des données recueillies tout les deux ans selon les mêmes questions, le même système de mesure).
  3. Examiner des techniques statistiques de base pour évaluer une échelle de mesure et comparer différents groupes sur cette échelle : analyses descriptives, modèles factoriels, ANOVA et comparaisons de groupes, modéliser des systèmes compexe de relation entre de multiples variables, en allant audelà des p-values.

Packages nécessaires

Ils sont à installer au préalable. Le document est en markdown rédigé avec les ressources de bookdown, dont trouvera un très bon memento

knitr::opts_chunk$set(echo = TRUE,include=TRUE,warning=FALSE,message=FALSE) 
library(haven) #pour lire des fichiers spss
library(Rcmdr) #bouée de sauvetage pour ceux qui savent pas coder
library(bookdown) #plus que markdown
library(bookdownplus) #plus que bookdown
library(reshape2) #pour ggplot library(ggplot2) #graphiques 
library(tidyverse) # pour tout : graphiques et pipe de données 
library(knitr) # pour les jolis tableaux ci dessous mais c'est ce qui tricote ce carnet de recherche
library(kableExtra) # pour de jolis tableaux
#library(ggplot2) # desomrais inutile si on lance tidyverse
library(psych) #alpha de crombach et factor analysis
library(GPArotation) #en complement du précédent
library(sjstats) #calcul de taille des effets et puissance de test

pal <-c("#3B9AB2", "#EBCC2A" , "#F8AFA8" , "#C25B56", "#9A8822","#0B775E","#FEE1AE","#E8AEA8")

Données

Source : European Social Survey

On travaille sur une petite partie de la base définie par les extractions suivantes (les données de 2016 ne sont pas intégrées à la base générale 2002-2014, ce qui est fait ici).

Le fichier de données a été préparé au préalable. On le téléchargera ici

#library(haven) nécessaire
ESS1_7e01 <- read_sav("~/Bonheur master/ConfianceFrance/ESS1-7e01.sav")
T1<-subset(ESS1_7e01, select=c("trstprl", "trstlgl", "trstplc", "trstplt", "trstprt" ,"trstep","trstun",
                               "ppltrst","pplfair","pplhlp","essround","vote",
                               "happy","stflife","health","edulvlb","eisced","eduyrs",
                               "hincfel","hinctnta","lrscale","yrbrn"),cntry=="FR")

ESS8e01 <- read_sav("~/Bonheur master/ConfianceFrance/ESS8e01.sav")
T2<-subset(ESS8e01, select=c("trstprl", "trstlgl", "trstplc", "trstplt", "trstprt" ,"trstep","trstun",
                             "ppltrst","pplfair","pplhlp","essround","vote",
                             "happy","stflife","health","edulvlb","eisced","eduyrs",
                             "hincfel","hinctnta", "lrscale","yrbrn"),cntry=="FR")

T<-rbind(T1,T2)

Les pondérations proposées par l’ESS ne sont pas utilisées dans ces analyses car l’objectif n’est pas d’obtenir une bonne estimation des valeurs mais de les comparer pour des groupes distincts, tout en restant dans des manipulations simples. Il vaudrait mieux cependant les appliquer! pour une discussions détaillée voir : weighting schemes.

On appréciera donc les résultats suivants (moyennes, distribution, et tests d’hypothèses) comme relatif à l’échantillon et pas tout à fait de la population.

A faire : comparaison de quelques distributions clés : genre, age, education entre l’échantillon et la population.

Variables

Les items de la confiance institutionnelle sont formulés de manière générique :

*“how much you personally trust each of the institutions” :

  • Trust in country’s parliament,
  • Trust in legal système
  • Trust in politicians
  • Trust in partis
  • Trust in Parlement
  • Trust in European parlement
  • Trust in UNO
  • … *

Le gouvernement n’est pas dans les items, la confiance en celui-ci est sans doute affectée fortement par la conjoncture. On peut s’interroger aussi sur son caractère institutionnel.le gouvernement comme ensemble de ministres n’est pas le gouvernement comme instance.

On recode, pour des raisons de commodité, les variables sélectionnées suivantes pour analyser la variabilité des composantes de la confiance institutionnelles :

  • l’année de l’enquête
  • les éléments de la confiance institutionnelle et interpersonnelle.
  • le niveau d’éducation
  • les conditions de vie ( décile de revenu et revenu perçu)
  • le niveau de bonheur.( echelle happy de 1 à 10)
  • l’orientation politique
T$Year[T$essround==1]<-2002 
T$Year[T$essround==2]<-2004 
T$Year[T$essround==3]<-2006 
T$Year[T$essround==4]<-2008 
T$Year[T$essround==5]<-2010 
T$Year[T$essround==6]<-2012 
T$Year[T$essround==7]<-2014 
T$Year[T$essround==8]<-2016 
T$Year<-as.factor(T$Year) 

names(T)[names(T)=="trstun"] <- "NationsUnies" 
names(T)[names(T)=="trstep"] <- "ParlementEurop" 
names(T)[names(T)=="trstlgl"] <- "Justice" 
names(T)[names(T)=="trstplc"] <- "Police" 
names(T)[names(T)=="trstplt"] <- "Politiques" 
names(T)[names(T)=="trstprl"] <-"Parlement" 
names(T)[names(T)=="trstprt"] <- "Partis"

names(T)[names(T)=="ppltrst"] <- "Confiance" 
names(T)[names(T)=="pplhlp"] <-"Equitable" 
names(T)[names(T)=="pplfair"] <- "Aide"

T$vote2[T$vote==1]<-"Oui" 
T$vote2[T$vote==2]<-"Non" 
T$vote2[T$vote==3]<-"Pas de droit"


T$revenu[T$hincfel==1] <- "Vie confortable" 
T$revenu[T$hincfel==2] <- "Se débrouille avec son revenu" 
T$revenu[T$hincfel==3] <- "Revenu insuffisant" 
T$revenu[T$hincfel==4] <- "Revenu insuffisant" 
T$revenu<-as.factor(T$revenu)

T$quintileR[T$hinctnta==1] <- "1 10% les plus pauvres" 
T$quintileR[T$hinctnta==2] <- "2 50% sous la médiane" 
T$quintileR[T$hinctnta==3] <- "2 50% sous la médiane" 
T$quintileR[T$hinctnta==4] <- "2 50% sous la médiane" 
T$quintileR[T$hinctnta==5] <- "2 50% sous la médiane" 
T$quintileR[T$hinctnta==6] <- "3 entre 50% et 70%" 
T$quintileR[T$hinctnta==7] <- "3 entre 50% et 70%" 
T$quintileR[T$hinctnta==8] <- "4 entre 70% et 90%" 
T$quintileR[T$hinctnta==9] <- "4 entre 70% et 90%%" 
T$quintileR[T$hinctnta==10] <- "5 10% les plus riches" 
T$quintileR<-as.factor(T$quintileR)


T$happy<-as.numeric(T$happy) 
T$Bonheur[T$happy==1]<-"Malheureux" 
T$Bonheur[T$happy==2]<-"Malheureux" 
T$Bonheur[T$happy==3]<-"Malheureux" 
T$Bonheur[T$happy==4]<-"Malheureux" 
T$Bonheur[T$happy==5]<-"Peu heureux" 
T$Bonheur[T$happy==6]<-"Peu heureux" 
T$Bonheur[T$happy==7]<-"Plutôt heureux" 
T$Bonheur[T$happy==8]<-"Plutôt heureux" 
T$Bonheur[T$happy==9]<-"Très heureux" 
T$Bonheur[T$happy==10]<-"Très heureux"


T$eisced<-as.factor(T$eisced)
T$education[T$eisced==0]<-NA
T$education[T$eisced==1]<-"1 Primary education" 
T$education[T$eisced==2]<-"2 Lower secondary " 
T$education[T$eisced==3]<-"3 Upper secondary " 
T$education[T$eisced==4]<-"4 Post-secondary non-tertiary" 
T$education[T$eisced==5]<-"5 Short-cycle tertiary" 
T$education[T$eisced==6]<-"6 Bachelor" 
T$education[T$eisced==7]<-"7 Master" 
T$education[T$eisced==8]<-"8 Doctoral" 

T$OP[T$lrscale==0] <- "1 Très à gauche" 
T$OP[T$lrscale==1] <- "1 Très à gauche" 
T$OP[T$lrscale==2] <- "2 Gauche" 
T$OP[T$lrscale==3] <- "2 Gauche" 
T$OP[T$lrscale==4] <- "2 Gauche" 
T$OP[T$lrscale==5] <- "3 Ni G ni D" 
T$OP[T$lrscale==6] <- "4 Droite" 
T$OP[T$lrscale==7] <- "4 Droite" 
T$OP[T$lrscale==8] <- "4 Droite" 
T$OP[T$lrscale==9] <- "7 Très à droite" 
T$OP[T$lrscale==10] <- "7 Très à droite" 
T$OP<-as.factor(T$OP) 

Confiance institutionnelle

Dans cette section on va faire des comparaisons systématiques et graphiques avec ggplot . On trouvera dans R for datascience un excellent chapitre d’introduction à la Data Visualisation

On représente d’abord l’évolution de la répartition du facteur étudié au cours du temps. Puis on représente les évolutions de chacun des indicateurs de confiance institutionnelle pour chacune des modalités du facteur étudié.

Evolution de la confiance selon le bonheur

Dans un premier temps on produit la table qui croise les catégories de niveaux de bonheur et les vagues d’enquête : Year. On utilise l’opérateur %>% du tidyverse , qui passe (pipe) l’objet à gauche dans l’objet à droite. le tableau obtenu TabEv. On notera d’emblée l’utilisation ( très simple) de Kable et KableExtra pour éditer la table. On se reportera à cette page pour plus de détail sur la syntaxe.

TabEv <- with(T, table(Bonheur, Year)) %>% prop.table(margin = 2) #création de la page en tidy
TabEv %>% kable(digit=2,format = "html", caption = "Evolution de la répartition des niveaux de bonheur") %>% kable_styling(bootstrap_options = c("striped", "hover"),full_width =F,font_size = 9) # édition de la table avec kable
Evolution de la répartition des niveaux de bonheur
2002 2004 2006 2008 2010 2012 2014 2016
Malheureux 0.05 0.06 0.06 0.06 0.07 0.06 0.06 0.06
Peu heureux 0.22 0.23 0.23 0.24 0.26 0.24 0.22 0.21
Plutôt heureux 0.46 0.48 0.52 0.51 0.50 0.51 0.52 0.51
Très heureux 0.27 0.23 0.20 0.19 0.17 0.20 0.20 0.22

Pour le graphique, on isole d’abord nos variables, puis on exécute un ggplot en mettant en x (abcisse) la variable Year,on remplit les barres en les cumulant avec les effectifs des modalités de la variableBonheur

Vdf<-subset(T,select=c(Year,Bonheur)) 
ggplot(Vdf,aes(x = Year,fill=Bonheur))+geom_bar(position="fill")+scale_fill_manual(values=pal)

Dans le troisième temps , il s’agit de représenter l’évolution (Year en abscisse) pour chacun des critères de confiance (échelle de 1 à 10) et chacun des niveaux de Bonheur.

On construit les données à représenter en aggrégant les 7 critères de confiance par vagues d’enquête Year et modalité de Bonheur. Dans la seconde ligne on utilise la fonction melt qui transforme un fichier “large” (individu- variable 1 - variable 2- …) en un fichier long ( individu - variable - valeur de la variable).( Pour plus de détails ) utilisable par ggplot.

Ty<- aggregate(cbind(Justice, Police, Politiques, Parlement, Partis, ParlementEurop,NationsUnies) ~Year+Bonheur, data=T, FUN=mean) 
Tym<-melt(Ty, id=c("Year","Bonheur")) #from reshape2

#les éléments de construction
g<-ggplot(Tym,aes(x=Year,y=value,group=Bonheur))+geom_line(aes(colour = Bonheur),size=1.5)+ facet_grid(cols = vars(variable))
# la labelisation
g<-g+labs(title="Evolution de la confiance dans les institutions", subtitle="et par niveau de bonheur", x = "Années", y= "degré de confiance (de 1 à 10)",caption="Source: European Social Survey - France vagues 1 à 7")
#des ajustements . 
g<-g+ theme(axis.text.x =element_text(angle = 45, hjust = 1,size=8))+scale_color_manual(values=pal)
g

La distribution du bonheur semble assez stable sur la période avec en 2010 un accroissement de la proportion des moins heureux. Un petit quart s’estime très heureuse et une moitié le sont assez.

Le degré de confiance est d’autant moins élevé qu’on ne se sent pas heureux, on observera la faible différence entre les très heureux et les plutôt heureux (audelà d’un certain niveau de bonheur la confiance ne s’accroît plus) et surtout les évolutions contrastées : accroissement pour la police, réduction pour les politiques.

Evolution de la confiance selon la participation aux élections

Il est demandé aux enquêtés s’ils ont voté aux dernières élections avant l’enquête.On s’apercoit de l’accroissement régulier de l’absentéisme électoral passant de 23% dans la période 2002 à 2008 à plus de 30% de 2012 à 2016. Les votants sont plus heureux que les non-votants, les sans droits semblent avoir plus confiance que tout les autres. Les étrangers ( et mineurs ?) auraient-ils plus confiance que les citoyens dans nos institutions?

TabEv <- with(T, table(vote2, Year)) %>% prop.table(margin = 2) #création de la page en tidy
TabEv %>% kable(digit=2) %>% kable_styling(full_width =F) # édition de la table avec kable
2002 2004 2006 2008 2010 2012 2014 2016
Non 0.25 0.21 0.19 0.2 0.25 0.19 0.28 0.28
Oui 0.75 0.69 0.68 0.7 0.64 0.72 0.61 0.60
Pas de droit 0.00 0.10 0.13 0.1 0.10 0.09 0.11 0.13
Vdf<-subset(T,select=c(Year,vote2)) 
ggplot(Vdf,aes(x = Year,fill=vote2))+geom_bar(position="fill")+scale_fill_manual(values=pal)

Ty<- aggregate(cbind(Justice, Police, Politiques, Parlement, Partis, ParlementEurop,NationsUnies) ~Year+vote2, data=T, FUN=mean) 
Tym<-melt(Ty, id=c("Year","vote2"))

#les éléments de construction
g<-ggplot(Tym,aes(x=Year,y=value,group=vote2))+geom_line(aes(colour = vote2),size=1.5)+ facet_grid(cols = vars(variable))
# la labelisation
g<-g+labs(title="Evolution de la confiance dans les institutions", subtitle="et participation aux dernières élections", x = "Années", y= "degré de confiance (de 1 à 10)",caption="Source: European Social Survey - France - vagues 1 à 8")
#des ajustements de couleur et de position. 
g<-g+ theme(axis.text.x =element_text(angle = 45, hjust = 1))+scale_color_manual(values=pal)
g

Evolution de la confiance selon le niveau de diplome

On retrouve les évolutions précédentes avec une hierachie de ressources : les plus diplômés ont une plus grande confiance que les non diplômés. Mais surtout une forte variance sur les items relatifs aux instances délibératives. Les partis sont l’objet d’une défiance plus homogène.

TabEv <- with(T, table(education, Year)) %>% prop.table(margin = 2) #création de la page en tidy
TabEv %>% kable(digit=2) %>% kable_styling(full_width =F) # édition de la table avec kable
2002 2004 2006 2008 2010 2012 2014 2016
1 Primary education NaN NaN 0.18 0.19 0.20 0.20 0.15 0.18
2 Lower secondary NaN NaN 0.13 0.15 0.09 0.09 0.09 0.08
3 Upper secondary NaN NaN 0.25 0.19 0.25 0.25 0.24 0.25
4 Post-secondary non-tertiary NaN NaN 0.18 0.17 0.19 0.18 0.17 0.17
5 Short-cycle tertiary NaN NaN 0.12 0.12 0.12 0.13 0.14 0.14
6 Bachelor NaN NaN 0.09 0.09 0.04 0.04 0.06 0.04
7 Master NaN NaN 0.05 0.09 0.12 0.11 0.15 0.13
Vdf<-subset(T,select=c(Year,education)) 
ggplot(Vdf,aes(x = Year,fill=education))+geom_bar(position="fill")+scale_fill_manual(values=pal)

Ty<- aggregate(cbind(Justice, Police, Politiques, Parlement, Partis, ParlementEurop,NationsUnies) ~Year+education, data=T, FUN=mean) 
Tym<-melt(Ty, id=c("Year","education"))

#les éléments de construction
g<-ggplot(Tym,aes(x=Year,y=value,group=education))+geom_line(aes(colour = education),size=1.5)+ facet_grid(cols = vars(variable))
# la labelisation
g<-g+labs(title="Evolution de la confiance dans les institutions", subtitle="et par niveau d'éducation", x = "Années", y= "degré de confiance (de 1 à 10)",caption="Source: European Social Survey - France vagues 1 à 7")
#des ajustements de couleur et de position. 
g<-g+ theme(axis.text.x =element_text(angle = 45, hjust = 1))+scale_colour_brewer()
g

Evolution de la confiance selon les ressources

Les conditions de vie perçus se définissent au travers de l’appréciation relative des revenus : couvrent-ils nos dépenses ? et de la répartition par quintile du revenu des ménages.

L’évolution est à la hausse pour ceux qui le revenu est insuffisant pour couvrir les besoins : on passe de 15.5% à 19.5% sur la période. La proportion qui estime avoir une vie confortable oscille autour de 30%. Ceux qui se débrouillent voient leur part se réduire de 54% à 50%. Le degré d’inégalité semble s’être accru.

TabEv <- with(T, table(revenu, Year)) %>% prop.table(margin = 2) #création de la page en tidy
TabEv %>% kable(digit=3) %>% kable_styling(full_width =F) # édition de la table avec kable
2002 2004 2006 2008 2010 2012 2014 2016
Revenu insuffisant NaN NaN 0.164 0.155 0.180 0.189 0.204 0.189
Se débrouille avec son revenu NaN NaN 0.543 0.514 0.515 0.526 0.476 0.503
Vie confortable NaN NaN 0.293 0.332 0.304 0.284 0.320 0.308
Vdf<-subset(T,select=c(Year,revenu)) 
ggplot(Vdf,aes(x = Year,fill=revenu))+geom_bar(position="fill")+scale_fill_manual(values=pal)

Ty<- aggregate(cbind(Justice, Police, Politiques, Parlement, Partis, ParlementEurop,NationsUnies) ~Year+revenu, data=T, FUN=mean) 
Tym<-melt(Ty, id=c("Year","revenu"))

#les éléments de construction
g<-ggplot(Tym,aes(x=Year,y=value,group=revenu))+geom_line(aes(colour = revenu),size=1.5)+ facet_grid(cols = vars(variable))
# la labelisation
g<-g+labs(title="Evolution de la confiance dans les institutions", subtitle="et par niveau de revenu", x = "Années", y= "degré de confiance (de 1 à 10)",caption="Source: European Social Survey - France vagues 1 à 7")
#des ajustements de couleur et de position. 
g<-g+ theme(axis.text.x =element_text(angle = 45, hjust = 1))+scale_colour_brewer(palette = "Greens")
g

En terme de niveau de niveau de vie, le phénomène se confirme, avec une nuance, le 5 quintile, les plus aisés sont à un niveau bien plus élevés que les autres. Les partis sont encore l’objet d’une défiance homogène.

Tna<-subset(T,select=c(Justice, Police, Politiques, Parlement, Partis, ParlementEurop,NationsUnies,Year,quintileR))
Tna$na_count <- apply(Tna, 1, function(x) sum(is.na(x)))
Tna<-subset(Tna,na_count==0)
TabEv <- with(Tna, table(quintileR, Year)) %>% prop.table(margin = 2) #création de la page en tidy
TabEv %>% kable(digit=2) %>% kable_styling(full_width =F) # édition de la table avec kable
2002 2004 2006 2008 2010 2012 2014 2016
1 10% les plus pauvres NaN NaN NaN 0.08 0.16 0.14 0.12 0.14
2 50% sous la médiane NaN NaN NaN 0.35 0.47 0.47 0.41 0.44
3 entre 50% et 70% NaN NaN NaN 0.23 0.18 0.20 0.22 0.19
4 entre 70% et 90% NaN NaN NaN 0.12 0.08 0.07 0.09 0.11
4 entre 70% et 90%% NaN NaN NaN 0.11 0.07 0.06 0.08 0.07
5 10% les plus riches NaN NaN NaN 0.11 0.05 0.05 0.07 0.05
Vdf<-subset(Tna,select=c(Year,quintileR)) 
ggplot(Vdf,aes(x = Year,fill=quintileR))+geom_bar(position="fill")+scale_fill_manual(values=pal)

Ty<- aggregate(cbind(Justice, Police, Politiques, Parlement, Partis, ParlementEurop,NationsUnies) ~Year+quintileR, data=Tna, FUN=mean) 
Tym<-melt(Ty, id=c("Year","quintileR"))

#les éléments de construction
g<-ggplot(Tym,aes(x=Year,y=value,group=quintileR))+geom_line(aes(colour = quintileR),size=1.5)+ facet_grid(cols = vars(variable))
# la labelisation
g<-g+labs(title="Evolution de la confiance dans les institutions", subtitle="et par niveau de revenu", x = "Années", y= "degré de confiance (de 1 à 10)",caption="Source: European Social Survey - France vagues 1 à 7")
#des ajustements de couleur et de position. 
g<-g+ theme(axis.text.x =element_text(angle = 45, hjust = 1))+scale_colour_brewer()
g

Evolution de la confiance et l’orientation politique

On change un peu la représentation en intervertissant l’année par l’orientation politique sur l’axe des abcisses. Ceci permet de rendre plus saillant une forme régulière en M : La confiance est systématiquement plus faible aux extrêmes de l’échelle politique, elle s’affaiblit aussi pour ceux qui occupent une position centrale. C’est un effet de l’ambiguité de l’échelle qui dans sa mediane ne distinguent pas les centristes de ceux qui se refuse à être classé ou de gauche ou de droite et forment le groupe majoritaire.

On constate aussi l’évolution et noatmment le décrochage pour les hommes politiques et les partis des deux dernières vagues. IL s’est passé quelques chose après 2012.

On remarque aussi que le M s’affaisse sur sa droite : ce serait la désillusion de ceux de droite, à gauche les niveaux de confiance institutionnel semble se maintenir

T$OP<-as.factor(T$OP)
TabEv <- with(T, table(OP, Year)) %>% prop.table(margin = 2) #création de la page en tidy
TabEv %>% kable(digit=2) %>% kable_styling(full_width =F) # édition de la table avec kable
2002 2004 2006 2008 2010 2012 2014 2016
1 Très à gauche 0.10 0.08 0.08 0.09 0.09 0.09 0.07 0.07
2 Gauche 0.30 0.31 0.30 0.29 0.31 0.27 0.29 0.27
3 Ni G ni D 0.28 0.30 0.31 0.28 0.31 0.28 0.27 0.29
4 Droite 0.25 0.24 0.26 0.30 0.24 0.27 0.29 0.29
7 Très à droite 0.07 0.05 0.06 0.04 0.05 0.08 0.08 0.08
Vdf<-subset(T,select=c(Year,OP)) 
ggplot(Vdf,aes(x = Year,fill=OP))+geom_bar(position="fill")+scale_fill_manual(values=pal)

Ty<- aggregate(cbind(Justice, Police, Politiques, Parlement, Partis, ParlementEurop,NationsUnies) ~Year+OP, data=T, FUN=mean) 
Tym<-melt(Ty, id=c("Year","OP"))

#les éléments de construction
g<-ggplot(Tym,aes(x=OP,y=value,group=Year))+geom_line(aes(colour = Year),size=1.5)+ facet_grid(cols = vars(variable))
# la labelisation
g<-g+labs(title="Evolution de la confiance pour lesinstitutions", subtitle="et par orientation politique", x = "Années", y= "degré de confiance (de 1 à 10)",caption="Source: European Social Survey - France vagues 1 à 7")
#des ajustements de couleur et de position. 
g<-g+ theme(axis.text.x =element_text(angle = 45, hjust = 1))+scale_colour_brewer(palette = "Spectral")
g

La structure de la confiance institutionnelle

L’analyse descripive, même avec peu de variables, fait apparaitre un tableau plus complexe qu’il ne semble, tant dans ses évolutions, sa structure par groupes sociaux, que dans les évolutions contrastés de ses items.

C’est ce qui va être analysé, de manière classique, par différentes méthodes et modèles d’analyse factorielle.

EFA (avec rotation oblique).

Dans la tradition de Thurstone (1931) et de Churchill (1979), on opte pour une solution à 3 facteurs et une rotation oblique qui conduit souvent rapidement à la solution la plus lisible. Ces trois facteurs couvre 68% de la variance des items. L’analyse des loading montre - un facteur auquel contribuent la justice et la police : on pense au régalien, mais aussi à l’état comme administration ( d’autres items comme la confiance dans le système éducatif auraient pu être employés), mais aussi aux fonctions de l’état du maintien de l’ordre intérieurs. - un second facteur qui concerne des instances internationales et parlementaire. - le troisième est clairement lié à la vie politiques avec ses partis, ses représentants, et le parlement.

Ils sont plutôt fortement intercorrélés, ce qui fait douter de leur structure trifactorielle.

F<-cbind(T$Justice, T$Police, T$Politiques, T$Parlement, T$Partis, T$ParlementEurop,T$NationsUnies)
pa <- fa(F,3,fm="pa" ,rotate="oblimin", SMC=FALSE)  #principal axis 
print(pa,sort=TRUE)
## Factor Analysis using method =  pa
## Call: fa(r = F, nfactors = 3, rotate = "oblimin", SMC = FALSE, fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
##   item   PA1   PA3   PA2   h2    u2 com
## 3    3  0.97 -0.05  0.04 0.91 0.087 1.0
## 5    5  0.80  0.11 -0.04 0.75 0.249 1.0
## 4    4  0.36  0.34  0.14 0.54 0.458 2.3
## 6    6  0.10  0.83 -0.04 0.77 0.229 1.0
## 7    7 -0.09  0.75  0.09 0.56 0.445 1.1
## 2    2  0.00 -0.04  0.84 0.67 0.333 1.0
## 1    1  0.10  0.21  0.53 0.55 0.453 1.4
## 
##                        PA1  PA3  PA2
## SS loadings           1.94 1.66 1.15
## Proportion Var        0.28 0.24 0.16
## Cumulative Var        0.28 0.51 0.68
## Proportion Explained  0.41 0.35 0.24
## Cumulative Proportion 0.41 0.76 1.00
## 
##  With factor correlations of 
##     PA1  PA3  PA2
## PA1 1.0 0.70 0.50
## PA3 0.7 1.00 0.54
## PA2 0.5 0.54 1.00
## 
## Mean item complexity =  1.3
## Test of the hypothesis that 3 factors are sufficient.
## 
## The degrees of freedom for the null model are  21  and the objective function was  3.75 with Chi Square of  56361.91
## The degrees of freedom for the model are 3  and the objective function was  0.01 
## 
## The root mean square of the residuals (RMSR) is  0.01 
## The df corrected root mean square of the residuals is  0.03 
## 
## The harmonic number of observations is  14264 with the empirical chi square  64.09  with prob <  7.9e-14 
## The total number of observations was  15051  with Likelihood Chi Square =  201.49  with prob <  2e-43 
## 
## Tucker Lewis Index of factoring reliability =  0.975
## RMSEA index =  0.066  and the 90 % confidence intervals are  0.059 0.074
## BIC =  172.63
## Fit based upon off diagonal values = 1
## Measures of factor score adequacy             
##                                                    PA1  PA3  PA2
## Correlation of (regression) scores with factors   0.97 0.92 0.88
## Multiple R square of scores with factors          0.94 0.85 0.77
## Minimum correlation of possible factor scores     0.87 0.70 0.53
alpha(F)
## 
## Reliability analysis   
## Call: alpha(x = F)
## 
##   raw_alpha std.alpha G6(smc) average_r S/N    ase mean  sd median_r
##       0.88      0.88    0.89      0.51 7.2 0.0015  4.4 1.7     0.49
## 
##  lower alpha upper     95% confidence boundaries
## 0.87 0.88 0.88 
## 
##  Reliability if an item is dropped:
##    raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## V1      0.86      0.86    0.87      0.52 6.4   0.0017 0.020  0.48
## V2      0.88      0.88    0.88      0.55 7.4   0.0015 0.011  0.51
## V3      0.85      0.85    0.84      0.48 5.6   0.0019 0.010  0.48
## V4      0.85      0.86    0.87      0.50 6.0   0.0019 0.017  0.46
## V5      0.85      0.85    0.85      0.49 5.9   0.0019 0.010  0.49
## V6      0.85      0.85    0.86      0.49 5.8   0.0019 0.015  0.46
## V7      0.87      0.87    0.87      0.52 6.6   0.0017 0.017  0.51
## 
##  Item statistics 
##        n raw.r std.r r.cor r.drop mean  sd
## V1 15008  0.75  0.74  0.68   0.64  4.9 2.4
## V2 15025  0.64  0.63  0.54   0.50  5.9 2.3
## V3 14973  0.82  0.83  0.83   0.75  3.2 2.1
## V4 14809  0.79  0.79  0.74   0.70  4.2 2.3
## V5 13432  0.79  0.80  0.79   0.71  3.1 2.1
## V6 14521  0.81  0.81  0.78   0.73  4.2 2.3
## V7 14539  0.73  0.72  0.65   0.61  5.0 2.4
omega(F)       

## Omega 
## Call: omega(m = F)
## Alpha:                 0.88 
## G.6:                   0.89 
## Omega Hierarchical:    0.77 
## Omega H asymptotic:    0.84 
## Omega Total            0.92 
## 
## Schmid Leiman Factor loadings greater than  0.2 
##       g   F1*   F2*   F3*   h2   u2   p2
## V1 0.62              0.52 0.65 0.35 0.59
## V2 0.49              0.50 0.49 0.51 0.48
## V3 0.78  0.59             0.96 0.04 0.64
## V4 0.67  0.20             0.54 0.46 0.84
## V5 0.72  0.45             0.73 0.27 0.72
## V6 0.78        0.49       0.86 0.14 0.72
## V7 0.61        0.34       0.51 0.49 0.75
## 
## With eigenvalues of:
##    g  F1*  F2*  F3* 
## 3.20 0.59 0.39 0.55 
## 
## general/max  5.44   max/min =   1.49
## mean percent general =  0.68    with sd =  0.12 and cv of  0.17 
## Explained Common Variance of the general factor =  0.68 
## 
## The degrees of freedom are 3  and the fit is  0.01 
## The number of observations was  15051  with Chi Square =  131.73  with prob <  2.3e-28
## The root mean square of the residuals is  0.01 
## The df corrected root mean square of the residuals is  0.02
## RMSEA index =  0.053  and the 10 % confidence intervals are  0.046 0.061
## BIC =  102.87
## 
## Compare this with the adequacy of just a general factor and no group factors
## The degrees of freedom for just the general factor are 14  and the fit is  0.68 
## The number of observations was  15051  with Chi Square =  10265.99  with prob <  0
## The root mean square of the residuals is  0.1 
## The df corrected root mean square of the residuals is  0.12 
## 
## RMSEA index =  0.221  and the 10 % confidence intervals are  0.217 0.224
## BIC =  10131.32 
## 
## Measures of factor score adequacy             
##                                                 g  F1*   F2*   F3*
## Correlation of scores with factors            0.9 0.77  0.67  0.70
## Multiple R square of scores with factors      0.8 0.60  0.45  0.49
## Minimum correlation of factor score estimates 0.6 0.19 -0.10 -0.02
## 
##  Total, General and Subset omega for each subset
##                                                  g  F1*  F2*  F3*
## Omega total for total scores and subscales    0.92 0.88 0.80 0.73
## Omega general for total scores and subscales  0.77 0.67 0.59 0.39
## Omega group for total scores and subscales    0.11 0.21 0.21 0.33

Modèle CFA

On peut faire celà de manière plus moderne, avec des méthodes de modèles structurels à variables latentes ( Jöreskog (1969) ). On utilise le package Lavaan .

On emploie semplot pour la représentation graphique et semTools

ajustement 1988.224

library(lavaan)
library(semTools)
library(semPlot)
mod <- ' Etat  =~ Justice + Police
               Politique =~ Parlement + Partis+Politiques
               InstInt   =~ ParlementEurop + NationsUnies
'

fit1 <- cfa(mod, data = T)
summary(fit1, fit.measures=TRUE, standardized=TRUE)
## lavaan 0.6-3 ended normally after 52 iterations
## 
##   Optimization method                           NLMINB
##   Number of free parameters                         17
## 
##                                                   Used       Total
##   Number of observations                         12757       15051
## 
##   Estimator                                         ML
##   Model Fit Test Statistic                    1988.224
##   Degrees of freedom                                11
##   P-value (Chi-square)                           0.000
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic            48504.966
##   Degrees of freedom                                21
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    0.959
##   Tucker-Lewis Index (TLI)                       0.922
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -176362.645
##   Loglikelihood unrestricted model (H1)     -175368.533
## 
##   Number of free parameters                         17
##   Akaike (AIC)                              352759.290
##   Bayesian (BIC)                            352886.005
##   Sample-size adjusted Bayesian (BIC)       352831.981
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.119
##   90 Percent Confidence Interval          0.114  0.123
##   P-value RMSEA <= 0.05                          0.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.047
## 
## Parameter Estimates:
## 
##   Information                                 Expected
##   Information saturated (h1) model          Structured
##   Standard Errors                             Standard
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   Etat =~                                                               
##     Justice           1.000                               2.063    0.867
##     Police            0.710    0.012   57.395    0.000    1.465    0.653
##   Politique =~                                                          
##     Parlement         1.000                               1.642    0.710
##     Partis            1.123    0.012   94.213    0.000    1.844    0.885
##     Politiques        1.195    0.012   96.404    0.000    1.962    0.919
##   InstInt =~                                                            
##     ParlementEurop    1.000                               2.112    0.907
##     NationsUnies      0.811    0.010   80.169    0.000    1.713    0.722
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   Etat ~~                                                               
##     Politique         2.154    0.045   47.770    0.000    0.636    0.636
##     InstInt           2.809    0.054   51.581    0.000    0.645    0.645
##   Politique ~~                                                          
##     InstInt           2.635    0.048   54.410    0.000    0.760    0.760
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .Justice           1.402    0.064   22.009    0.000    1.402    0.248
##    .Police            2.887    0.048   60.740    0.000    2.887    0.574
##    .Parlement         2.660    0.037   72.373    0.000    2.660    0.497
##    .Partis            0.943    0.019   48.744    0.000    0.943    0.217
##    .Politiques        0.704    0.019   36.620    0.000    0.704    0.155
##    .ParlementEurop    0.958    0.042   22.719    0.000    0.958    0.177
##    .NationsUnies      2.701    0.043   62.791    0.000    2.701    0.479
##     Etat              4.258    0.092   46.272    0.000    1.000    1.000
##     Politique         2.697    0.060   44.756    0.000    1.000    1.000
##     InstInt           4.460    0.078   57.148    0.000    1.000    1.000
#parameterEstimates(fit)
#fitted(fit)
#standardizedSolution(fit) 
#c("chisq", "df", "pvalue", "cfi", "rmsea"))
reliability(fit1) # Should provide a warning for the endogenous variables
##             Etat Politique   InstInt     total
## alpha  0.7222828 0.8640826 0.7912275 0.8790880
## omega  0.7436977 0.8732978 0.7999328 0.9140073
## omega2 0.7436977 0.8732978 0.7999328 0.9140073
## omega3 0.7436977 0.8828879 0.7999328 0.8919251
## avevar 0.5988122 0.6978535 0.6689745 0.6595681
semPaths(fit1, what='std', nCharNodes=6, sizeMan=10,style="lisrel",
         edge.label.cex=1.25, curvePivot = TRUE, fade=FALSE)

Modèle factoriel de second ordre

Pour corser l’analyse on choisit un modèle de second ordre. On suppose que la confiance est un concept qui se manifeste dans trois contstruits de premier ordres. Ceux-ci peuvent avoir des sources de variances propres, notamment dues dans notre cas à des jugements spécifiques des institutions.

On obtient un chi² de 1988.2 .

mod <- ' Etat  =~ Justice + Police
               Politique =~ Parlement + Partis+Politiques
               InstInt   =~ ParlementEurop + NationsUnies
                      higher =~ Etat + Politique + InstInt
'

fit2 <- cfa(mod, data = T)

summary(fit2, fit.measures=TRUE, standardized=TRUE)
## lavaan 0.6-3 ended normally after 47 iterations
## 
##   Optimization method                           NLMINB
##   Number of free parameters                         17
## 
##                                                   Used       Total
##   Number of observations                         12757       15051
## 
##   Estimator                                         ML
##   Model Fit Test Statistic                    1988.224
##   Degrees of freedom                                11
##   P-value (Chi-square)                           0.000
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic            48504.966
##   Degrees of freedom                                21
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    0.959
##   Tucker-Lewis Index (TLI)                       0.922
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -176362.645
##   Loglikelihood unrestricted model (H1)     -175368.533
## 
##   Number of free parameters                         17
##   Akaike (AIC)                              352759.290
##   Bayesian (BIC)                            352886.005
##   Sample-size adjusted Bayesian (BIC)       352831.981
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.119
##   90 Percent Confidence Interval          0.114  0.123
##   P-value RMSEA <= 0.05                          0.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.047
## 
## Parameter Estimates:
## 
##   Information                                 Expected
##   Information saturated (h1) model          Structured
##   Standard Errors                             Standard
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   Etat =~                                                               
##     Justice           1.000                               2.063    0.867
##     Police            0.710    0.012   57.395    0.000    1.465    0.653
##   Politique =~                                                          
##     Parlement         1.000                               1.642    0.710
##     Partis            1.123    0.012   94.213    0.000    1.844    0.885
##     Politiques        1.195    0.012   96.404    0.000    1.962    0.919
##   InstInt =~                                                            
##     ParlementEurop    1.000                               2.112    0.907
##     NationsUnies      0.811    0.010   80.169    0.000    1.713    0.722
##   higher =~                                                             
##     Etat              1.000                               0.734    0.734
##     Politique         0.938    0.016   57.098    0.000    0.866    0.866
##     InstInt           1.223    0.019   65.629    0.000    0.878    0.878
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .Justice           1.402    0.064   22.009    0.000    1.402    0.248
##    .Police            2.887    0.048   60.740    0.000    2.887    0.574
##    .Parlement         2.660    0.037   72.373    0.000    2.660    0.497
##    .Partis            0.943    0.019   48.744    0.000    0.943    0.217
##    .Politiques        0.704    0.019   36.620    0.000    0.704    0.155
##    .ParlementEurop    0.958    0.042   22.719    0.000    0.958    0.177
##    .NationsUnies      2.701    0.043   62.791    0.000    2.701    0.479
##     Etat              1.961    0.068   28.931    0.000    0.461    0.461
##     Politique         0.676    0.028   24.056    0.000    0.251    0.251
##     InstInt           1.025    0.053   19.168    0.000    0.230    0.230
##     higher            2.297    0.063   36.542    0.000    1.000    1.000
reliability(fit2) # Should provide a warning for the endogenous variables
##             Etat Politique   InstInt     total
## alpha  0.7222828 0.8640826 0.7912275 0.8790880
## omega  0.7436977 0.8732978 0.7999327 0.9140073
## omega2 0.7436977 0.8732978 0.7999327 0.9140073
## omega3 0.7436976 0.8828877 0.7999327 0.8919249
## avevar 0.5988122 0.6978534 0.6689745 0.6595680
reliabilityL2(fit2, "higher")
##        omegaL1        omegaL2 partialOmegaL1 
##      0.7979834      0.8623845      0.9027206
semPaths(fit2, what='std', nCharNodes=6, sizeMan=10,style="lisrel",
         edge.label.cex=1.0, curvePivot = TRUE, fade=TRUE)

Modèle bifactoriel

testons un modèle bifactoriel 858.093

Il semble bien meilleur. Les facteurs spécifiques sont lié à la nature internationale des institutions d’une part, et à la catégorie du politique d’autres parts, qui en quelque sorte contamine.

mod <- 'Arene   =~ ParlementEurop + NationsUnies+Parlement
              General=~ Justice + Police+Parlement + Partis+Politiques+ParlementEurop + NationsUnies
                    Politique =~ Parlement+Partis+Politiques
              General  ~~ 0*Arene
              General  ~~ 0*Politique
              Politique  ~~ Arene'

fit3 <- cfa(mod, data = T)
fitMeasures(fit3, c("chisq","cfi","rmsea","srmr"))
##   chisq     cfi   rmsea    srmr 
## 323.094   0.993   0.059   0.011
summary(fit3, fit.measures=TRUE, standardized=TRUE)
## lavaan 0.6-3 ended normally after 87 iterations
## 
##   Optimization method                           NLMINB
##   Number of free parameters                         21
## 
##                                                   Used       Total
##   Number of observations                         12757       15051
## 
##   Estimator                                         ML
##   Model Fit Test Statistic                     323.094
##   Degrees of freedom                                 7
##   P-value (Chi-square)                           0.000
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic            48504.966
##   Degrees of freedom                                21
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    0.993
##   Tucker-Lewis Index (TLI)                       0.980
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -175530.080
##   Loglikelihood unrestricted model (H1)     -175368.533
## 
##   Number of free parameters                         21
##   Akaike (AIC)                              351102.160
##   Bayesian (BIC)                            351258.691
##   Sample-size adjusted Bayesian (BIC)       351191.955
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.059
##   90 Percent Confidence Interval          0.054  0.065
##   P-value RMSEA <= 0.05                          0.002
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.011
## 
## Parameter Estimates:
## 
##   Information                                 Expected
##   Information saturated (h1) model          Structured
##   Standard Errors                             Standard
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   Arene =~                                                              
##     ParlementEurop    1.000                               1.794    0.771
##     NationsUnies      0.613    0.018   34.736    0.000    1.100    0.463
##     Parlement         0.257    0.013   19.154    0.000    0.461    0.199
##   General =~                                                            
##     Justice           1.000                               2.046    0.860
##     Police            0.722    0.012   60.504    0.000    1.477    0.659
##     Parlement         0.677    0.012   54.896    0.000    1.384    0.598
##     Partis            0.537    0.011   49.171    0.000    1.098    0.527
##     Politiques        0.604    0.011   53.399    0.000    1.236    0.579
##     ParlementEurop    0.649    0.012   52.668    0.000    1.327    0.570
##     NationsUnies      0.606    0.012   48.841    0.000    1.239    0.522
##   Politique =~                                                          
##     Parlement         1.000                               0.671    0.290
##     Partis            2.264    0.071   31.683    0.000    1.518    0.729
##     Politiques        2.280    0.072   31.655    0.000    1.529    0.716
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   Arene ~~                                                              
##     General           0.000                               0.000    0.000
##   General ~~                                                            
##     Politique         0.000                               0.000    0.000
##   Arene ~~                                                              
##     Politique         0.639    0.026   24.141    0.000    0.531    0.531
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .ParlementEurop    0.437    0.075    5.839    0.000    0.437    0.081
##    .NationsUnies      2.890    0.045   64.078    0.000    2.890    0.513
##    .Parlement         2.452    0.033   73.919    0.000    2.452    0.458
##    .Justice           1.476    0.059   25.029    0.000    1.476    0.261
##    .Police            2.850    0.046   61.789    0.000    2.850    0.566
##    .Partis            0.834    0.027   31.183    0.000    0.834    0.192
##    .Politiques        0.689    0.026   26.455    0.000    0.689    0.151
##     Arene             3.219    0.091   35.376    0.000    1.000    1.000
##     General           4.184    0.088   47.324    0.000    1.000    1.000
##     Politique         0.450    0.029   15.617    0.000    1.000    1.000
semPaths(fit3, what='std', nCharNodes=7, sizeMan=9,style="lisrel",layout="tree2",
         edge.label.cex=1.0, curvePivot = TRUE, fade=TRUE)

Modèle de groupes

enfin proposons un modèle par pays , on reprend le modèle bifactoriel qui semble le plus adapté. On obtient un chi*isq de 400 un peu inférieur au précédent. L’examen des paramètres fait apparaitre de faible variations. On teste en comparant à un modèle où les paramètre par période sont contraints à être égaux. La dégradation est suffisemment importe pour que le modèle soit plus précis, mais les variations étant faibles, on garde l’hypothèse d’une stabilité de la structure factorielle.

F<-subset(T,select=c(Justice, Police, Politiques, Parlement, Partis, ParlementEurop,NationsUnies,Year))

F$na_count <- apply(F, 1, function(x) sum(is.na(x)))
F<-subset(F,na_count==0)

fit4 <- cfa(mod, data = F,group="Year",estimator="GLS")
fitMeasures(fit4, c("chisq","cfi","rmsea","srmr"))
##   chisq     cfi   rmsea    srmr 
## 400.092   0.964   0.063   0.012
par<-standardizedSolution(fit4) #sauvegarde des par dans un df
par$parameter<-paste(par$lhs,par$op,par$rhs) #creation de la variable parameter
par<-subset(par,select=c(parameter,group,est.std)) #on retient ce qui nous intéresse
parb<-dcast(par, parameter~group) #on "caste"
parb %>% kable(digit=2) %>% kable_styling(full_width =F) # édition de la table avec kable
parameter 1 2 3 4 5 6 7
Arene ~~ Arene 1.00 1.00 1.00 1.00 1.00 1.00 1.00
Arene ~~ General 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Arene ~~ Politique 0.59 0.52 0.51 0.54 0.49 0.46 0.55
Arene ~1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Arene =~ NationsUnies 0.52 0.46 0.50 0.51 0.43 0.41 0.45
Arene =~ Parlement 0.23 0.24 0.24 0.24 0.18 0.13 0.20
Arene =~ ParlementEurop 0.65 0.75 0.75 0.74 0.77 0.82 0.80
General ~~ General 1.00 1.00 1.00 1.00 1.00 1.00 1.00
General ~~ Politique 0.00 0.00 0.00 0.00 0.00 0.00 0.00
General ~1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
General =~ Justice 0.87 0.80 0.87 0.86 0.86 0.87 0.85
General =~ NationsUnies 0.52 0.48 0.55 0.51 0.53 0.54 0.56
General =~ Parlement 0.61 0.58 0.60 0.61 0.59 0.63 0.64
General =~ ParlementEurop 0.59 0.53 0.60 0.60 0.58 0.58 0.59
General =~ Partis 0.58 0.49 0.51 0.55 0.55 0.54 0.54
General =~ Police 0.69 0.67 0.71 0.73 0.67 0.68 0.60
General =~ Politiques 0.62 0.57 0.59 0.61 0.60 0.60 0.58
Justice ~~ Justice 0.24 0.36 0.25 0.26 0.26 0.24 0.28
Justice ~1 2.04 2.09 2.12 2.06 2.15 2.08 2.07
NationsUnies ~~ NationsUnies 0.46 0.55 0.44 0.47 0.54 0.53 0.49
NationsUnies ~1 2.00 2.13 2.27 2.16 2.27 2.14 1.96
Parlement ~~ Parlement 0.43 0.48 0.46 0.43 0.47 0.46 0.43
Parlement ~1 1.90 1.90 2.00 1.79 1.79 1.65 1.75
ParlementEurop ~~ ParlementEurop 0.23 0.16 0.08 0.09 0.07 -0.02 0.02
ParlementEurop ~1 1.91 1.93 1.99 1.84 1.80 1.64 1.58
Partis ~~ Partis 0.18 0.21 0.27 0.16 0.22 0.16 0.14
Partis ~1 1.64 1.55 1.67 1.46 1.51 1.30 1.37
Police ~~ Police 0.52 0.55 0.49 0.47 0.55 0.54 0.64
Police ~1 2.55 2.58 2.58 2.42 2.69 2.84 3.02
Politique ~~ Politique 1.00 1.00 1.00 1.00 1.00 1.00 1.00
Politique ~1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Politique =~ Parlement 0.28 0.25 0.26 0.26 0.31 0.31 0.27
Politique =~ Partis 0.69 0.74 0.68 0.73 0.69 0.74 0.75
Politique =~ Politiques 0.70 0.70 0.71 0.71 0.71 0.70 0.73
Politiques ~~ Politiques 0.13 0.18 0.15 0.12 0.15 0.15 0.13
Politiques ~1 1.65 1.60 1.67 1.45 1.51 1.30 1.37
fit5 <- cfa(mod, data = F,group="Year",group.equal = c("loadings"), estimator="GLS")
anova(fit4,fit5)
## Chi Square Difference Test
## 
##       Df AIC BIC  Chisq Chisq diff Df diff Pr(>Chisq)    
## fit4  49         400.09                                  
## fit5 109         523.82     123.72      60  2.527e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Synthèse sur la confiance institutionnelle

  1. Des effets sensibles du revenu, du bonheur, du niveau d’éducation et de la pratique du vote sans doute des effets additifs plus que multiplicatif s ( pas d’interaction perceptibles) : on fait d’autant plus confiance aux institutions, que l’on vote, que l’on est heureux, qu’on vit confortablement et qu’on est éduqué.
  2. l’hypothèse d’une évolution divergente : l’Etat, le monde politique
  3. Des niveaux de confiance sensiblement liés aux conditions de vie mais des évolution parallèles : personne n’échappe à la tendance : de moins en moins confiance dans les porteurs de la voix politiques, une confiance croissante pour les institutions régaliennes.
T$ConfInstitut<-(T$Justice+T$Police+T$Politiques+T$Parlement+T$Partis+T$ParlementEurop+T$NationsUnies)/6
#Tb<-subset(T,(!is.na(revenu)))
ggplot(T,aes(x=revenu,y=ConfInstitut))+geom_violin(fill='#E69F00')

Ty1<- aggregate(cbind(ConfInstitut) ~ Year+revenu+education, data=T, FUN=mean) 

ggplot(Ty1,aes(x=Year,y=ConfInstitut,group=education))+geom_line(aes(colour =education), size=1.5)+theme(axis.text.x = element_text(angle = 90, hjust = 1)) +labs(x = "Ans", y="degré de confiance interpersonnelle ( de 1 à 10)")+theme(axis.text.x =element_text(angle = 45, hjust = 1))+scale_colour_brewer(palette = "Spectral")+facet_grid(. ~ revenu)+ylim(3,7)

Confiance interpersonnelle

La même opération est réalisée, on ne représente cependant pas les évolutions des critères car c’est déjà fait dans la partie précédente. 3 items : Entraide, loyauté, digne de confiance. L’objet de ces jugement est ancré dans l’idée de gens en général, et pas forcément les proches.

Les items sont : - Would you say that most people can be trusted, or that you can’t be too careful in dealing with people? Please tell me on a score of 0 to 10, where 0 means you can’t be too careful and 10 means that most people can be trusted. - do you think that most people would try to take advantage of you (0) if they got the chance, or would they try to be fair (10)? - Would you say that most of the time people try to be helpful or that they are mostly looking out for themselves?

En fonction du bonheur

Ty<- aggregate(cbind(Confiance, Aide, Equitable) ~Year+Bonheur, data=T, FUN=mean)

Tym<-melt(Ty, id=c("Year","Bonheur")) 
ggplot(Tym,aes(x=Year,y=value,group=Bonheur))+geom_line(aes(colour = Bonheur),size=1.5)+ facet_grid(cols = vars(variable))+ theme(axis.text.x =element_text(angle = 90, hjust = 1)) + labs(x = "Ans", y= "degré de confiance (de 1 à 10")+scale_color_manual(values=pal) 

Evolution de la confiance selon la participation aux élections

Ty<-filter(T,vote <3)

Ty<- aggregate(cbind(Confiance, Aide, Equitable) ~ Year+vote2, data=Ty,FUN=mean) 
names(Ty)[names(Ty)=="vote2"] <- "Vote"

Tym<-melt(Ty, id=c("Year","Vote"))

ggplot(Tym,aes(x=Year,y=value,group=Vote))+geom_line(aes(colour = Vote),size=1.5)+ facet_grid(cols = vars(variable))+ theme(axis.text.x =element_text(angle = 90, hjust = 1)) + labs(x = "Ans", y="degré de confiance (de 1 à 10")+scale_color_manual(values=pal)

Evolution de la confiance selon le niveau de diplôme

pas de baisse de confiance chez les plus diplomés. effondrement chez les moins diplomé

Ty<- aggregate(cbind(Confiance, Aide, Equitable) ~Year+education, data=T, FUN=mean)

Tym<-melt(Ty, id=c("Year","education"))

ggplot(Tym,aes(x=Year,y=value,group=education))+geom_line(aes(colour = education),size=1.5)+ facet_grid(cols = vars(variable))+ theme(axis.text.x =element_text(angle = 90, hjust = 1)) + labs(x = "Ans", y="degré de confiance (de 1 à 10")+scale_color_manual(values=pal)

Evolution de la confiance interpersonnelle selon la suffisance du revenu perçu

des lignes bien parallèles.

Ty<- aggregate(cbind(Confiance, Aide, Equitable) ~Year+revenu, data=T, FUN=mean) 
Tym<-melt(Ty, id=c("Year","revenu"))

ggplot(Tym,aes(x=Year,y=value,group=revenu))+geom_line(aes(colour = revenu),size=1.5)+ facet_grid(cols = vars(variable))+ theme(axis.text.x =element_text(angle = 90, hjust = 1)) + labs(x = "Ans", y="degré de confiance (
de 1 à 10)")+scale_color_manual(values=pal)

les quintiles de revenu. ( modèle 10% , 50%, 80%, 90%, 10%)

Ty<- aggregate(cbind(Confiance, Aide, Equitable) ~Year+quintileR, data=T, FUN=mean) 
Tym<-melt(Ty, id=c("Year","quintileR"))

ggplot(Tym,aes(x=Year,y=value,group=quintileR))+geom_line(aes(colour = quintileR),size=1.5)+ facet_grid(cols = vars(variable))+ theme(axis.text.x =element_text(angle = 90, hjust = 1)) + labs(x = "Ans", y="degré de confiance (
de 1 à 10)")+scale_colour_brewer(palette = "Blues")+ylim(3,7)

Evolution de la confiance interpersonnelle selon l’orientation politique

des lignes bien parallèles.

Ty<- aggregate(cbind(Confiance, Aide, Equitable) ~Year+OP, data=T, FUN=mean) 
Tym<-melt(Ty, id=c("Year","OP"))

ggplot(Tym,aes(x=Year,y=value,group=OP))+geom_line(aes(colour = OP),size=1.5)+ facet_grid(cols = vars(variable))+ theme(axis.text.x =element_text(angle = 90, hjust = 1)) + labs(x = "Ans", y="degré de confiance (
de 1 à 10)")+scale_colour_brewer(palette = "Spectral")+ylim(3,7)

Modélisation la confiance interpersonnelle

On ne se content plus de description. Il faut aussi tester les effets des variables. Une approche par analyse de variance mais avant une analyse plus fine de notre variable.

L’échelle de mesure

Pour évaluer l’échelle de mesure, la première chose est d’examiner ma matrice de corrélation. On la calcule dans la première ligne, la seconde utilise la fonction kable pour afficher le résultat

X<-cor(T[,c("Aide","Confiance","Equitable")], use="complete") 
kable(X,caption = "Correlation des objets de confiance", digits = 2) 
Correlation des objets de confiance
Aide Confiance Equitable
Aide 1.00 0.40 0.36
Confiance 0.40 1.00 0.32
Equitable 0.36 0.32 1.00

le alpha de cronbach est peu élevé mais acceptable, car une grande spécificité des items. Avec 3 items l’analyse factorielle est inutile.

alpha(X) #calcul de l alpha de Cronbach
## 
## Reliability analysis   
## Call: alpha(x = X)
## 
##   raw_alpha std.alpha G6(smc) average_r S/N median_r
##       0.63      0.63    0.53      0.36 1.7     0.36
## 
##  Reliability if an item is dropped:
##           raw_alpha std.alpha G6(smc) average_r  S/N var.r med.r
## Aide           0.49      0.49    0.32      0.32 0.94    NA  0.32
## Confiance      0.53      0.53    0.36      0.36 1.13    NA  0.36
## Equitable      0.57      0.57    0.40      0.40 1.34    NA  0.40
## 
##  Item statistics 
##              r r.cor r.drop
## Aide      0.78  0.59   0.47
## Confiance 0.76  0.55   0.44
## Equitable 0.74  0.51   0.41

On calcule le score ( moyenne des items) et l’examen de la distribution du score montre une assez bonne adéquation à la loi normale de même paramètres.

T$ConfInterperso <-(T$Aide+T$Confiance+T$Equitable)/3

uni<-summary(T[,"ConfInterperso", drop=FALSE], statistics=c("mean", "sd","IQR", "quantiles"),quantiles=c(0,.25,.5,.75,1))
uni
##  ConfInterperso  
##  Min.   : 0.000  
##  1st Qu.: 4.000  
##  Median : 5.000  
##  Mean   : 4.963  
##  3rd Qu.: 6.000  
##  Max.   :10.000  
##  NA's   :48
kable(describe(T$ConfInterperso),digit=2)
vars n mean sd median trimmed mad min max range skew kurtosis se
X1 1 15003 4.96 1.64 5 5.03 1.48 0 10 10 -0.36 0.2 0.01
g<-ggplot(T,aes(x=ConfInterperso))+geom_density(fill="#0B775E",alpha=0.3)
g1<-g+stat_function(fun=dnorm,color="red", args = list(mean = 4.96, sd=1.64))
g1
## Warning: Removed 48 rows containing non-finite values (stat_density).

avec quelques écarts notables qui laissent à penser que nous avons affaire à une distribution mélangées, ce qui est tester avec Mixtools et une fonction gg.mixEM créée par JLhoward

library(mixtools)
ConfInter<-as.numeric(T$ConfInterperso)
ConfInter<-na.omit(ConfInter)
mixD <- normalmixEM(ConfInter,k=3,maxit=1000,epsilon=0.01) # a réitirer ca marche pas toujours!
## One of the variances is going to zero;  trying new starting values.
## One of the variances is going to zero;  trying new starting values.
## number of iterations= 65
summary(mixD)
## summary of normalmixEM object:
##          comp 1   comp 2   comp 3
## lambda 0.311598 0.475475 0.212927
## mu     3.742517 5.189563 6.245623
## sigma  1.653215 1.206134 1.190522
## loglik at estimate:  -28518.08
g2<-g+stat_function(fun=dnorm,color="blue", args = list(mean = 5.58, sd=1.22))
g2<-g2+stat_function(fun=dnorm,color="blue", args = list(mean = 4.34, sd=1.77))
g2<-g2+stat_function(fun=dnorm,color="blue", args = list(mean = 3.31, sd=1.70))
g2
## Warning: Removed 48 rows containing non-finite values (stat_density).

#function 
# ggplot mixture plot
gg.mixEM <- function(EM) {
  require(ggplot2)
  x       <- with(EM,seq(min(x),max(x),len=1000))
  pars    <- with(EM,data.frame(comp=colnames(posterior), mu, sigma,lambda))
  em.df   <- data.frame(x=rep(x,each=nrow(pars)),pars)
  em.df$y <- with(em.df,lambda*dnorm(x,mean=mu,sd=sigma))
  ggplot(data.frame(x=EM$x),aes(x,y=..density..)) + 
    geom_density(fill=NA,color="black")+
    geom_polygon(data=em.df,aes(x,y,fill=comp),color="grey50", alpha=0.5)+
    scale_fill_discrete("Component\nMeans",labels=format(em.df$mu,digits=3))+
    theme_bw()
}
gg.mixEM(mixD)

Analyse de variance

un modèle full interaction, puis un modèle plus restreint aux effets principaux Une analyse de variance un peu brutale ( car dans certaine cellules les effectifs sont très faibles) , on simplifie ensuite.

https://cran.r-project.org/web/packages/kableExtra/vignettes/awesome_table_in_html.html

AnovaModel.2<- lm(ConfInterperso ~ education+revenu+vote2+Year+Year*revenu, data=T,contrasts=list(education ="contr.Sum", revenu ="contr.Sum", vote2 ="contr.Sum", Year="contr.Sum")) 
sstable <- Anova(AnovaModel.2, type = 3) 
kable(sstable, digits = 2)
Sum Sq Df F value Pr(>F)
(Intercept) 138713.29 1 56068.96 0.00
education 430.45 6 29.00 0.00
revenu 604.03 2 122.08 0.00
vote2 120.08 2 24.27 0.00
Year 78.86 5 6.38 0.00
revenu:Year 28.08 10 1.14 0.33
Residuals 28386.40 11474 NA NA
AnovaModel.1 <- lm(ConfInterperso ~ education*revenu*vote2*Year, data=T,contrasts=list(education ="contr.Sum", revenu="contr.Sum", vote2 ="contr.Sum", Year="contr.Sum")) 
sstable<-Anova(AnovaModel.1, type = 2) 
kable(sstable,digit=2,format = "html", caption = "Analyse de variance - full interaction") %>% kable_styling(bootstrap_options = c("striped", "hover"),full_width =F,font_size = 9)%>%
  group_rows("Effets principaux", 1, 4) %>%
  group_rows("Interactions ordre 2", 5, 10)%>%
  group_rows("Interactions ordre n", 11, 16)
Analyse de variance - full interaction
Sum Sq Df F value Pr(>F)
Effets principaux
education 433.80 6 29.36 0.00
revenu 598.78 2 121.59 0.00
vote2 122.44 2 24.86 0.00
Year 107.56 5 8.74 0.00
Interactions ordre 2
education:revenu 32.18 12 1.09 0.36
education:vote2 51.96 12 1.76 0.05
revenu:vote2 15.27 4 1.55 0.18
education:Year 81.05 30 1.10 0.33
revenu:Year 34.98 10 1.42 0.16
vote2:Year 28.77 10 1.17 0.31
Interactions ordre n
education:revenu:vote2 51.94 24 0.88 0.63
education:revenu:Year 189.67 60 1.28 0.07
education:vote2:Year 201.80 60 1.37 0.03
revenu:vote2:Year 63.71 20 1.29 0.17
education:revenu:vote2:Year 261.34 116 0.92 0.73
Residuals 27394.54 11126 NA NA

Taille des effets

et le calcul de la taille de l’effet (eta) qui montre que les effets sont très faibles même si la puissance de test est forte. En terme de f de Cohen (1988) qui mesure la taille de l’effet : revenu et education prédomine.

Pour des repères on sereporte à cette page sur les tailles d’effets

#library(sjstats) 
eta_sq(AnovaModel.2) 
##          term etasq
## 1   education 0.029
## 2      revenu 0.023
## 3       vote2 0.004
## 4        Year 0.004
## 5 revenu:Year 0.001
omega_sq(AnovaModel.2) 
##          term omegasq
## 1   education   0.029
## 2      revenu   0.023
## 3       vote2   0.003
## 4        Year   0.003
## 5 revenu:Year   0.000
cohens_f(AnovaModel.2)
##          term   cohens.f
## 1   education 0.17581331
## 2      revenu 0.15583823
## 3       vote2 0.06202630
## 4        Year 0.06201289
## 5 revenu:Year 0.03145188
sstable<-anova_stats(car::Anova(AnovaModel.2, type = 3)) #
kable(sstable,digit=2,format = "html", caption = "Analyse de variance - full interaction") %>%kable_styling(bootstrap_options = c("striped", "hover"),full_width =F,font_size = 9)%>%group_rows("Effets principaux", 1, 5) %>%group_rows("Interactions ordre 2", 6, 7)
Analyse de variance - full interaction
term sumsq meansq df statistic p.value etasq partial.etasq omegasq partial.omegasq cohens.f power
Effets principaux
(Intercept) 138713.29 138713.29 1 56068.96 0.00 0.82 0.83 0.82 0.83 2.21 1.00
education 430.45 71.74 6 29.00 0.00 0.00 0.02 0.00 0.01 0.12 1.00
revenu 604.02 302.01 2 122.08 0.00 0.00 0.02 0.00 0.02 0.15 1.00
vote2 120.08 60.04 2 24.27 0.00 0.00 0.00 0.00 0.00 0.06 1.00
Year 78.86 15.77 5 6.38 0.00 0.00 0.00 0.00 0.00 0.05 1.00
Interactions ordre 2
revenu:Year 28.08 2.81 10 1.14 0.33 0.00 0.00 0.00 0.00 0.03 0.61
Residuals 28386.40 2.47 11474 NA NA NA NA NA NA NA NA

concentrons-nous sur le revenu perçu et le niveau d’éducation.

Tb<-subset(T,(!is.na(revenu)))
ggplot(Tb,aes(x=revenu,y=ConfInterperso))+geom_violin(fill='#E69F00')

Ty1<- aggregate(cbind(ConfInterperso) ~ Year+revenu+education, data=Tb, FUN=mean) 

ggplot(Ty1,aes(x=Year,y=ConfInterperso,group=revenu))+geom_line(aes(colour =revenu), size=1.5)+theme(axis.text.x = element_text(angle = 90, hjust = 1)) +labs(x = "Ans", y="degré de confiance interpersonnelle (de 1 à
10)")+scale_color_manual(values=pal)+facet_grid(. ~ education)+ylim(3,7)

observations : 1) plus le niveau de diplôme est élevé et plus la confiance interpersonnelle est grande et plus sa variance est faible en terme de conditions de vie. Si pour le niveau master on distingue mal les différences de niveau de confiance selon l’aisance budgétaire, les différences sont marquées pour les niveaux de formations les plus faibles. Une interaction semble se manifester : quelque soit le niveau de diplôme quand la vie est confortable la confiance interpersonnelle varie peu. Quand le revenu est insuffissant la confiance se dégrade avec l’absence de diplôme. 2) il est difficile de visu de témoigner d’une évolution dans le temps, la confiance interpersonnelle semble être stationnaire. On peut envisager des tests plus sophistiqué pour tester cette hypothèse. On laisse aux étudiants de faire cet approfondissement.

Confiance et bonheur

La confiance est-elle une source de bien-être?

Un modèle structurel, on ajoute une variable de contrôle : l’état de santé perçu Car on sait (citation) qu’elle est un des déterminants les plus forts.

Nos données se constituant comme échantillon réparti dans le temps, on est parfaitement en droit de se demander, si le modèle est stable dans le temps. On estime donc à la suite d’un modèle général, un modèle par groupe que l’on compare à un modèle identique à celà près qu’on contraint les paramètres de mesure à une valeur égale quelques soit la période utilisée. En ajoutant cette contrainte on s’attend à ce que l’ajustement du modèle se dégrade, toute la question est de savoir si cette dégradation est significative. Si oui on acceptera l’idée que les modèles varient dans le temps, si non on acceptera l’hypothèse que la structure du modèle de mesure est la même à travers le temps.

e terme de procédure on estime 1) un modèle général qui ne différencie pas les sources de données 2) un modèle libre, dont tous les paramètres s’ajustent pour chacune des périodes étudiées. 3) un modèle où l’on contraint les paramètres de mesure à être égaux.

Un filtre est construit pour ne garder que les lignes sans aucune valeur manquante. C’est une exigence de Lavaan et du mode d’estimation standard par ML. Le choix d’une méthode GLS permet de prendre en compte toute les observations. On laisse le soin aux étudiants de comparer ces deux solutions.

Tna<-subset(T,select=c(Aide,Confiance,Equitable,Justice,NationsUnies,Parlement,ParlementEurop,Partis,Police,Politiques,stflife,happy,health,Year))
Tna$na_count <- apply(Tna, 1, function(x) sum(is.na(x)))
Tna<-subset(Tna,na_count==0)

model <- '
# measurement model
T_Interperso =~ Aide+Confiance+Equitable
T_Institution =~ NationsUnies+Parlement+ParlementEurop+Partis+Police+Politiques
Happyness =~ happy + stflife
# regressions
Happyness ~ T_Institution + T_Interperso+health
T_Institution  ~ health
T_Interperso ~ health
# residual correlations
T_Institution ~~ T_Interperso

'
fit0 <- sem(model, data=Tna)
summary(fit0, standardized=TRUE)
## lavaan 0.6-3 ended normally after 51 iterations
## 
##   Optimization method                           NLMINB
##   Number of free parameters                         28
## 
##   Number of observations                         12706
## 
##   Estimator                                         ML
##   Model Fit Test Statistic                    5546.299
##   Degrees of freedom                                49
##   P-value (Chi-square)                           0.000
## 
## Parameter Estimates:
## 
##   Information                                 Expected
##   Information saturated (h1) model          Structured
##   Standard Errors                             Standard
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   T_Interperso =~                                                       
##     Aide              1.000                               1.342    0.645
##     Confiance         1.030    0.023   44.640    0.000    1.382    0.635
##     Equitable         0.858    0.021   41.595    0.000    1.151    0.535
##   T_Institution =~                                                      
##     NationsUnies      1.000                               1.407    0.593
##     Parlement         1.200    0.019   64.843    0.000    1.689    0.730
##     ParlementEurop    1.223    0.019   65.457    0.000    1.721    0.740
##     Partis            1.288    0.018   72.313    0.000    1.813    0.870
##     Police            0.725    0.016   45.084    0.000    1.021    0.455
##     Politiques        1.356    0.019   73.275    0.000    1.907    0.894
##   Happyness =~                                                          
##     happy             1.000                               1.391    0.777
##     stflife           1.443    0.028   52.426    0.000    2.007    0.829
## 
## Regressions:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   Happyness ~                                                           
##     T_Institution     0.050    0.012    4.265    0.000    0.051    0.051
##     T_Interperso      0.389    0.016   24.013    0.000    0.376    0.376
##     health           -0.457    0.016  -29.287    0.000   -0.329   -0.291
##   T_Institution ~                                                       
##     health           -0.180    0.015  -12.091    0.000   -0.128   -0.113
##   T_Interperso ~                                                        
##     health           -0.267    0.017  -15.738    0.000   -0.199   -0.176
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##  .T_Interperso ~~                                                       
##    .T_Institution     0.849    0.027   31.330    0.000    0.460    0.460
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .Aide              2.520    0.048   52.383    0.000    2.520    0.583
##    .Confiance         2.829    0.053   53.851    0.000    2.829    0.597
##    .Equitable         3.304    0.051   64.660    0.000    3.304    0.714
##    .NationsUnies      3.646    0.048   75.513    0.000    3.646    0.648
##    .Parlement         2.499    0.035   70.763    0.000    2.499    0.467
##    .ParlementEurop    2.443    0.035   70.182    0.000    2.443    0.452
##    .Partis            1.052    0.020   53.855    0.000    1.052    0.243
##    .Police            3.987    0.051   77.702    0.000    3.987    0.793
##    .Politiques        0.912    0.019   47.324    0.000    0.912    0.200
##    .happy             1.272    0.037   34.298    0.000    1.272    0.397
##    .stflife           1.832    0.073   24.949    0.000    1.832    0.313
##    .T_Interperso      1.744    0.056   31.381    0.000    0.969    0.969
##    .T_Institution     1.954    0.055   35.389    0.000    0.987    0.987
##    .Happyness         1.378    0.037   36.927    0.000    0.712    0.712
fitMeasures(fit0, c("chisq","cfi","rmsea","srmr"))
##    chisq      cfi    rmsea     srmr 
## 5546.299    0.904    0.094    0.047
semPaths(fit0, "std", whatLabels="std",layout="tree2",intercepts = FALSE,residuals = FALSE, rotation=1,
         edge.label.cex = 0.7, label.cex=0.9,nCharNodes=13,curve = TRUE,
         shapeMan="rectangle",shapeLat="ellipse",curvePivot = FALSE,groups = "latent", pastel = TRUE, mar = c(3, 3, 3, 3),
         layoutSplit=TRUE, reorder=TRUE)

fitG0 <- sem(model, data=Tna, group="Year") # estimator="GLS" pour passer pardessus les NA
fitMeasures(fitG0, c("chisq","cfi","rmsea","srmr"))
##    chisq      cfi    rmsea     srmr 
## 5951.196    0.903    0.095    0.045
fitG1 <- sem(model, data=Tna, group="Year",group.equal = c("loadings"))
fitMeasures(fitG1, c("chisq","cfi","rmsea","srmr"))
##    chisq      cfi    rmsea     srmr 
## 6076.446    0.902    0.090    0.047
anova(fitG0,fitG1)
## Chi Square Difference Test
## 
##        Df    AIC    BIC  Chisq Chisq diff Df diff Pr(>Chisq)    
## fitG0 343 561673 563707 5951.2                                  
## fitG1 391 561703 563379 6076.4     125.25      48  8.088e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
par<-standardizedSolution(fitG0) #sauvegarde des par dans un df
par$parameter<-paste(par$lhs,par$op,par$rhs) #creation de la variable parameter
par<-subset(par,select=c(parameter,group,est.std)) #on retient ce qui nous intéresse
parb<-dcast(par, parameter~group) #on "caste"
parb %>% kable(digit=2) %>% kable_styling(full_width =F) # édition de la table avec kable
parameter 1 2 3 4 5 6 7
Aide ~~ Aide 0.60 0.61 0.61 0.59 0.51 0.58 0.56
Aide ~1 2.88 3.00 3.04 3.08 3.21 3.27 3.28
Confiance ~~ Confiance 0.56 0.64 0.53 0.67 0.61 0.63 0.56
Confiance ~1 2.33 2.28 2.35 2.24 2.48 2.44 2.46
Equitable ~~ Equitable 0.73 0.74 0.72 0.71 0.68 0.72 0.70
Equitable ~1 2.32 2.33 2.30 2.29 2.54 2.49 2.46
happy ~~ happy 0.36 0.38 0.41 0.41 0.40 0.42 0.39
happy ~1 4.50 4.82 4.73 4.65 4.80 4.79 4.79
Happyness ~ health -0.27 -0.29 -0.29 -0.34 -0.26 -0.29 -0.30
Happyness ~ T_Institution 0.09 0.04 0.05 0.10 0.01 0.07 0.03
Happyness ~ T_Interperso 0.31 0.37 0.40 0.37 0.41 0.39 0.36
Happyness ~~ Happyness 0.76 0.72 0.69 0.65 0.71 0.69 0.73
Happyness ~1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Happyness =~ happy 0.80 0.79 0.77 0.77 0.78 0.76 0.78
Happyness =~ stflife 0.83 0.83 0.83 0.82 0.84 0.83 0.83
health ~~ health 1.00 1.00 1.00 1.00 1.00 1.00 1.00
health ~1 2.63 2.63 2.53 2.53 2.56 2.57 2.59
NationsUnies ~~ NationsUnies 0.61 0.69 0.54 0.61 0.67 0.70 0.65
NationsUnies ~1 2.16 2.26 2.51 2.34 2.43 2.27 2.09
Parlement ~~ Parlement 0.44 0.50 0.45 0.44 0.48 0.48 0.47
Parlement ~1 2.10 2.07 2.27 2.03 1.99 1.84 1.93
ParlementEurop ~~ ParlementEurop 0.47 0.51 0.37 0.42 0.47 0.48 0.43
ParlementEurop ~1 2.10 2.09 2.28 2.08 2.01 1.84 1.76
Partis ~~ Partis 0.21 0.29 0.36 0.22 0.25 0.22 0.18
Partis ~1 1.88 1.75 1.96 1.73 1.76 1.54 1.59
Police ~~ Police 0.75 0.80 0.74 0.74 0.78 0.78 0.83
Police ~1 2.67 2.67 2.76 2.57 2.80 2.93 3.09
Politiques ~~ Politiques 0.18 0.24 0.29 0.18 0.21 0.19 0.16
Politiques ~1 1.89 1.81 1.98 1.73 1.77 1.54 1.59
stflife ~~ stflife 0.31 0.31 0.32 0.33 0.29 0.32 0.32
stflife ~1 3.41 3.34 3.31 3.40 3.36 3.40 3.66
T_Institution ~ health -0.10 -0.09 -0.15 -0.13 -0.11 -0.10 -0.09
T_Institution ~~ T_Institution 0.99 0.99 0.98 0.98 0.99 0.99 0.99
T_Institution ~1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
T_Institution =~ NationsUnies 0.62 0.56 0.68 0.62 0.57 0.55 0.59
T_Institution =~ Parlement 0.75 0.71 0.74 0.75 0.72 0.72 0.73
T_Institution =~ ParlementEurop 0.73 0.70 0.79 0.76 0.73 0.72 0.75
T_Institution =~ Partis 0.89 0.84 0.80 0.88 0.86 0.88 0.90
T_Institution =~ Police 0.50 0.45 0.51 0.51 0.47 0.47 0.41
T_Institution =~ Politiques 0.91 0.87 0.84 0.90 0.89 0.90 0.92
T_Interperso ~ health -0.16 -0.17 -0.16 -0.19 -0.22 -0.18 -0.17
T_Interperso ~~ T_Institution 0.53 0.50 0.47 0.39 0.47 0.47 0.45
T_Interperso ~~ T_Interperso 0.97 0.97 0.97 0.96 0.95 0.97 0.97
T_Interperso ~1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
T_Interperso =~ Aide 0.63 0.62 0.63 0.64 0.70 0.64 0.66
T_Interperso =~ Confiance 0.66 0.60 0.69 0.58 0.62 0.61 0.66
T_Interperso =~ Equitable 0.52 0.51 0.52 0.54 0.57 0.53 0.55

L’analyse des résultats montre que si effectivement un modèle multi-groupe libre s’ajuste mieux, les différences de valeurs des paramètres du modèles sont minces. Le meilleur modèle est sans doute un modèle sur-ajusté, et le modèle le plus général rend compte clairement des relations.

Le bonheur ne dépend pas où très peu de la confiance qu’on témoigne aux institutions. En revanche la santé et la confiance interpersonnelle y contribue de manière très sensible. Le bonheur reste determiné par une situation personnelle bien plus que par le rapport aux institutions. Le sentiment d’être en bonne santé joue un rôle déterminant, direct et indirect par le chemin de la confiance interpersonnelle : quand on se sent bien dans son coprs on fait confiance aux autres et par conséquent on est plus heureux. La confiance interpersonnelle contribue au bonheur, sans doute parcequ’en étant confiant envers les autres, on espère un soutien si les choses vont moins bien.

Discussion

  1. la confiance une question de ressources : les conditions pour se rendre vulnérable : revenu et niveau de formation.
  2. la structure factorielle de la confiance : le general et le particulier . Des limites intrinsèque à l’échelle, un facteur général, des facteurs spécifiques : la politique ( rancière) et le politique, le corps de l’état chevillé au régalien et incarné dans son inamovible administration, les arènes du débat.

  3. les raisons de la chute différentes hypothèses
  • la crise de 2007 ou
  • un mouvement plus lointain
  1. le divorce avec la politique mais pas avec le politique
  2. de la confiance à la défiance

pour éditer en html

rmarkdown::render(‘trustFrance.Rmd’) rmarkdown::render(‘trustFrance.Rmd’, encoding = ‘UTF-8’)

References

Churchill, Gilbert A. 1979. “A Paradigm for Developing Better Measures of Marketing Constructs.” Journal of Marketing Research 16 (1): 64. doi:10.2307/3150876.

Cohen, Jacob. 1988. Statistical Power Analysis for the Behavioral Sciences. 2nd ed. Hillsdale, N.J: L. Erlbaum Associates.

Jöreskog, K. G. 1969. “A General Approach to Confirmatory Maximum Likelihood Factor Analysis.” Psychometrika 34 (2): 183–202. doi:10.1007/BF02289343.

Munafò, Marcus R., Brian A. Nosek, Dorothy V. M. Bishop, Katherine S. Button, Christopher D. Chambers, Nathalie Percie du Sert, Uri Simonsohn, Eric-Jan Wagenmakers, Jennifer J. Ware, and John P. A. Ioannidis. 2017. “A Manifesto for Reproducible Science.” Nature Human Behaviour 1 (1): 0021. doi:10.1038/s41562-016-0021.

Thurstone, L. L. 1931. “Multiple Factor Analysis.” Psychological Review 38 (5): 406–27. doi:10.1037/h0069792.