AJout de l'exo 1
This commit is contained in:
		
							
								
								
									
										276
									
								
								EXO1/README.md
									
									
									
									
									
								
							
							
						
						
									
										276
									
								
								EXO1/README.md
									
									
									
									
									
								
							@@ -1,2 +1,276 @@
 | 
			
		||||
# SAE_2.04
 | 
			
		||||
# Exercice 1 : Analyse des données démographiques et professionnelles
 | 
			
		||||
 | 
			
		||||
## Table des matières
 | 
			
		||||
1. [Initialisation des variables](#init)
 | 
			
		||||
2. [Répartition des genres](#q1)
 | 
			
		||||
3. [Répartition des niveaux d'études selon le genre](#q2)
 | 
			
		||||
4. [Effectifs des 10 professions les plus représentées](#q3)
 | 
			
		||||
5. [Profession la plus fréquente selon le genre](#q4)
 | 
			
		||||
6. [Statistiques par niveau d'études](#q5)
 | 
			
		||||
7. [Statistiques par genre](#q6)
 | 
			
		||||
7. [Nuage de points et régression](#q6)
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
## Initialisation des variables {#init}
 | 
			
		||||
 | 
			
		||||
Pour cette exercice, veuillez initaliser les variables suivantes :
 | 
			
		||||
 | 
			
		||||
**[Script Scilab](scripts/init.sce) :**
 | 
			
		||||
 | 
			
		||||
```scilab
 | 
			
		||||
csvDouble = csvRead("data.csv")                         //ouvre data.csv en une matrice d'entier
 | 
			
		||||
csvString = csvRead("data.csv",[],[],'string')          //ouvre data.csv en une matrice de string
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
## Question 1 : Répartition des genres {#q1}
 | 
			
		||||
 | 
			
		||||
> Donnez sous forme de camembert la répartition des genres.
 | 
			
		||||
 | 
			
		||||
**[Script Scilab](scripts/q1.sce) :**
 | 
			
		||||
 | 
			
		||||
```scilab
 | 
			
		||||
genre = tabul(csvString(:,3),"i")                       //récupère la liste des genres ainsi que leur occurence
 | 
			
		||||
        ->genre(1)                                      //liste les différents genres du tableau
 | 
			
		||||
        ->genre(2)                                      //donne l'occurence correspondant aux valeurs de "genre(1)"
 | 
			
		||||
    pie(genre(2),genre(1))                              //ouvre un diagramme camembert représentant les genres en fonction de leur occurence
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
**Résultat :**
 | 
			
		||||
 | 
			
		||||
# RESULTAT A AJOUTER ICI 
 | 
			
		||||
# RESULTAT A AJOUTER ICI 
 | 
			
		||||
# RESULTAT A AJOUTER ICI 
 | 
			
		||||
# RESULTAT A AJOUTER ICI 
 | 
			
		||||
# RESULTAT A AJOUTER ICI 
 | 
			
		||||
# RESULTAT A AJOUTER ICI 
 | 
			
		||||
# RESULTAT A AJOUTER ICI 
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
## Question 2 : Répartition des niveaux d'études selon le genre {#q2}
 | 
			
		||||
 | 
			
		||||
> Donnez sous forme d'histogramme la répartition des niveaux d'études, suivant le genre.
 | 
			
		||||
 | 
			
		||||
**[Script Scilab](scripts/q2.sce) :**
 | 
			
		||||
 | 
			
		||||
```scilab
 | 
			
		||||
genre_lvl = [csvString(:,3),csvString(:,4)]                                     // crée une matrice 6699x2 avec les genres et le niveau d'études
 | 
			
		||||
 | 
			
		||||
high_homme = length(find(genre_lvl(:,2) == "0" & genre_lvl(:,1) == "Male"))     // renvoie l'occurence d'hommes ayant un niveau d'étude de 0
 | 
			
		||||
high_femme = length(find(genre_lvl(:,2) == "0" & genre_lvl(:,1) == "Female"))   // renvoie l'occurence des femmes ayant un niveau d'étude de 0
 | 
			
		||||
high_autre = length(find(genre_lvl(:,2) == "0" & genre_lvl(:,1) == "Other"))    // renvoie l'occurence des autres ayant un niveau d'étude de 0
 | 
			
		||||
 | 
			
		||||
b_homme = length(find(genre_lvl(:,2) == "1" & genre_lvl(:,1) == "Male"))        // renvoie l'occurence d'hommes ayant un niveau d'étude de 1
 | 
			
		||||
b_femme = length(find(genre_lvl(:,2) == "1" & genre_lvl(:,1) == "Female"))      // renvoie l'occurence des femmes ayant un niveau d'étude de 1
 | 
			
		||||
b_autre = length(find(genre_lvl(:,2) == "1" & genre_lvl(:,1) == "Other"))       // renvoie l'occurence des autres ayant un niveau d'étude de 1
 | 
			
		||||
 | 
			
		||||
m_homme = length(find(genre_lvl(:,2) == "2" & genre_lvl(:,1) == "Male"))        // renvoie l'occurence des hommes ayant un niveau d'étude de 2
 | 
			
		||||
m_femme = length(find(genre_lvl(:,2) == "2" & genre_lvl(:,1) == "Female"))      // renvoie l'occurence des femmes ayant un niveau d'étude de 2
 | 
			
		||||
m_autre = length(find(genre_lvl(:,2) == "2" & genre_lvl(:,1) == "Other"))       // renvoie l'occurence des autres ayant un niveau d'étude de 2
 | 
			
		||||
 | 
			
		||||
d_homme = length(find(genre_lvl(:,2) == "3" & genre_lvl(:,1) == "Male"))        // renvoie l'occurence des hommes ayant un niveau d'étude de 3
 | 
			
		||||
d_femme = length(find(genre_lvl(:,2) == "3" & genre_lvl(:,1) == "Female"))      // renvoie l'occurence des femmes ayant un niveau d'étude de 3
 | 
			
		||||
d_autre = length(find(genre_lvl(:,2) == "3" & genre_lvl(:,1) == "Other"))       // renvoie l'occurence des autres ayant un niveau d'étude de 3
 | 
			
		||||
 | 
			
		||||
temp = [high_homme, high_femme, high_autre;b_homme, b_femme, b_autre;m_homme, m_femme, m_autre;d_homme, d_femme, d_autre]   //crée un tableau 
 | 
			
		||||
lvlEtude = [0,1,2,3]
 | 
			
		||||
bar(lvlEtude,temp);
 | 
			
		||||
legend("homme","femme","autre")
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
**Résultat :**
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# RESULTAT A AJOUTER ICI 
 | 
			
		||||
# RESULTAT A AJOUTER ICI 
 | 
			
		||||
# RESULTAT A AJOUTER ICI 
 | 
			
		||||
# RESULTAT A AJOUTER ICI 
 | 
			
		||||
# RESULTAT A AJOUTER ICI 
 | 
			
		||||
# RESULTAT A AJOUTER ICI 
 | 
			
		||||
# RESULTAT A AJOUTER ICI 
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
## Question 3 : Effectifs des 10 professions les plus représentées {#q3}
 | 
			
		||||
 | 
			
		||||
> Donnez sous forme d'histogramme, les effectifs des 10 professions les plus représentées.
 | 
			
		||||
 | 
			
		||||
**[Script Scilab](scripts/q3.sce) :**
 | 
			
		||||
 | 
			
		||||
```scilab
 | 
			
		||||
 | 
			
		||||
metiers = tabul(csvString(:,5),"i")                                 //récupère la liste des profession ainsi que leur occurence
 | 
			
		||||
[occu,indice] = gsort(metiers(2))                                   //donne la liste des occurence trié ainsi que l'indice que son indice avant le tri
 | 
			
		||||
profession = metiers(1)                                             //stock la liste des profession dans une variable
 | 
			
		||||
matrice_occurence = [occu(1:1),occu(2:2),occu(3:3),occu(4:4),occu(5:5),occu(6:6),occu(7:7),occu(8:8),occu(9:9),occu(10:10)]
 | 
			
		||||
bar(matrice_occurence)                                              //affiche l'histogramme des 10 professions avec le plus de monde
 | 
			
		||||
legend(profession(indice(1:10)))                                    //légende le graphe pour donner un nom à chaque colonne
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
**Résultat :**
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# RESULTAT A AJOUTER ICI 
 | 
			
		||||
# RESULTAT A AJOUTER ICI 
 | 
			
		||||
# RESULTAT A AJOUTER ICI 
 | 
			
		||||
# RESULTAT A AJOUTER ICI 
 | 
			
		||||
# RESULTAT A AJOUTER ICI 
 | 
			
		||||
# RESULTAT A AJOUTER ICI 
 | 
			
		||||
# RESULTAT A AJOUTER ICI 
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
## Question 4 : Profession la plus fréquente selon le genre {#q4}
 | 
			
		||||
 | 
			
		||||
> Quelle est la profession la plus fréquente des femmes ? des hommes ?
 | 
			
		||||
 | 
			
		||||
**[Script Scilab](scripts/q4.sce) :**
 | 
			
		||||
 | 
			
		||||
```scilab
 | 
			
		||||
// Femme : 
 | 
			
		||||
indice_female = find(csvString(:,3) == "Female")        //récupère les indice de la colonne 3 de data.csv contenant "Female"
 | 
			
		||||
[valeurs] = csvString(indice_female,5)                  //récupère les métiers situés aux indices récupérés précédemment
 | 
			
		||||
metiers_female = tabul(valeurs)                         //récupère les métiers sans doublons ainsi que leur occurence
 | 
			
		||||
[occurence_tri,indice_tri] = gsort(metiers_female(2))   //récupère et trie dans un tableau ce qu'on a relevé précédemment et relève leur indice d'avant
 | 
			
		||||
liste_metiers_female = metiers_female(1)                //récupère dans une variable la liste des métiers unique dans le but de la parcourir par indice
 | 
			
		||||
liste_metiers_female(119)                               //relève le métiers recensant le plus de femmes
 | 
			
		||||
 | 
			
		||||
// Homme : 
 | 
			
		||||
indice_male = find(csvString(:,3) == "Male")            //récupère les les indice de la colonne 3 de data.csv contenant "Male"
 | 
			
		||||
[valeurs2] = csvString(indice_male,5)                   //récupère les métiers situés aux indices récupérés précédemment
 | 
			
		||||
metiers_male = tabul(valeurs2)                          //récupère les métiers sans doublons ainsi que leur occurence
 | 
			
		||||
[occurence_tri,indice_tri] = gsort(metiers_male(2))     //récupère et trie dans un tableau ce qu'on a relevé précédemment et relève leur indice d'avant
 | 
			
		||||
liste_metiers_male = metiers_male(1)                    //récupère dans une variable la liste des métiers unique dans le but de la parcourir par indice
 | 
			
		||||
liste_metiers_male(11)                                  //relève le métiers recensant le plus d'hommes
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
**Résultat :**
 | 
			
		||||
 | 
			
		||||
- Profession la plus fréquente des femmes : Data Scientist
 | 
			
		||||
- Profession la plus fréquente des hommes : Software Engineer
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
## Question 5 : Statistiques par niveau d'études {#q5}
 | 
			
		||||
 | 
			
		||||
> Pour chaque niveau d'études, donnez le salaire moyen, l'âge moyen et l'expérience moyenne.
 | 
			
		||||
 | 
			
		||||
**[Script Scilab](scripts/q5.sce) :**
 | 
			
		||||
 | 
			
		||||
```scilab
 | 
			
		||||
indice_high = find(csvDouble(:,4) == 0 )
 | 
			
		||||
salaire_high = csvDouble(indice_high,7)
 | 
			
		||||
mean(salaire_high)                                      //36706.694
 | 
			
		||||
age_high = csvDouble(indice_high,2)
 | 
			
		||||
mean(age_high)                                          //26.854911
 | 
			
		||||
exp_high = csvDouble(indice_high,6)
 | 
			
		||||
mean(exp_high)                                          //1.9151786
 | 
			
		||||
 | 
			
		||||
indice_b = find(csvDouble(:,4) == 1 )
 | 
			
		||||
salaire_b = csvDouble(indice_b,7)
 | 
			
		||||
mean(salaire_b)                                         //95082.909
 | 
			
		||||
age_b = csvDouble(indice_b,2)
 | 
			
		||||
mean(age_b)                                             //30.260179
 | 
			
		||||
exp_b = csvDouble(indice_b,6)
 | 
			
		||||
mean(exp_b)                                             //5.4195631
 | 
			
		||||
 | 
			
		||||
indice_m = find(csvDouble(:,4) == 2 )
 | 
			
		||||
salaire_m = csvDouble(indice_m,7)
 | 
			
		||||
mean(salaire_m)                                         //130112.06
 | 
			
		||||
age_m = csvDouble(indice_m,2)
 | 
			
		||||
mean(age_m)                                             //35.171505
 | 
			
		||||
exp_m = csvDouble(indice_m,6)
 | 
			
		||||
mean(exp_m)                                             //9.6456989
 | 
			
		||||
 | 
			
		||||
indice_p = find(csvDouble(:,4) == 3)
 | 
			
		||||
salaire_p = csvDouble(indice_p,7)
 | 
			
		||||
mean(salaire_p)                                         //165651.46
 | 
			
		||||
age_p = csvDouble(indice_p,2)
 | 
			
		||||
mean(age_p)                                             //41.154858
 | 
			
		||||
exp_p = csvDouble(indice_p,6)
 | 
			
		||||
mean(exp_p)                                             //13.915267
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
**Résultat :**
 | 
			
		||||
 | 
			
		||||
    - Niveau d'étude 0 :
 | 
			
		||||
        - Salaire moyen : 36,706.69 $
 | 
			
		||||
        - Âge moyen : 26.85 ans
 | 
			
		||||
        - Expérience moyenne : 1.92 ans
 | 
			
		||||
 | 
			
		||||
    - Niveau d'étude 1 :
 | 
			
		||||
        - Salaire moyen : 95,082.91 $
 | 
			
		||||
        - Âge moyen : 30.26 ans
 | 
			
		||||
        - Expérience moyenne : 5.42 ans
 | 
			
		||||
 | 
			
		||||
    - Niveau d'étude 2 :
 | 
			
		||||
        - Salaire moyen : 130,112.06 $
 | 
			
		||||
        - Âge moyen : 35.17 ans
 | 
			
		||||
        - Expérience moyenne : 9.65 ans
 | 
			
		||||
 | 
			
		||||
    - Niveau d'étude 3 :
 | 
			
		||||
        - Salaire moyen : 165,651.46 $
 | 
			
		||||
        - Âge moyen : 41.15 ans
 | 
			
		||||
        - Expérience moyenne : 13.92 ans
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
## Question 6 : Statistiques par genre {#q6}
 | 
			
		||||
 | 
			
		||||
> Pour chaque genre, donnez le salaire moyen, l'âge moyen et l'expérience moyenne.
 | 
			
		||||
 | 
			
		||||
**[Script Scilab](scripts/q6.sce) :**
 | 
			
		||||
 | 
			
		||||
```scilab
 | 
			
		||||
indice_6_female = find(csvString(:,3) == "Female" )
 | 
			
		||||
salaire_6_female = csvDouble(indice_6_female,7)
 | 
			
		||||
mean(salaire_6_female)					                //107889.00
 | 
			
		||||
age_6_female = csvDouble(indice_6_female,2)
 | 
			
		||||
mean(age_6_female)					                    //32.626286
 | 
			
		||||
exp_6_female = csvDouble(indice_6_female,6)
 | 
			
		||||
mean(exp_6_female)					                    //7.4201792
 | 
			
		||||
 | 
			
		||||
indice_6_male = find(csvString(:,3) == "Male" )
 | 
			
		||||
salaire_6_male = csvDouble(indice_6_male,7)
 | 
			
		||||
mean(salaire_6_male)					                //121389.87
 | 
			
		||||
age_6_male = csvDouble(indice_6_male,2)
 | 
			
		||||
mean(age_6_male)					                    //34.416394
 | 
			
		||||
exp_6_male = csvDouble(indice_6_male,6)
 | 
			
		||||
mean(exp_6_male)					                    //8.6169662
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
indice_6_other = find(csvString(:,3) == "Other" )
 | 
			
		||||
salaire_6_other = csvDouble(indice_6_other,7)
 | 
			
		||||
mean(salaire_6_other)					                //125869.86
 | 
			
		||||
age_6_other = csvDouble(indice_6_other,2)
 | 
			
		||||
mean(age_6_other)					                    //39.571429
 | 
			
		||||
exp_6_other = csvDouble(indice_6_other,6)
 | 
			
		||||
mean(exp_6_other)					                    //16.428571
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
**Résultat :**
 | 
			
		||||
 | 
			
		||||
- Genre Femme :
 | 
			
		||||
    - Salaire moyen : 107,889.00 $
 | 
			
		||||
    - Âge moyen : 32.63 ans
 | 
			
		||||
    - Expérience moyenne : 7.42 ans
 | 
			
		||||
 | 
			
		||||
- Genre Homme :
 | 
			
		||||
    - Salaire moyen : 121,389.87 $
 | 
			
		||||
    - Âge moyen : 34.41 ans
 | 
			
		||||
    - Expérience moyenne : 8.62 ans
 | 
			
		||||
 | 
			
		||||
- Genre Autre :
 | 
			
		||||
    - Salaire moyen : 125,869.86 $
 | 
			
		||||
    - Âge moyen : 39.57 ans
 | 
			
		||||
    - Expérience moyenne : 16.43 ans
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
[🏠](../ "Retour au sommaire") | [➡️](../EXO2/ "Exercice suivant (Exercice 2)")
 | 
			
		||||
							
								
								
									
										2
									
								
								EXO1/scripts/init.sce
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								EXO1/scripts/init.sce
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
csvDouble = csvRead("data.csv")                         //ouvre data.csv en une matrice d'entier
 | 
			
		||||
csvString = csvRead("data.csv",[],[],'string')          //ouvre data.csv en une matrice de string
 | 
			
		||||
							
								
								
									
										4
									
								
								EXO1/scripts/q1.sce
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								EXO1/scripts/q1.sce
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
genre = tabul(csvString(:,3),"i")                   //récupère la liste des genres ainsi que leur occurence
 | 
			
		||||
        ->genre(1)                                  //liste les différents genres du tableau
 | 
			
		||||
        ->genre(2)                                  //donne l'occurence correspondant aux valeurs de "genre(1)"
 | 
			
		||||
    pie(genre(2),genre(1))                          //ouvre un diagramme camembert représentant les genres en fonction de leur occurence
 | 
			
		||||
							
								
								
									
										22
									
								
								EXO1/scripts/q2.sce
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								EXO1/scripts/q2.sce
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
genre_lvl = [csvString(:,3),csvString(:,4)]                                     // crée une matrice 6699x2 avec les genres et le niveau d'études
 | 
			
		||||
 | 
			
		||||
high_homme = length(find(genre_lvl(:,2) == "0" & genre_lvl(:,1) == "Male"))     // renvoie l'occurence d'hommes ayant un niveau d'étude de 0
 | 
			
		||||
high_femme = length(find(genre_lvl(:,2) == "0" & genre_lvl(:,1) == "Female"))   // renvoie l'occurence des femmes ayant un niveau d'étude de 0
 | 
			
		||||
high_autre = length(find(genre_lvl(:,2) == "0" & genre_lvl(:,1) == "Other"))    // renvoie l'occurence des autres ayant un niveau d'étude de 0
 | 
			
		||||
 | 
			
		||||
b_homme = length(find(genre_lvl(:,2) == "1" & genre_lvl(:,1) == "Male"))        // renvoie l'occurence d'hommes ayant un niveau d'étude de 1
 | 
			
		||||
b_femme = length(find(genre_lvl(:,2) == "1" & genre_lvl(:,1) == "Female"))      // renvoie l'occurence des femmes ayant un niveau d'étude de 1
 | 
			
		||||
b_autre = length(find(genre_lvl(:,2) == "1" & genre_lvl(:,1) == "Other"))       // renvoie l'occurence des autres ayant un niveau d'étude de 1
 | 
			
		||||
 | 
			
		||||
m_homme = length(find(genre_lvl(:,2) == "2" & genre_lvl(:,1) == "Male"))        // renvoie l'occurence des hommes ayant un niveau d'étude de 2
 | 
			
		||||
m_femme = length(find(genre_lvl(:,2) == "2" & genre_lvl(:,1) == "Female"))      // renvoie l'occurence des femmes ayant un niveau d'étude de 2
 | 
			
		||||
m_autre = length(find(genre_lvl(:,2) == "2" & genre_lvl(:,1) == "Other"))       // renvoie l'occurence des autres ayant un niveau d'étude de 2
 | 
			
		||||
 | 
			
		||||
d_homme = length(find(genre_lvl(:,2) == "3" & genre_lvl(:,1) == "Male"))        // renvoie l'occurence des hommes ayant un niveau d'étude de 3
 | 
			
		||||
d_femme = length(find(genre_lvl(:,2) == "3" & genre_lvl(:,1) == "Female"))      // renvoie l'occurence des femmes ayant un niveau d'étude de 3
 | 
			
		||||
d_autre = length(find(genre_lvl(:,2) == "3" & genre_lvl(:,1) == "Other"))       // renvoie l'occurence des autres ayant un niveau d'étude de 3
 | 
			
		||||
 | 
			
		||||
temp = [high_homme, high_femme, high_autre;b_homme, b_femme, b_autre;m_homme, m_femme, m_autre;d_homme, d_femme, d_autre]   //crée un tableau 
 | 
			
		||||
lvlEtude = [0,1,2,3]
 | 
			
		||||
bar(lvlEtude,temp);
 | 
			
		||||
legend("homme","femme","autre")
 | 
			
		||||
							
								
								
									
										6
									
								
								EXO1/scripts/q3.sce
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								EXO1/scripts/q3.sce
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
metiers = tabul(csvString(:,5),"i")                                 //récupère la liste des profession ainsi que leur occurence
 | 
			
		||||
[occu,indice] = gsort(metiers(2))                                   //donne la liste des occurence trié ainsi que l'indice que son indice avant le tri
 | 
			
		||||
profession = metiers(1)                                             //stock la liste des profession dans une variable
 | 
			
		||||
matrice_occurence = [occu(1:1),occu(2:2),occu(3:3),occu(4:4),occu(5:5),occu(6:6),occu(7:7),occu(8:8),occu(9:9),occu(10:10)]
 | 
			
		||||
bar(matrice_occurence)                                              //affiche l'histogramme des 10 professions avec le plus de monde
 | 
			
		||||
legend(profession(indice(1:10)))                                    //légende le graphe pour donner un nom à chaque colonne
 | 
			
		||||
							
								
								
									
										17
									
								
								EXO1/scripts/q4.sce
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								EXO1/scripts/q4.sce
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
// Femme : 
 | 
			
		||||
indice_female = find(csvString(:,3) == "Female")        //récupère les indice de la colonne 3 de data.csv contenant "Female"
 | 
			
		||||
[valeurs] = csvString(indice_female,5)                  //récupère les métiers situés aux indices récupérés précédemment
 | 
			
		||||
metiers_female = tabul(valeurs)                         //récupère les métiers sans doublons ainsi que leur occurence
 | 
			
		||||
[occurence_tri,indice_tri] = gsort(metiers_female(2))   //récupère et trie dans un tableau ce qu'on a relevé précédemment et relève leur indice d'avant
 | 
			
		||||
liste_metiers_female = metiers_female(1)                //récupère dans une variable la liste des métiers unique dans le but de la parcourir par indice
 | 
			
		||||
liste_metiers_female(119)                               //relève le métiers recensant le plus de femmes
 | 
			
		||||
 | 
			
		||||
// Homme : 
 | 
			
		||||
indice_male = find(csvString(:,3) == "Male")            //récupère les les indice de la colonne 3 de data.csv contenant "Male"
 | 
			
		||||
[valeurs2] = csvString(indice_male,5)                   //récupère les métiers situés aux indices récupérés précédemment
 | 
			
		||||
metiers_male = tabul(valeurs2)                          //récupère les métiers sans doublons ainsi que leur occurence
 | 
			
		||||
[occurence_tri,indice_tri] = gsort(metiers_male(2))     //récupère et trie dans un tableau ce qu'on a relevé précédemment et relève leur indice d'avant
 | 
			
		||||
liste_metiers_male = metiers_male(1)                    //récupère dans une variable la liste des métiers unique dans le but de la parcourir par indice
 | 
			
		||||
liste_metiers_male(11)                                  //relève le métiers recensant le plus d'hommes
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										31
									
								
								EXO1/scripts/q5.sce
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								EXO1/scripts/q5.sce
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
			
		||||
indice_high = find(csvDouble(:,4) == 0 )
 | 
			
		||||
salaire_high = csvDouble(indice_high,7)
 | 
			
		||||
mean(salaire_high)                                      //36706.694
 | 
			
		||||
age_high = csvDouble(indice_high,2)
 | 
			
		||||
mean(age_high)                                          //26.854911
 | 
			
		||||
exp_high = csvDouble(indice_high,6)
 | 
			
		||||
mean(exp_high)                                          //1.9151786
 | 
			
		||||
 | 
			
		||||
indice_b = find(csvDouble(:,4) == 1 )
 | 
			
		||||
salaire_b = csvDouble(indice_b,7)
 | 
			
		||||
mean(salaire_b)                                         //95082.909
 | 
			
		||||
age_b = csvDouble(indice_b,2)
 | 
			
		||||
mean(age_b)                                             //30.260179
 | 
			
		||||
exp_b = csvDouble(indice_b,6)
 | 
			
		||||
mean(exp_b)                                             //5.4195631
 | 
			
		||||
 | 
			
		||||
indice_m = find(csvDouble(:,4) == 2 )
 | 
			
		||||
salaire_m = csvDouble(indice_m,7)
 | 
			
		||||
mean(salaire_m)                                         //130112.06
 | 
			
		||||
age_m = csvDouble(indice_m,2)
 | 
			
		||||
mean(age_m)                                             //35.171505
 | 
			
		||||
exp_m = csvDouble(indice_m,6)
 | 
			
		||||
mean(exp_m)                                             //9.6456989
 | 
			
		||||
 | 
			
		||||
indice_p = find(csvDouble(:,4) == 3)
 | 
			
		||||
salaire_p = csvDouble(indice_p,7)
 | 
			
		||||
mean(salaire_p)                                         //165651.46
 | 
			
		||||
age_p = csvDouble(indice_p,2)
 | 
			
		||||
mean(age_p)                                             //41.154858
 | 
			
		||||
exp_p = csvDouble(indice_p,6)
 | 
			
		||||
mean(exp_p)                                             //13.915267
 | 
			
		||||
							
								
								
									
										24
									
								
								EXO1/scripts/q6.sce
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								EXO1/scripts/q6.sce
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
indice_6_female = find(csvString(:,3) == "Female" )
 | 
			
		||||
salaire_6_female = csvDouble(indice_6_female,7)
 | 
			
		||||
mean(salaire_6_female)					                //107889.00
 | 
			
		||||
age_6_female = csvDouble(indice_6_female,2)
 | 
			
		||||
mean(age_6_female)					                    //32.626286
 | 
			
		||||
exp_6_female = csvDouble(indice_6_female,6)
 | 
			
		||||
mean(exp_6_female)					                    //7.4201792
 | 
			
		||||
 | 
			
		||||
indice_6_male = find(csvString(:,3) == "Male" )
 | 
			
		||||
salaire_6_male = csvDouble(indice_6_male,7)
 | 
			
		||||
mean(salaire_6_male)					                //121389.87
 | 
			
		||||
age_6_male = csvDouble(indice_6_male,2)
 | 
			
		||||
mean(age_6_male)					                    //34.416394
 | 
			
		||||
exp_6_male = csvDouble(indice_6_male,6)
 | 
			
		||||
mean(exp_6_male)					                    //8.6169662
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
indice_6_other = find(csvString(:,3) == "Other" )
 | 
			
		||||
salaire_6_other = csvDouble(indice_6_other,7)
 | 
			
		||||
mean(salaire_6_other)					                //125869.86
 | 
			
		||||
age_6_other = csvDouble(indice_6_other,2)
 | 
			
		||||
mean(age_6_other)					                    //39.571429
 | 
			
		||||
exp_6_other = csvDouble(indice_6_other,6)
 | 
			
		||||
mean(exp_6_other)					                    //16.428571
 | 
			
		||||
							
								
								
									
										172
									
								
								EXO4/README.md
									
									
									
									
									
								
							
							
						
						
									
										172
									
								
								EXO4/README.md
									
									
									
									
									
								
							@@ -1,11 +1,23 @@
 | 
			
		||||
# Exercice 4 : Analyse des salaires
 | 
			
		||||
# NON FINIT !!!
 | 
			
		||||
# NON FINIT !!!
 | 
			
		||||
 | 
			
		||||
# NON FINIT !!!# NON FINIT !!!
 | 
			
		||||
# NON FINIT !!!
 | 
			
		||||
# NON FINIT !!!
 | 
			
		||||
# NON FINIT !!!
 | 
			
		||||
# NON FINIT !!!
 | 
			
		||||
# NON FINIT !!!
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# NON FINIT !!!
 | 
			
		||||
# NON FINIT !!!
 | 
			
		||||
 | 
			
		||||
# Exercice 4 : Analyse de la relation entre âge, expérience et salaire
 | 
			
		||||
 | 
			
		||||
## Table des matières
 | 
			
		||||
1. [Initialisation des variables](#init)
 | 
			
		||||
2. [Distribution des salaires par genre](#q1)
 | 
			
		||||
3. [Histogramme des salaires moyens par niveau d'études](#q2)
 | 
			
		||||
4. [Statistiques descriptives des salaires](#q3)
 | 
			
		||||
5. [Répartition des salaires par genre](#q4)
 | 
			
		||||
2. [Nuage de points et régression linéaire : Age vs Salaire](#q1)
 | 
			
		||||
3. [Nuage de points et régression linéaire : Expérience vs Salaire](#q2)
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
@@ -16,37 +28,54 @@ Pour cette exercice, veuillez initaliser les variables suivantes :
 | 
			
		||||
**[Script Scilab](scripts/init.sce) :**
 | 
			
		||||
 | 
			
		||||
```scilab
 | 
			
		||||
D = csvRead('data.csv');
 | 
			
		||||
DD = csvRead('data.csv',',','.','string');
 | 
			
		||||
genre = DD(:,3);
 | 
			
		||||
// Charger les données depuis le fichier CSV
 | 
			
		||||
data = csvRead('data.csv');
 | 
			
		||||
 | 
			
		||||
// Extraire les colonnes pertinentes (âge et salaire)
 | 
			
		||||
age = data(:, 2);
 | 
			
		||||
salaire = data(:, 7);
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
## Question 1 : Distribution des salaires par genre {#q1}
 | 
			
		||||
## Question 1 : Nuage de points et régression linéaire (Age vs Salaire) {#q1}
 | 
			
		||||
 | 
			
		||||
> Donnez, sous forme d'histogramme, la distribution des salaires suivant le genre.
 | 
			
		||||
> Tracez un nuage de points (age,salaire), et la droite de regression correspondante. Quel est le coefficient de corrélation ?
 | 
			
		||||
 | 
			
		||||
**[Script Scilab](scripts/q1.sce) :**
 | 
			
		||||
 | 
			
		||||
```scilab
 | 
			
		||||
D_homme = D(genre == 'Male',:);
 | 
			
		||||
D_femme = D(genre == 'Female',:);
 | 
			
		||||
salaire_homme = D_homme(:,7);
 | 
			
		||||
salaire_femme = D_femme(:,7);
 | 
			
		||||
num_bins = 50;
 | 
			
		||||
// Vérifier les dimensions
 | 
			
		||||
disp(size(age));
 | 
			
		||||
disp(size(salaire));
 | 
			
		||||
 | 
			
		||||
subplot(2, 1, 1);
 | 
			
		||||
histplot(num_bins, salaire_homme);
 | 
			
		||||
title("Distribution des salaires pour les hommes");
 | 
			
		||||
xlabel("Salaire");
 | 
			
		||||
ylabel("Fréquence");
 | 
			
		||||
clf;
 | 
			
		||||
 | 
			
		||||
subplot(2, 1, 2); 
 | 
			
		||||
histplot(num_bins, salaire_femme);
 | 
			
		||||
title("Distribution des salaires pour les femmes");
 | 
			
		||||
xlabel("Salaire");
 | 
			
		||||
ylabel("Fréquence");
 | 
			
		||||
// Tracer le nuage de points avec les vraies données
 | 
			
		||||
scatter(age, salaire, 10, 'filled');
 | 
			
		||||
xlabel('Age');
 | 
			
		||||
ylabel('Salaire');
 | 
			
		||||
title('Nuage de points : Age vs Salaire');
 | 
			
		||||
 | 
			
		||||
A = [ones(length(age), 1), age];
 | 
			
		||||
coefficients = A \ salaire;
 | 
			
		||||
salaire_pred = A * coefficients;
 | 
			
		||||
 | 
			
		||||
// Tracer la droite de régression
 | 
			
		||||
plot(age, salaire, '+'); // Tracer le nuage de points
 | 
			
		||||
plot(age, salaire_pred, '-r'); // Tracer la droite de régression
 | 
			
		||||
legend(['Données', 'Droite de régression'], 'Location', 'northwest');
 | 
			
		||||
 | 
			
		||||
// Calcul manuel du coefficient de corrélation
 | 
			
		||||
mean_age = mean(age);
 | 
			
		||||
mean_salaire = mean(salaire);
 | 
			
		||||
numerateur = sum((age - mean_age) .* (salaire - mean_salaire));
 | 
			
		||||
denominateur = sqrt(sum((age - mean_age).^2) * sum((salaire - mean_salaire).^2));
 | 
			
		||||
correlation_coefficient = numerateur / denominateur;
 | 
			
		||||
 | 
			
		||||
// Affichage du coefficient de corrélation
 | 
			
		||||
disp('Le coefficient de corrélation est :');
 | 
			
		||||
disp(correlation_coefficient);
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
**Résultat :**
 | 
			
		||||
@@ -82,98 +111,7 @@ title("Salaire moyen par niveau d''études");
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
## Question 3 : Statistiques descriptives des salaires {#q3}
 | 
			
		||||
 | 
			
		||||
> Donnez les quartiles, interquartiles, minimum, maximum, moyenne, médiane, et écart-type des salaires. Tracez une boîte à moustaches.
 | 
			
		||||
 | 
			
		||||
**[Script Scilab](scripts/q3.sce) :**
 | 
			
		||||
 | 
			
		||||
```scilab
 | 
			
		||||
Q = quart(salaires)
 | 
			
		||||
IQR = Q(3) - Q(1);
 | 
			
		||||
min_salaire = min(salaires)
 | 
			
		||||
max_salaire = max(salaires)
 | 
			
		||||
mean(salaires)
 | 
			
		||||
median(salaires)
 | 
			
		||||
stdev(salaires)
 | 
			
		||||
boxplot(salaires)
 | 
			
		||||
```
 | 
			
		||||
**Résultat :**
 | 
			
		||||
 | 
			
		||||
- Quartiles : [Q1, Q2 (médiane), Q3] = [70000, 115000, 160000]
 | 
			
		||||
- Interquartile Range (IQR) : Q(3) - Q(1) = 90000
 | 
			
		||||
- Minimum : 350
 | 
			
		||||
- Maximum : 250000
 | 
			
		||||
- Moyenne : 115326.96
 | 
			
		||||
- Médiane : 115000
 | 
			
		||||
- Écart-type : 52786.184
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
## Question 4 : Répartition des salaires par genre {#q4}
 | 
			
		||||
 | 
			
		||||
> Refaire la question précédente, en distinguant les genres. Tracez une boîte à moustache pour chaque genre. Commentaires ?
 | 
			
		||||
 | 
			
		||||
**[Script Scilab](scripts/q4.sce) :**
 | 
			
		||||
 | 
			
		||||
```scilab
 | 
			
		||||
QH = quart(salaire_homme)  
 | 
			
		||||
QF = quart(salaire_femme)
 | 
			
		||||
IQH = QH(3) - QH(1)   
 | 
			
		||||
IQF = QF(3) - QF(1)
 | 
			
		||||
 min(salaire_homme)  
 | 
			
		||||
min(salaire_femme)   
 | 
			
		||||
max(salaire_homme)   
 | 
			
		||||
max(salaire_femme)   
 | 
			
		||||
mean(salaire_homme) 
 | 
			
		||||
mean(salaire_femme)  
 | 
			
		||||
median(salaire_homme) 
 | 
			
		||||
median(salaire_femme)  
 | 
			
		||||
stdev(salaire_homme) 
 | 
			
		||||
stdev(salaire_femme) 
 | 
			
		||||
 | 
			
		||||
// boite à moustache hommes : 
 | 
			
		||||
boxplot(salaire_homme);
 | 
			
		||||
title("Boîte à moustaches des salaires des hommes");
 | 
			
		||||
ylabel("Salaires");
 | 
			
		||||
 | 
			
		||||
// boite à moustache femmes : 
 | 
			
		||||
boxplot(salaire_femme);
 | 
			
		||||
title("Boîte à moustaches des salaires des femmes");
 | 
			
		||||
ylabel("Salaires");
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
**Résultat :**
 | 
			
		||||
 | 
			
		||||
- Hommes :
 | 
			
		||||
 | 
			
		||||
    - Quartiles : [Q1, Q2 (médiane), Q3] = [75000, 120000, 170000]
 | 
			
		||||
    - Interquartile Range (IQR) : QH(3) - QH(1) = 95000
 | 
			
		||||
    - Minimum : 350
 | 
			
		||||
    - Maximum : 250000
 | 
			
		||||
    - Moyenne : 121389.87
 | 
			
		||||
    - Médiane : 120000
 | 
			
		||||
    - Écart-type : 52092.726
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- Femmes :
 | 
			
		||||
 | 
			
		||||
    - Quartiles : [Q1, Q2 (médiane), Q3] = [60000, 105000, 150000]
 | 
			
		||||
    - Interquartile Range (IQR) : QF(3) - QF(1) = 90000
 | 
			
		||||
    - Minimum : 500
 | 
			
		||||
    - Maximum : 220000
 | 
			
		||||
    - Moyenne : 107889.00
 | 
			
		||||
    - Médiane : 105000
 | 
			
		||||
    - Écart-type : 52723.610
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
[⬅️](../EXO2/ "Exercice précédent (Exercice 2)") | [🏠](../ "Retour au sommaire") | [➡️](../EXO4/ "Exercice suivant (Exercice 4)")
 | 
			
		||||
[⬅️](../EXO3/ "Exercice précédent (Exercice 3)") | [🏠](../ "Retour au sommaire") | [➡️](../EXO5/ "Exercice suivant (Exercice 5)")
 | 
			
		||||
							
								
								
									
										6
									
								
								EXO4/scripts/init.sce
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								EXO4/scripts/init.sce
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
// Charger les données depuis le fichier CSV
 | 
			
		||||
data = csvRead('data.csv');
 | 
			
		||||
 | 
			
		||||
// Extraire les colonnes pertinentes (âge et salaire)
 | 
			
		||||
age = data(:, 2);
 | 
			
		||||
salaire = data(:, 7);
 | 
			
		||||
							
								
								
									
										31
									
								
								EXO4/scripts/q1.sce
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								EXO4/scripts/q1.sce
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
			
		||||
// Vérifier les dimensions
 | 
			
		||||
disp(size(age));
 | 
			
		||||
disp(size(salaire));
 | 
			
		||||
 | 
			
		||||
clf;
 | 
			
		||||
 | 
			
		||||
// Tracer le nuage de points avec les vraies données
 | 
			
		||||
scatter(age, salaire, 10, 'filled');
 | 
			
		||||
xlabel('Age');
 | 
			
		||||
ylabel('Salaire');
 | 
			
		||||
title('Nuage de points : Age vs Salaire');
 | 
			
		||||
 | 
			
		||||
A = [ones(length(age), 1), age];
 | 
			
		||||
coefficients = A \ salaire;
 | 
			
		||||
salaire_pred = A * coefficients;
 | 
			
		||||
 | 
			
		||||
// Tracer la droite de régression
 | 
			
		||||
plot(age, salaire, '+'); // Tracer le nuage de points
 | 
			
		||||
plot(age, salaire_pred, '-r'); // Tracer la droite de régression
 | 
			
		||||
legend(['Données', 'Droite de régression'], 'Location', 'northwest');
 | 
			
		||||
 | 
			
		||||
// Calcul manuel du coefficient de corrélation
 | 
			
		||||
mean_age = mean(age);
 | 
			
		||||
mean_salaire = mean(salaire);
 | 
			
		||||
numerateur = sum((age - mean_age) .* (salaire - mean_salaire));
 | 
			
		||||
denominateur = sqrt(sum((age - mean_age).^2) * sum((salaire - mean_salaire).^2));
 | 
			
		||||
correlation_coefficient = numerateur / denominateur;
 | 
			
		||||
 | 
			
		||||
// Affichage du coefficient de corrélation
 | 
			
		||||
disp('Le coefficient de corrélation est :');
 | 
			
		||||
disp(correlation_coefficient);
 | 
			
		||||
		Reference in New Issue
	
	Block a user