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