AJout de l'exo 1
This commit is contained in:
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