Skip to content

Instantly share code, notes, and snippets.

@arnaudgodin
Created June 16, 2016 16:14
Show Gist options
  • Select an option

  • Save arnaudgodin/f046ef13513cc881258fd58a6bcf58f8 to your computer and use it in GitHub Desktop.

Select an option

Save arnaudgodin/f046ef13513cc881258fd58a6bcf58f8 to your computer and use it in GitHub Desktop.
Émile2
#Étude sur l'enquête de la dynamique du travail
#Par Arnaud Godin
#Été 2016
#Version R
#good_graph <- readline(prompt="Quel graphique veux-tu faire: ")
library(foreign)
dtr<-read.csv("edtr-75M0010-F-2010-fichier-famille-economique_F2.csv")
#On génère les différentes variables nécessaires pour étudier les inégalités de revenu par l'indice de Gini et la courbe de Lorenz
#Revenu de marché:
revmarche<-dtr$mtinc27
#Revenu disponible:
revdisponible<-dtr$mbinc27
#Revenu total avant impôt:
revtotal<-dtr$ttinc27
#On définit une variable de poids plus facilement manipulable:
poids<-dtr$wtcsld26
#Il faut installer le «package» permettant de réaliser les traitements sur les inégalités
#install.packages("ineq")
library(ineq)
#On peut maintenant passer au calcul des coefficients de Gini (en utilisant le «package» "ineq":
g1<-ineq(revmarche, type="Gini") #L'indice de Gini pour le revenu de marché
g2<-ineq(revtotal, type="Gini") #L'indice de Gini pour le revenu total avant impôt
g3<-ineq(revdisponible, type="Gini") #L'indice de Gini pour le revenu disponible
#Le «package» reldist fait exactement la même chose, sauf qu'il permet d'ajouter les poids:
#install.packages("reldist")
library(reldist)
#En utilisant le poid transversal de l'enquête:
g4<-gini(revmarche, weights=poids) #L'indice de Gini pour le revenu de marché
g5<-gini(revtotal, weights=poids) #L'indice de Gini pour le revenu total avant impôt
g6<-gini(revdisponible, weights=poids) #L'indice de Gini pour le revenu disponible
#On assigne ici les indices de Gini à un vecteur "Gini" et les types de revenus à un vecteur "Revenus"
Gini<-c(g1, g2, g3)
Gini_pondere<-c(g4, g5, g6)
Revenus<-c("Revenu de marché", "Revenu total avant impôt", "Revenu disponible")
#Il s'agit ensuite de placer les deux vecteurs dans un seul tableau
typerevenu<-data.frame(Gini, Gini_pondere, row.names=Revenus)
#Il est possible d'ordonner les résultats pour qu'ils soient plus beau à l'oeil une fois présentés
tableaufinal<-format(typerevenu, digits=4, justifiy="right")
#On fait un programme de présentation des résultats de type "input/output":
#Il s'agit d'une boucle qui permet de voir les différents indices successivement
repeat{
presentation_gini<-readline(prompt="Quels indices de Gini voudriez-vous voir ('Marche', 'Total', 'Disponible', 'tous' ou 'aucun')?:")
if (presentation_gini=="Marche"){
print(tableaufinal["Revenu de marché",])
} else if (presentation_gini=="Total"){
print(tableaufinal["Revenu total avant impôt",])
} else if (presentation_gini=="Disponible"){
print(tableaufinal["Revenu disponible",])
} else if (presentation_gini=="tous") {
print(tableaufinal)
} else if (presentation_gini=="aucun"){
print("Parfait, passons aux courbes de Lorenz")
} else {
print("Invalide, il faut choisir entre 'Marche', 'Total', 'Disponible', 'tous' ou 'aucun'")
}
if (presentation_gini=="aucun"){
break
}
}
#On passe ensuite aux courbes de Lorenz:
clmarche<-Lc(revmarche, poids) #Courbe de lorenz pour le revenu de marché
cldisponible<-Lc(revdisponible, poids) #Courbe de lorenz pour le revenu disponible
cltotal<-Lc(revtotal, poids) #Courbe de lorenz pour le revenu total avant impôt
#Avant de faire sortir les graphiques, on se concentre d'abord à trouver des couleurs contrastantes:
#install.packages("RColorBrewer")
library(RColorBrewer)
couleur<-brewer.pal(n=3, name="Set1")
couleur1<-brewer.pal(n=6, name="Dark2")
#Il est maintenant possible de faire un graphique des différentes courbes de lorenz
#On peut présenter les différentes options de graphiques seules en tapants "marche", "disponible" et "total"
#Ici on fait le choix entre les courbes de Lorenz ordinaires ou généralisées:
choix_graphique<-readline(prompt="Voulez-vous voir les courbes de Lorenz ordinaires('o') ou généralisées('g')?: ")
if (choix_graphique=="o"){
good_graph <- readline(prompt="Quelle courbe de Lorenz dois-je présenter ('marche', 'disponible', 'total')?: ")
if (good_graph == "marche") {
plot(clmarche, main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur[1])
} else if (good_graph == "disponible") {
plot(cldisponible, main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur[2])
} else if (good_graph == "total") {
plot(cltotal, main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur[3])
} else {
print("Graphique Invalide, il faut choisir entre 'marche', 'disponible' ou 'total' ")
}
} else if (choix_graphique=="g"){
good_graph <- readline(prompt="Quelle courbe de Lorenz dois-je présenter ('marche', 'disponible', 'total')?: ")
if (good_graph == "marche") {
plot(clmarche, general=TRUE, main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur1[4])
} else if (good_graph == "disponible") {
plot(cldisponible, general=TRUE, main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur1[5])
} else if (good_graph == "total") {
plot(cltotal, general=TRUE, main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur1[6])
} else {
print("Graphique Invalide, il faut choisir entre 'marche', 'disponible' ou 'total' ")
}
} else {
print("Invalide, choisir entre 'o' ou 'g'")
}
#Permet de faire la superposition des courbes les quatres options sont disponibles
question1<- readline(prompt="Dois-je superposer des courbes ('oui' ou 'non')?: ")
if (question1== "oui"){
choix_graphique1<-readline(prompt="Voulez-vous voir superposées les courbes de Lorenz ordinaires('o') ou généralisées('g')?: ")
if (choix_graphique1=="o"){
graph_multiples<- readline(prompt="Quelles courbes superposer ('marche disponible', 'marche total', 'disponible total' ou 'toutes')?: ")
if (graph_multiples == "marche disponible") {
plot(clmarche, main=NULL,xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur[1])
lines(cldisponible, col=couleur[2])
} else if (graph_multiples == "marche total") {
plot(clmarche, main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur[1])
lines(cltotal, col=couleur[3])
} else if (graph_multiples == "disponible total") {
plot(cldisponible, main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur[2])
lines(cltotal, col=couleur[3])
}else if (graph_multiples=="toutes") {
plot(clmarche, main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur[1])
lines(cldisponible, col=couleur[2])
lines(cltotal, col=couleur[3])
} else {
print("Graphique Invalide, il faut choisir entre 'marche disponible', 'marche total', 'disponible total' ou 'toutes' ")
}
} else if (choix_graphique1=="g"){
graph_multiples<- readline(prompt="Quelles courbes superposer ('marche disponible', 'marche total', 'disponible total' ou 'toutes')?: ")
if (graph_multiples == "marche disponible") {
plot(clmarche, general=TRUE, main=NULL,xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur1[4])
lines(cldisponible, general=TRUE, col=couleur1[5])
} else if (graph_multiples == "marche total") {
plot(clmarche, general=TRUE, main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur1[4])
lines(cltotal, general=TRUE, col=couleur1[6])
} else if (graph_multiples == "disponible total") {
plot(cldisponible, general=TRUE, main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur1[5])
lines(cltotal, general=TRUE, col=couleur1[6])
}else if (graph_multiples=="toutes") {
plot(clmarche, general=TRUE,main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur1[4])
lines(cldisponible, general=TRUE, col=couleur1[5])
lines(cltotal, general=TRUE, col=couleur1[6])
} else {
print("Graphique Invalide, il faut choisir entre 'marche disponible', 'marche total', 'disponible total' ou 'toutes' ")
}
}
} else if (question1=="non") {
print("D'accord")
} else{
print("Invalide, il faut choisir entre 'oui' ou 'non' ")
}
#Permet de repasser le processus ad vitam aeternam si nécessaire, pour sortir de la boucle il sufffit de spécifier "non"
repeat{
question2<-readline(prompt="Autre chose ('oui' ou 'non') ?: ")
if (question2== "oui"){
choix_graphique<-readline(prompt="Voulez-vous voir les courbes de Lorenz ordinaires('o') ou généralisées('g')?: ")
if (choix_graphique=="o"){
good_graph <- readline(prompt="Quelle courbe de Lorenz dois-je présenter ('marche', 'disponible', 'total')?: ")
if (good_graph == "marche") {
plot(clmarche, main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur[1])
} else if (good_graph == "disponible") {
plot(cldisponible, main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur[2])
} else if (good_graph == "total") {
plot(cltotal, main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur[3])
} else {
print("Graphique Invalide, il faut choisir entre 'marche', 'disponible' ou 'total' ")
}
} else if (choix_graphique=="g"){
good_graph <- readline(prompt="Quelle courbe de Lorenz dois-je présenter ('marche', 'disponible', 'total')?: ")
if (good_graph == "marche") {
plot(clmarche, general=TRUE, main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur1[4])
} else if (good_graph == "disponible") {
plot(cldisponible, general=TRUE, main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur1[5])
} else if (good_graph == "total") {
plot(cltotal, general=TRUE, main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur1[6])
} else {
print("Graphique Invalide, il faut choisir entre 'marche', 'disponible' ou 'total' ")
}
} else {
print("Invalide, choisir entre 'o' ou 'g'")
}
question1<- readline(prompt="Dois-je superposer des courbes ('oui' ou 'non')?: ")
if (question1== "oui"){
choix_graphique1<-readline(prompt="Voulez-vous voir superposées les courbes de Lorenz ordinaires('o') ou généralisées('g')?: ")
if (choix_graphique1=="o"){
graph_multiples<- readline(prompt="Quelles courbes superposer ('marche disponible', 'marche total', 'disponible total' ou 'toutes')?: ")
if (graph_multiples == "marche disponible") {
plot(clmarche, main=NULL,xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur[1])
lines(cldisponible, col=couleur[2])
} else if (graph_multiples == "marche total") {
plot(clmarche, main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur[1])
lines(cltotal, col=couleur[3])
} else if (graph_multiples == "disponible total") {
plot(cldisponible, main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur[2])
lines(cltotal, col=couleur[3])
}else if (graph_multiples=="toutes") {
plot(clmarche, main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur[1])
lines(cldisponible, col=couleur[2])
lines(cltotal, col=couleur[3])
} else {
print("Graphique Invalide, il faut choisir entre 'marche disponible', 'marche total', 'disponible total' ou 'toutes' ")
}
} else if (choix_graphique1=="g"){
graph_multiples<- readline(prompt="Quelles courbes superposer ('marche disponible', 'marche total', 'disponible total' ou 'toutes')?: ")
if (graph_multiples == "marche disponible") {
plot(clmarche, general=TRUE, main=NULL,xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur1[4])
lines(cldisponible, general=TRUE, col=couleur1[5])
} else if (graph_multiples == "marche total") {
plot(clmarche, general=TRUE, main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur1[4])
lines(cltotal, general=TRUE, col=couleur1[6])
} else if (graph_multiples == "disponible total") {
plot(cldisponible, general=TRUE, main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur1[5])
lines(cltotal, general=TRUE, col=couleur1[6])
}else if (graph_multiples=="toutes") {
plot(clmarche, general=TRUE,main=NULL, xlab="Pourcentage des ménages", ylab="Pourcentage des revenus", col=couleur1[4])
lines(cldisponible, general=TRUE, col=couleur1[5])
lines(cltotal, general=TRUE, col=couleur1[6])
} else {
print("Graphique Invalide, il faut choisir entre 'marche disponible', 'marche total', 'disponible total' ou 'toutes' ")
}
}
} else if (question1=="non") {
print("D'accord")
} else{
print("Invalide, il faut choisir entre 'oui' ou 'non' ")
}
} else if (question2=="non"){
print("Merci, au revoir!")
} else{
print("Invalide, il faut choisir entre 'oui' et 'non' ")
}
if (question2== "non"){
break
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment