library(dplyr)
## 
## Attachement du package : 'dplyr'
## Les objets suivants sont masqués depuis 'package:stats':
## 
##     filter, lag
## Les objets suivants sont masqués depuis 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(stargazer)
## 
## Please cite as:
##  Hlavac, Marek (2022). stargazer: Well-Formatted Regression and Summary Statistics Tables.
##  R package version 5.2.3. https://CRAN.R-project.org/package=stargazer
library(corrplot)
## corrplot 0.95 loaded
library(lmtest)
## Warning: le package 'lmtest' a été compilé avec la version R 4.5.2
## Le chargement a nécessité le package : zoo
## Warning: le package 'zoo' a été compilé avec la version R 4.5.2
## 
## Attachement du package : 'zoo'
## Les objets suivants sont masqués depuis 'package:base':
## 
##     as.Date, as.Date.numeric
library(car)
## Warning: le package 'car' a été compilé avec la version R 4.5.2
## Le chargement a nécessité le package : carData
## 
## Attachement du package : 'car'
## L'objet suivant est masqué depuis 'package:dplyr':
## 
##     recode
library(readxl)
## Warning: le package 'readxl' a été compilé avec la version R 4.5.2
Enfant_placé <- "D:/Documents/Master DS2E/S1/Econometrie appliquée/Projet_Econométrie/Base_de_donnée_Enfant_placé.xlsx"
bdd <- read_excel(Enfant_placé)
head(bdd)
## # A tibble: 6 × 14
##   `N°`  Département            `0 à 19 ans` `20 à 24 ans` `20-24/5` `0 à 20 ans`
##   <chr> <chr>                         <dbl>         <dbl>     <dbl>        <dbl>
## 1 01    Ain                          171336         32113     6423.      177759.
## 2 02    Aisne                        125708         27152     5430.      131138.
## 3 03    Allier                        66246         15740     3148        69394 
## 4 04    Alpes-de-Haute-Proven…        33920          6983     1397.       35317.
## 5 05    Hautes-Alpes                  27874          5632     1126.       29000.
## 6 06    Alpes-Maritimes              232394         57489    11498.      243892.
## # ℹ 8 more variables: `Total des enfants acceuilli` <dbl>,
## #   `taux_placement_enfant_(Pour_1000)` <dbl>, taux_chomage <dbl>,
## #   taux_pauvreté <chr>, taux_immigration <dbl>,
## #   `taux_logement_sociaux_(pour_10000_hab)` <chr>, Population_ayant_bac <dbl>,
## #   `Capacite_acceuil_(pour_1000)` <dbl>
str(bdd) #Etant donné que nous avons construit la base de donnée, certaines valeurs numériques sont perçu comme étant des chaine de charactère (chr) 
## tibble [100 × 14] (S3: tbl_df/tbl/data.frame)
##  $ N°                                    : chr [1:100] "01" "02" "03" "04" ...
##  $ Département                           : chr [1:100] "Ain" "Aisne" "Allier" "Alpes-de-Haute-Provence" ...
##  $ 0 à 19 ans                            : num [1:100] 171336 125708 66246 33920 27874 ...
##  $ 20 à 24 ans                           : num [1:100] 32113 27152 15740 6983 5632 ...
##  $ 20-24/5                               : num [1:100] 6423 5430 3148 1397 1126 ...
##  $ 0 à 20 ans                            : num [1:100] 177759 131138 69394 35317 29000 ...
##  $ Total des enfants acceuilli           : num [1:100] 1915 2484 1152 659 277 ...
##  $ taux_placement_enfant_(Pour_1000)     : num [1:100] 10.77 18.94 16.6 18.66 9.55 ...
##  $ taux_chomage                          : num [1:100] 5.5 10.5 7.7 8.1 6.6 7.1 8 9.7 9.4 9.6 ...
##  $ taux_pauvreté                         : chr [1:100] "10.8" "18.8" "16.2" "17.100000000000001" ...
##  $ taux_immigration                      : num [1:100] 11.98 5.06 5.5 8.44 5.96 ...
##  $ taux_logement_sociaux_(pour_10000_hab): chr [1:100] "730" "790" "597" "469" ...
##  $ Population_ayant_bac                  : num [1:100] 50.6 38.3 40.9 49.3 53.1 ...
##  $ Capacite_acceuil_(pour_1000)          : num [1:100] 2.9 5.1 8.3 9.2 6.3 5.1 5.8 13.8 17.1 9.8 ...
bdd <- bdd %>% rename(Tx_placement = "taux_placement_enfant_(Pour_1000)",
                      Tx_pauvre = "taux_pauvreté",
                      Tx_logement = "taux_logement_sociaux_(pour_10000_hab)",
                      Tx_cho = "taux_chomage",
                      Tx_immi = "taux_immigration",
                      Tx_bac = "Population_ayant_bac",
                      Cap_acc = "Capacite_acceuil_(pour_1000)")
bdd$Tx_pauvre   <- as.numeric(gsub(",", ".", bdd$Tx_pauvre))
## Warning: NAs introduits lors de la conversion automatique
bdd$Tx_cho      <- as.numeric(gsub(",", ".", bdd$Tx_cho))
bdd$Tx_logement <- as.numeric(gsub(",", ".", bdd$Tx_logement))
## Warning: NAs introduits lors de la conversion automatique
str(bdd) #On vient de transformer ces chr en num 
## tibble [100 × 14] (S3: tbl_df/tbl/data.frame)
##  $ N°                         : chr [1:100] "01" "02" "03" "04" ...
##  $ Département                : chr [1:100] "Ain" "Aisne" "Allier" "Alpes-de-Haute-Provence" ...
##  $ 0 à 19 ans                 : num [1:100] 171336 125708 66246 33920 27874 ...
##  $ 20 à 24 ans                : num [1:100] 32113 27152 15740 6983 5632 ...
##  $ 20-24/5                    : num [1:100] 6423 5430 3148 1397 1126 ...
##  $ 0 à 20 ans                 : num [1:100] 177759 131138 69394 35317 29000 ...
##  $ Total des enfants acceuilli: num [1:100] 1915 2484 1152 659 277 ...
##  $ Tx_placement               : num [1:100] 10.77 18.94 16.6 18.66 9.55 ...
##  $ Tx_cho                     : num [1:100] 5.5 10.5 7.7 8.1 6.6 7.1 8 9.7 9.4 9.6 ...
##  $ Tx_pauvre                  : num [1:100] 10.8 18.8 16.2 17.1 14.7 16.4 14.9 19.4 19 16.9 ...
##  $ Tx_immi                    : num [1:100] 11.98 5.06 5.5 8.44 5.96 ...
##  $ Tx_logement                : num [1:100] 730 790 597 469 568 ...
##  $ Tx_bac                     : num [1:100] 50.6 38.3 40.9 49.3 53.1 ...
##  $ Cap_acc                    : num [1:100] 2.9 5.1 8.3 9.2 6.3 5.1 5.8 13.8 17.1 9.8 ...
bdd_pour_cor <- bdd %>% dplyr::select(Tx_placement, Tx_pauvre, Tx_cho, Tx_logement, Tx_immi, Tx_bac, Cap_acc) #On ne veux enlever les valeurs non numérique et les valeurs qui n'ont forcement pas un impact de correlation (n° de département)

colSums(is.na(bdd))
##                          N°                 Département 
##                           0                           0 
##                  0 à 19 ans                 20 à 24 ans 
##                           0                           0 
##                     20-24/5                  0 à 20 ans 
##                           0                           0 
## Total des enfants acceuilli                Tx_placement 
##                           0                           0 
##                      Tx_cho                   Tx_pauvre 
##                           0                           2 
##                     Tx_immi                 Tx_logement 
##                           0                           4 
##                      Tx_bac                     Cap_acc 
##                           0                           0
bdd <- na.omit(bdd)
bdd_pour_cor <-na.omit(bdd_pour_cor)

corrplot(cor(bdd_pour_cor), method = "square",
         diag = FALSE, addCoef.col = "black", number.cex = 0.8) #On fait donc la matrice de corrélation

bdd <- bdd %>% mutate(Log_pauvre = log(Tx_pauvre), Log_Placement = log(Tx_placement), Log_cho = log(Tx_cho), Log_bac = log(Tx_bac), Log_logement = log(Tx_logement), Log_immi = log(Tx_immi), Log_acceuil = log(Cap_acc))
#Il s'agit de taux alors je choisis de faire un modèle en log-log, de plus j'ai précédement fait des test avec un modèle linéaire mais ce dernier est vraiment beaucoup moins significatif
#Première regression linéaire : 
Model_1 <- lm(Log_Placement ~ Log_pauvre, bdd)
stargazer(Model_1, type = "text")
## 
## ===============================================
##                         Dependent variable:    
##                     ---------------------------
##                            Log_Placement       
## -----------------------------------------------
## Log_pauvre                   0.510***          
##                               (0.156)          
##                                                
## Constant                     1.298***          
##                               (0.419)          
##                                                
## -----------------------------------------------
## Observations                    96             
## R2                             0.102           
## Adjusted R2                    0.092           
## Residual Std. Error       0.299 (df = 94)      
## F Statistic           10.677*** (df = 1; 94)   
## ===============================================
## Note:               *p<0.1; **p<0.05; ***p<0.01
summary(Model_1)
## 
## Call:
## lm(formula = Log_Placement ~ Log_pauvre, data = bdd)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.70555 -0.19723  0.03761  0.19888  0.62620 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept)   1.2982     0.4193   3.096  0.00258 **
## Log_pauvre    0.5097     0.1560   3.268  0.00152 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2988 on 94 degrees of freedom
## Multiple R-squared:  0.102,  Adjusted R-squared:  0.09245 
## F-statistic: 10.68 on 1 and 94 DF,  p-value: 0.001515
#Modèle complet : 
Model_2 <- lm(Log_Placement ~ Log_pauvre + Log_cho + Log_immi + Log_acceuil + Log_logement + Log_bac,bdd)
stargazer(Model_2, type = "text")
## 
## ===============================================
##                         Dependent variable:    
##                     ---------------------------
##                            Log_Placement       
## -----------------------------------------------
## Log_pauvre                   0.532***          
##                               (0.156)          
##                                                
## Log_cho                       -0.069           
##                               (0.146)          
##                                                
## Log_immi                     -0.216***         
##                               (0.063)          
##                                                
## Log_acceuil                  0.208***          
##                               (0.040)          
##                                                
## Log_logement                  -0.007           
##                               (0.058)          
##                                                
## Log_bac                      -0.771***         
##                               (0.216)          
##                                                
## Constant                     4.423***          
##                               (1.012)          
##                                                
## -----------------------------------------------
## Observations                    96             
## R2                             0.642           
## Adjusted R2                    0.617           
## Residual Std. Error       0.194 (df = 89)      
## F Statistic           26.556*** (df = 6; 89)   
## ===============================================
## Note:               *p<0.1; **p<0.05; ***p<0.01
#R2 ajusté plus grand que 60%, deux variable ne sont pas significative (Chômage et logement ; multicolinéarité avec la pauvreté ?)
#Verification de la multicolinéarité via un VIF; 
vif(Model_2)
##   Log_pauvre      Log_cho     Log_immi  Log_acceuil Log_logement      Log_bac 
##     2.374582     2.088571     2.402576     1.093065     1.178529     2.154426
#Toutes la valeurs sont inférieur à 5 donc il n'y pas de problème de multicolinéarité
#Vérification de l'hétéroskedasticité : 
bptest(Model_2)
## 
##  studentized Breusch-Pagan test
## 
## data:  Model_2
## BP = 7.9963, df = 6, p-value = 0.2384
#Le test de Brusch-Pagan confirme l'hypothèse nulle ; p-value = 0.2384 > 0.05, le modèle est donc significatif, homoskédastique et ne souffre pas de multicolinéarité
#Avec le théorème centrale limite on peut facilement expliquer que les erreur suivent une loi normal, néanmoins on peut faire le test de Shapiro afin de le prouver : 
shapiro.test(resid(Model_2))
## 
##  Shapiro-Wilk normality test
## 
## data:  resid(Model_2)
## W = 0.9858, p-value = 0.3908
#La p-value = 0,3908 > 0.05 donc les résidus suivent bien une loi normale 
stargazer(Model_2, type ="text")
## 
## ===============================================
##                         Dependent variable:    
##                     ---------------------------
##                            Log_Placement       
## -----------------------------------------------
## Log_pauvre                   0.532***          
##                               (0.156)          
##                                                
## Log_cho                       -0.069           
##                               (0.146)          
##                                                
## Log_immi                     -0.216***         
##                               (0.063)          
##                                                
## Log_acceuil                  0.208***          
##                               (0.040)          
##                                                
## Log_logement                  -0.007           
##                               (0.058)          
##                                                
## Log_bac                      -0.771***         
##                               (0.216)          
##                                                
## Constant                     4.423***          
##                               (1.012)          
##                                                
## -----------------------------------------------
## Observations                    96             
## R2                             0.642           
## Adjusted R2                    0.617           
## Residual Std. Error       0.194 (df = 89)      
## F Statistic           26.556*** (df = 6; 89)   
## ===============================================
## Note:               *p<0.1; **p<0.05; ***p<0.01