diff --git a/EXO3/README.md b/EXO3/README.md index 15da45b..90bca28 100644 --- a/EXO3/README.md +++ b/EXO3/README.md @@ -146,60 +146,102 @@ boxplot(csvDouble(:,7),"orientation","horizontal") > Refaire la question précédente, en distinguant les genres. Tracez une boîte à moustache pour chaque genre. Commentaires ? -**[Script Scilab](scripts/q4.sce) :** +**[Script Scilab - Autres](scripts/q4-autres.sce) :** ```scilab -MARCO ??? -MARCO ??? -MARCO ??? -MARCO ??? -MARCO ??? -MARCO ??? +id_other = find(csvString(:,3) == "Other" ) +salaire_other = csvDouble(id_other,7) +mean(salaire_other) //moyenne +min(salaire_other) //min +max(salaire_other) //max +median(salaire_other) //médianne +quart(salaire_other) //quartile +iqr(salaire_other) //interquartile +stdev(salaire_other) //ecart-type +sal = tabul(salaire_other); +[occurence_tri,indice_tri] = gsort(sal(:,2)); +liste_sal = sal(:,1); +mode = liste_sal(indice_tri(1)) //mode +boxplot(salaire_female,"orientation","horizontal") +``` +**[Script Scilab - Femmes](scripts/q4-femme.sce) :** -MARCO ??? -MARCO ???MARCO ???MARCO ??? -MARCO ??? -MARCO ??? -MARCO ??? +```scilab +id_female = find(csvString(:,3) == "Female" ) +salaire_female = csvDouble(id_female,7) +mean(salaire_female) //moyenne +min(salaire_female) //min +max(salaire_female) //max +median(salaire_female) //médianne +quart(salaire_female) //quartile +iqr(salaire_female) //interquartile +stdev(salaire_female) //ecart-type +sal = tabul(salaire_female); +[occurence_tri,indice_tri] = gsort(sal(:,2)); +liste_sal = sal(:,1); +mode = liste_sal(indice_tri(1)) //mode +boxplot(salaire_female,"orientation","horizontal") +``` + +**[Script Scilab - Hommes](scripts/q4-homme.sce) :** + +```scilab +id_male = find(csvString(:,3) == "Male" ) +salaire_male = csvDouble(id_male,7) +mean(salaire_male) //moyenne +min(salaire_male) //min +max(salaire_male) //max +median(salaire_male) //médianne +quart(salaire_male) //quartile +iqr(salaire_male) //interquartile +stdev(salaire_male) //ecart-type +sal = tabul(salaire_male); +[occurence_tri,indice_tri] = gsort(sal(:,2)); +liste_sal = sal(:,1); +mode = liste_sal(indice_tri(1)) //mode +boxplot(salaire_male,"orientation","horizontal") ``` **Résultat :** - Hommes : - - Quartiles : [Q1, Q2 (médiane), Q3] = [..., ..., ...] - - Interquartile Range (IQR) : QH(3) - QH(1) = ... - - Minimum : ... - - Maximum : ... - - Moyenne : ... - - Médiane : ... - - Écart-type : ... + - 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 + - Mode : 140000 ![q4-homme](img/q4-homme.png) - Femmes : - - Quartiles : [Q1, Q2 (médiane), Q3] = [..., ..., ...] - - Interquartile Range (IQR) : QF(3) - QF(1) = ... - - Minimum : ... - - Maximum : ... - - Moyenne : ... - - Médiane : ... - - Écart-type : ... + - 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 + - Mode : 120000 ![q4-femme](img/q4-femme.png) -- Femmes : +- Autres : - - Quartiles : [Q1, Q2 (médiane), Q3] = [..., ..., ...] - - Interquartile Range (IQR) : QF(3) - QF(1) = ... - - Minimum : ... - - Maximum : ... - - Moyenne : ... - - Médiane : ... - - Écart-type : ... + - Quartiles : [Q1, Q2 (médiane), Q3] = [69032, 158610, 161393] + - Interquartile Range (IQR) : QF(3) - QF(1) = 92361 + - Minimum : 62852 + - Maximum : 166109 + - Moyenne : 125869.86 + - Médiane : 158610 + - Écart-type : 44242.383 + - Mode : 158966 ![q4-autres](img/q4-autres.png) diff --git a/EXO3/scripts/init.sce b/EXO3/scripts/init.sce index 225d0a6..8ce52ae 100644 --- a/EXO3/scripts/init.sce +++ b/EXO3/scripts/init.sce @@ -1,3 +1,2 @@ -D = csvRead('data.csv'); -DD = csvRead('data.csv',',','.','string'); -genre = DD(:,3); \ No newline at end of file +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 \ No newline at end of file diff --git a/EXO3/scripts/q4-autres.sce b/EXO3/scripts/q4-autres.sce index 5d0e924..894937d 100644 --- a/EXO3/scripts/q4-autres.sce +++ b/EXO3/scripts/q4-autres.sce @@ -1,3 +1,14 @@ id_other = find(csvString(:,3) == "Other" ) salaire_other = csvDouble(id_other,7) +mean(salaire_other) //moyenne +min(salaire_other) //min +max(salaire_other) //max +median(salaire_other) //médianne +quart(salaire_other) //quartile +iqr(salaire_other) //interquartile +stdev(salaire_other) //ecart-type +sal = tabul(salaire_other); +[occurence_tri,indice_tri] = gsort(sal(:,2)); +liste_sal = sal(:,1); +mode = liste_sal(indice_tri(1)) //mode boxplot(salaire_female,"orientation","horizontal") \ No newline at end of file diff --git a/EXO3/scripts/q4-femme.sce b/EXO3/scripts/q4-femme.sce index fd09f76..47af5cb 100644 --- a/EXO3/scripts/q4-femme.sce +++ b/EXO3/scripts/q4-femme.sce @@ -1,3 +1,14 @@ id_female = find(csvString(:,3) == "Female" ) salaire_female = csvDouble(id_female,7) +mean(salaire_female) //moyenne +min(salaire_female) //min +max(salaire_female) //max +median(salaire_female) //médianne +quart(salaire_female) //quartile +iqr(salaire_female) //interquartile +stdev(salaire_female) //ecart-type +sal = tabul(salaire_female); +[occurence_tri,indice_tri] = gsort(sal(:,2)); +liste_sal = sal(:,1); +mode = liste_sal(indice_tri(1)) //mode boxplot(salaire_female,"orientation","horizontal") \ No newline at end of file diff --git a/EXO3/scripts/q4-homme.sce b/EXO3/scripts/q4-homme.sce index 63b340e..2110ec8 100644 --- a/EXO3/scripts/q4-homme.sce +++ b/EXO3/scripts/q4-homme.sce @@ -1,3 +1,14 @@ id_male = find(csvString(:,3) == "Male" ) salaire_male = csvDouble(id_male,7) +mean(salaire_male) //moyenne +min(salaire_male) //min +max(salaire_male) //max +median(salaire_male) //médianne +quart(salaire_male) //quartile +iqr(salaire_male) //interquartile +stdev(salaire_male) //ecart-type +sal = tabul(salaire_male); +[occurence_tri,indice_tri] = gsort(sal(:,2)); +liste_sal = sal(:,1); +mode = liste_sal(indice_tri(1)) //mode boxplot(salaire_male,"orientation","horizontal") \ No newline at end of file diff --git a/EXO4/README.md b/EXO4/README.md index efae962..84963f7 100644 --- a/EXO4/README.md +++ b/EXO4/README.md @@ -1,17 +1,3 @@ -# 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 @@ -28,12 +14,9 @@ Pour cette exercice, veuillez initaliser les variables suivantes : **[Script Scilab](scripts/init.sce) :** ```scilab -// 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); +D = csvRead('data.csv'); +DD = csvRead('data.csv',',','.','string'); +genre = DD(:,3); ``` --- @@ -45,71 +28,42 @@ salaire = data(:, 7); **[Script Scilab](scripts/q1.sce) :** ```scilab -// 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); +X=csvDouble(:,7) +Y=csvDouble(:,2) +plot2d(X,Y,-1) +[a,b] = reglin(X',Y') +y_reg = a*X+b +plot2d(X,y_reg,5) +corrcoef(X,Y) ``` **Résultat :** -![q1](img/q1.png) +- Coefficient de corrélation : 0.7280526 +- ![q1](img/q1.png) --- -## Question 2 : Histogramme des salaires moyens par niveau d'études {#q2} +## Question 2 : Nuage de points et régression linéaire : Expérience vs Salaire {#q2} -> Tracez un histogramme des salaires moyens suivant le niveau d'études. +> Tracez un nuage de points (expérience,salaire), et la droite de regression correspondante. Quel est le coefficient de corrélation ? **[Script Scilab](scripts/q2.sce) :** ```scilab -niveau_etudes = D(:, 4); -salaires = D(:, 7); -unique_niveaux = unique(niveau_etudes); -moy_salaire_par_niveau = zeros(size(unique_niveaux)); - -for i = 1:length(unique_niveaux) - moy_salaire_par_niveau(i) = mean(salaires(niveau_etudes == unique_niveaux(i))); -end - -bar(unique_niveaux, moy_salaire_par_niveau); - -xlabel("Niveau d''études"); -ylabel("Salaire moyen"); -title("Salaire moyen par niveau d''études"); +X=csvDouble(:,7) +Y=csvDouble(:,6) +plot2d(X,Y,-1) +[a,b] = reglin(X',Y') +y_reg = a*X+b +plot2d(X,y_reg,5) +corrcoef(X,Y) ``` **Résultat :** -![q2](img/q2.png) +- Coefficient de corrélation : 0.8089689 +- ![q2](img/q2.png) --- diff --git a/EXO4/img/q1.png b/EXO4/img/q1.png new file mode 100644 index 0000000..4a3a5ce Binary files /dev/null and b/EXO4/img/q1.png differ diff --git a/EXO4/img/q2.png b/EXO4/img/q2.png new file mode 100644 index 0000000..a4ebd37 Binary files /dev/null and b/EXO4/img/q2.png differ diff --git a/EXO4/scripts/init.sce b/EXO4/scripts/init.sce index 9740023..8ce52ae 100644 --- a/EXO4/scripts/init.sce +++ b/EXO4/scripts/init.sce @@ -1,6 +1,2 @@ -// 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); \ No newline at end of file +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 \ No newline at end of file diff --git a/EXO4/scripts/q1.sce b/EXO4/scripts/q1.sce index 9e21276..3d1e163 100644 --- a/EXO4/scripts/q1.sce +++ b/EXO4/scripts/q1.sce @@ -1,31 +1,7 @@ -// 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); \ No newline at end of file +X=csvDouble(:,7) +Y=csvDouble(:,2) +plot2d(X,Y,-1) +[a,b] = reglin(X',Y') +y_reg = a*X+b +plot2d(X,y_reg,5) +corrcoef(X,Y) \ No newline at end of file diff --git a/EXO4/scripts/q2.sce b/EXO4/scripts/q2.sce new file mode 100644 index 0000000..c3eb38f --- /dev/null +++ b/EXO4/scripts/q2.sce @@ -0,0 +1,7 @@ +X=csvDouble(:,7) +Y=csvDouble(:,6) +plot2d(X,Y,-1) +[a,b] = reglin(X',Y') +y_reg = a*X+b +plot2d(X,y_reg,5) +corrcoef(X,Y) \ No newline at end of file diff --git a/EXO5/README.md b/EXO5/README.md index b0b79da..a81e305 100644 --- a/EXO5/README.md +++ b/EXO5/README.md @@ -1,2 +1,57 @@ -# SAE_2.04 +# Exercice 5 : Analyse de la relation entre expérience et salaire par genre et niveau d'études +## Table des matières +1. [Initialisation des variables](#init) +2. [Nuage de points et régression linéaire : Expérience vs Salaire par genre](#q1) +3. [Nuage de points et régression linéaire : Expérience vs Salaire par niveau d'études](#q2) + +--- + +## 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 : Nuage de points et régression linéaire : Expérience vs Salaire par genre {#q1} + +> Tracez un nuage de points (salaire,expérience) pour les hommes et les femmes, ainsi que les droites de regression associées. Commentaire ? + +**[Script Scilab](scripts/q1.sce) :** + +```scilab +... +``` + +**Résultat :** + +- Coefficient de corrélation : 0.7280526 +- ![q1](img/q1.png) + +--- + +## Question 2 : Nuage de points et régression linéaire : Expérience vs Salaire par niveau d'études {#q2} + +> Tracez un nuage de points (salaire,expérince) et les droites de regression associées pour chaque niveau d'études. Commentaire ? + +**[Script Scilab](scripts/q2.sce) :** + +```scilab +... +``` + +**Résultat :** + +- ![q2](img/q2.png) + + +--- + +[⬅️](../EXO4/ "Exercice précédent (Exercice 4)") | [🏠](../ "Retour au sommaire") \ No newline at end of file diff --git a/EXO5/scripts/init.sce b/EXO5/scripts/init.sce new file mode 100644 index 0000000..8ce52ae --- /dev/null +++ b/EXO5/scripts/init.sce @@ -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 \ No newline at end of file diff --git a/EXO5/scripts/q1.sce b/EXO5/scripts/q1.sce new file mode 100644 index 0000000..e69de29 diff --git a/EXO5/scripts/q2.sce b/EXO5/scripts/q2.sce new file mode 100644 index 0000000..e69de29