Graphiques produits

Date de publication

6 décembre 2024

On indique les packages à utiliser pour l’exécution de ce programme. Tidyverse sera utilisé pour la gestion des données, questionr pour le calcul de statiques pondérées

# Packages
library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.1     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.1
✔ purrr     1.0.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(questionr)

On localise les bases de données sous R, deux formats principaux .RData et .rds

###############
# Localisation
###############
Rep="./materiel/"
File="FPA_TEO1_v4.RData"

# Montée en table
load(paste0(Rep,File))

Une brève description de la base de données

# Liste des variables
names(FPA)
 [1] "GROUP1"           "GROUP1CA"         "SEXEE"            "SITUAE"          
 [5] "P_NSTPTC"         "P_SATPTC"         "F_DIP"            "INATUE"          
 [9] "A_PERMIS"         "S_ETAT"           "TYPM5_MEN"        "MATRIE"          
[13] "T_DIPLOM"         "T_DIPLOP"         "D_DISCRI"         "D_PQDISC_A"      
[17] "D_PQDISC_B"       "D_PQDISC_C"       "D_PQDISC_D"       "D_PQDISC_E"      
[21] "D_PQDISC_F"       "D_PQDISC_G"       "D_PQDISC_H"       "D_PQDISC_I"      
[25] "D_PQDISC_J"       "D_PQDISC_K"       "D_PQDISC_L"       "D_PQDISC_FLAG"   
[29] "L_AUJC"           "L_AUJE"           "L_AUJL"           "L_AUJP"          
[33] "FRAUJ"            "P_DRECH"          "P_DISPQ_A"        "P_DISPQ_B"       
[37] "P_DISPQ_C"        "P_DISPQ_D"        "P_DISPQ_E"        "P_DISPQ_F"       
[41] "P_DISPQ_G"        "P_DISPQ_FLAG"     "T_VIOLEN"         "C_RCTLIC_A"      
[45] "C_RCTLIC_B"       "C_RCTLIC_C"       "C_RCTLIC_D"       "C_RCTLIC_E"      
[49] "C_RCTLIC_F"       "C_RCTLIC_G"       "C_RCTLIC_H"       "C_RCTLIC_I"      
[53] "C_RCTLIC_J"       "C_RCTLIC_K"       "C_RCTLIC_L"       "C_RCTLIC_M"      
[57] "C_RCTLIC_N"       "C_RCTLIC_O"       "C_RCTLIC_FLAG"    "POIDSI"          
[61] "ma_force"         "ma_init"          "ap_renc"          "ap_m_civ"        
[65] "ap_m_relig"       "nbunions_t"       "demarches"        "cs_act_6T"       
[69] "cs_mere_6T"       "cs_pere_6T"       "regionnaisp2_11t" "regionnaise2_11t"
[73] "regionnaism2_11t" "ID"               "age_tranches"    

Un exemple de distribution en tenant compte de la pondération

# Pondération POIDSSI
wtd.table(FPA$GROUP1,weights=FPA$POIDSI)
         1          2          3          4          5 
 3583012.8   290972.5  3635897.9   220091.0 26968957.3 

Ci après, la création des variables nécessaires, en fonction des variables existantes :

Les variables du fichier FPA utilisées seront les suivantes :

# Création Variable group2 
FPA=mutate(FPA,group2=case_when(
  GROUP1 %in% c("1","2") ~ "Immigrés (ou natif Dom)",
  GROUP1 == "5" ~ "Groupe majoritaire", 
  GROUP1 %in% c("3","4") & (regionnaism2_11t =="France métro" | regionnaisp2_11t =="France métro")  ~ "Descendant d'un immigré (ou Dom)",
  GROUP1 %in% c("3","4") & (regionnaism2_11t !="France métro" & regionnaisp2_11t !="France métro")  ~ "Descendant 2 immigrés (ou Dom)"
))

# Création variable origine
FPA=mutate(FPA,origine=case_when(
  
  # Pays de naissance du père si né à l'étranger (ou Dom)
  GROUP1 %in% c("3","4") & regionnaisp2_11t !="France métro"  ~ regionnaisp2_11t,
  
  # Pays de naissance de la mère sinon (ou Dom)
  GROUP1 %in% c("3","4") &  regionnaisp2_11t =="France métro" &  regionnaism2_11t !="France métro" ~ regionnaism2_11t )) 

A noter qu’on n’utilisera que les réponses 1,2 et 3 de la variable indiquant un sentiment de discriminations (D_DISCRI), en ne prenant pas en compte les refus de répondre et réponse “Ne sait pas”.

  # On ne retient pas les valeurs 8 et 9 de la variable D_DISCRI
  FPA = filter(FPA, D_DISCRI %in% c("1","2","3"))

On va enlever de l’étude ceux pour lesquels l’origine n’est pas connue avec certitude (modalité à 9999, due à une incertitude sur l’une des variables origine du père ou de la mère)

FPA =filter(FPA,origine != "9999")

Quelques tris à plat, pour l’échantillon retenu pour cette analyse (8405 personnes, uniquement les personnes ayant répondu clairement au sentiment de discrimination)

# Effectifs bruts (non pondérés)
freq(FPA$origine)
                           n    % val%
Afrique subsaharienne    805  3.7  3.7
Algérie                 1325  6.1  6.1
Asie                     567  2.6  2.6
Autres pays              571  2.6  2.6
DOM                      654  3.0  3.0
Espagne/Italie          1652  7.6  7.6
Groupe témoin           3774 17.5 17.5
Immigrés (ou natif Dom) 9112 42.2 42.2
Maroc/Tunisie           1124  5.2  5.2
Portugal                 925  4.3  4.3
Turquie                  445  2.1  2.1
UE27                     659  3.0  3.0
freq(FPA$GROUP1)
     n    % val%
1 8405 38.9 38.9
2  707  3.3  3.3
3 8088 37.4 37.4
4  639  3.0  3.0
5 3774 17.5 17.5
freq(FPA$group2)
                                    n    % val%
Descendant 2 immigrés (ou Dom)   5354 24.8 24.8
Descendant d'un immigré (ou Dom) 3370 15.6 15.6
Groupe témoin                    3774 17.5 17.5
Immigrés (ou natif Dom)          9112 42.2 42.2
NA                                  3  0.0   NA

Construction 1er graphique du Pop&Soc 466, avril 2010

X0 = FPA %>%
  group_by(group2) %>%
  count(discri,wt=POIDSI) %>%
  mutate(wtd_prop=100*n/sum(n)) %>%
  filter(discri==1 & !is.na(group2))


# Graphique avec les pourcentages à coté des barres d'histogramme
X0 %>%
  ggplot(aes(x=group2,y=wtd_prop)) +
  geom_bar(stat="identity") +
  xlab("Origine de l'enquêté") +
  ylab("En %") +
  ylim(0,50) +
  ggtitle("Proportion de personnes déclarant avoir subi des discriminations") +
  geom_text(aes(label=sprintf('%0.0f%%',wtd_prop)), position = position_dodge(width = 1),
            hjust=-0.1) +
  coord_flip()

Construction 2eme graphique

#########################################################
# Cas des immigrés ou natif d'un DOM (Chiffres en NOIR)
#########################################################

X1 = FPA %>%
  
  # Sélection immigrés ou DOM
  filter(GROUP1 %in% 1:2) %>%
  
  # Effectifs pondérés par pays de naissance
  group_by(regionnaise2_11t) %>%
  count(discri,wt=POIDSI) %>%
  
  # Calcul des proportions
  mutate(wtd_prop=100*n/sum(n,na.rm=T)) %>%
  
  # Sélection proportion de ceux qui sentent (ou non) discriminés
  filter(discri==1)

X1 = X1 %>%
  
  # Variable renommée
  rename(origine=regionnaise2_11t)%>%
  
  # Variable type créée et positionnée à "Immigré" dans ce cas
  mutate(type="Immigré")

#########################################################
# Cas des fille ou fils d'immigré (Chiffres en ORANGE)
#########################################################

X2 = FPA %>%
  
  # Sélection indidividus
  filter(GROUP1 %in% 3:4) %>%
  
  # Pays de naissance du parent
  group_by(origine) %>%
  
  # Calcul des effectifs pondérés, de ceux qui sentent (ou non) discriminés
  count(discri,wt=POIDSI) %>%
  mutate(wtd_prop=100*n/sum(n,na.rm=T))%>%
  filter(discri==1)

  # Variable type créée et positionnée à "Fils ou fille d'immigré" dans ce cas
 
X2 = X2 %>%
   mutate(type="Fils ou fille d'immigré")


# Jonction des résultats
X3=bind_rows(X1,X2)

# Affichage graphique
ggplot(X3) +
  
  # On représente la proportion de personnes qui se sentent discriminées (y) selon l'origine (x)
  # Ceci selon le type de personne immigrée (type)
  
  # wtd_prop reprénsente la proportion (pondérée) de ceux qui se sentent discriminés dans le groupe
  # indiqué 
  
  aes(x = origine, fill = type, y = wtd_prop) +
  
  # Mode de représentation = Histogramme, barres non superposées
  geom_bar(stat="identity",position = "dodge") +
  
  # Couleurs indiquées explicitement
  scale_fill_manual(values = c(`Fils ou fille d'immigré` = "#D3781E", 
                               Immigré = "#11090E")) +
  
  # Formatage des pourcentages et affichage à coté des barres
  geom_text(aes(label=sprintf('%0.0f%%',wtd_prop)),
            position = position_dodge(width = 1), hjust=-0.1) +
  
  # Titre du graphique et des axes, limite de l'axe vertical
  labs(title = "Proportion de personnes déclarant avoir subi des discriminations") +
  ylim(0,50) +
  xlab("Origine de l'enquêté") +
  ylab("En %") +
  
  # Barres horizontales
  coord_flip() +
  
  # Position de la légende en bas
  theme(legend.position="bottom")