Le but de ce travail pratique est de vous familiariser avec le langage R pour construire des tableaux et des graphiques ainsi que pour calculer des mesures. Il vous faudra trouver à travers ce document explicatif les commandes appropriées et les utiliser pour répondre aux questions qui se trouvent tout au long de ce fichier.
Voici l’information donnée à propos de la base de données que nous utiliserons:
This dataset provides a comprehensive overview of various factors affecting student performance in exams. It includes information on study habits, attendance, parental involvement, and other aspects influencing academic success.
| Attribute | Description |
|---|---|
| Hours_Studied | Number of hours spent studying per week. |
| Attendance | Percentage of classes attended. |
| Parental_Involvement | Level of parental involvement in the student’s education (Low, Medium, High). |
| Access_to_Resources | Availability of educational resources (Low, Medium, High). |
| Extracurricular_Activities | Participation in extracurricular activities (Yes, No). |
| Sleep_Hours | Average number of hours of sleep per night. |
| Previous_Scores | Scores from previous exams. |
| Motivation_Level | Student’s level of motivation (Low, Medium, High). |
| Internet_Access | Availability of internet access (Yes, No). |
| Tutoring_Sessions | Number of tutoring sessions attended per month. |
| Family_Income | Family income level (Low, Medium, High). |
| Teacher_Quality | Quality of the teachers (Low, Medium, High). |
| School_Type | Type of school attended (Public, Private). |
| Peer_Influence | Influence of peers on academic performance (Positive, Neutral, Negative). |
| Physical_Activity | Average number of hours of physical activity per week. |
| Learning_Disabilities | Presence of learning disabilities (Yes, No). |
| Parental_Education_Level | Highest education level of parents (High School, College, Postgraduate). |
| Distance_from_Home | Distance from home to school (Near, Moderate, Far). |
| Gender | Gender of the student (Male, Female). |
| Exam_Score | Final exam score. |
La base de données se trouve dans la variable nommée
students. Si on affiche cette base de données, nous
obtenons:
students
## # A tibble: 6,607 × 20
## Hours_Studied Attendance Parental_Involvement Access_to_Resources
## <dbl> <dbl> <chr> <chr>
## 1 23 84 Low High
## 2 19 64 Low Medium
## 3 24 98 Medium Medium
## 4 29 89 Low Medium
## 5 19 92 Medium Medium
## 6 19 88 Medium Medium
## 7 29 84 Medium Low
## 8 25 78 Low High
## 9 17 94 Medium High
## 10 23 98 Medium Medium
## # ℹ 6,597 more rows
## # ℹ 16 more variables: Extracurricular_Activities <chr>, Sleep_Hours <dbl>,
## # Previous_Scores <dbl>, Motivation_Level <chr>, Internet_Access <chr>,
## # Tutoring_Sessions <dbl>, Family_Income <chr>, Teacher_Quality <chr>,
## # School_Type <chr>, Peer_Influence <chr>, Physical_Activity <dbl>,
## # Learning_Disabilities <chr>, Parental_Education_Level <chr>,
## # Distance_from_Home <chr>, Gender <chr>, Exam_Score <dbl>
Pour visualiser la base de données complète dans
RStudio, vous devez utiliser la commande
View.
View(students)
Pour accéder à une variable particulière (une colonne), vous utilisez
l’opérateur $. Par exemple, si vous voulez accéder à la
variable Sleep_Hours, vous faites
students$Sleep_Hours.
Remarque : La base de données contenant 6607 données, je n’ai pas voulu encombrer l’écran et je n’ai pas compilé cette commande.
Lorsque les données se trouvent dans une tibble dans
R, il est possible d’utiliser la commande freq
de la librairie questionr pour afficher le tableau de
fréquences. La commande freq prend comme argument la
variable dont vous voulez produire le tableau de fréquences. Pour
obtenir une sortie adéquate, il faut ajouter trois options à la
commande:
cum = TRUE (FALSE); permet d’afficher (ou de ne pas
afficher) les pourcentages cumulésvalid = FALSE; permet de ne pas afficher les données
manquantestotal = TRUE; permet d’afficher le totalPour créer un tableau de distribution de la variable
Gender, voici la commande.
freq(students$Gender,
cum = FALSE,
total = TRUE,
valid = FALSE)
## n %
## Female 2793 42.3
## Male 3814 57.7
## Total 6607 100.0
Construisez le tableau de distribution de la variable
Internet_Access.
# À REMPLIR
Pour créer un tableau de distribution de la variable
Sleep_Hours, voici la commande.
freq(students$Sleep_Hours,
cum = TRUE,
total = TRUE,
valid = FALSE)
## n % %cum
## 4 309 4.7 4.7
## 5 695 10.5 15.2
## 6 1376 20.8 36.0
## 7 1741 26.4 62.4
## 8 1399 21.2 83.5
## 9 775 11.7 95.3
## 10 312 4.7 100.0
## Total 6607 100.0 100.0
Construisez le tableau de distribution de la variable
Tutoring_Sessions.
# À REMPLIR
Selon les données de la question précédente, quel est le pourcentage de répondants qui ont participé à 4 sessions de tutorat?
Réponse : ÉCRIVEZ VOTRE RÉPONSE ICI
Pour être en mesure de briser une variable en classes, il faut
utiliser la commande cut.
Les options de cut sont:
include.lowest = TRUE qui permet d’avoir un intervalle
fermé à gauche et ouvert à droite;breaks qui permet d’indiquer à quel endroit on doit
créer les classes;seq(from = A, to = B, by = C) permet de créer un
vecteur comportant les valeurs de A jusqu’à B
en faisant des bonds de C.Pour créer un tableau de distribution de la variable
Attendance, voici la commande.
freq(cut(students$Attendance,
right=FALSE,
breaks=seq(from = 60, to = 105, by = 5)),
cum = TRUE,
total = TRUE,
valid = FALSE)
## n % %cum
## [60,65) 740 11.2 11.2
## [65,70) 833 12.6 23.8
## [70,75) 823 12.5 36.3
## [75,80) 858 13.0 49.3
## [80,85) 842 12.7 62.0
## [85,90) 765 11.6 73.6
## [90,95) 832 12.6 86.2
## [95,100) 833 12.6 98.8
## [100,105) 81 1.2 100.0
## Total 6607 100.0 100.0
Construisez le tableau de distribution de la variable
Hours_Studied. Choisissez les classes appropriées en
utilisant les informations suivantes pour créer vos classes:
summary(students$Hours_Studied)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.00 16.00 20.00 19.98 24.00 44.00
# À REMPLIR
Selon les données de la question précédente, quel est le pourcentage de répondants qui ont étudié 30 heures ou moins?
Réponse : ÉCRIVEZ VOTRE RÉPONSE ICI
Quand on veut croiser deux variables qualitatives, on fait un
tableau croisé. Comme pour un tri à plat ceci s’obtient avec la
fonction table de R, mais à laquelle on passe cette fois
deux variables en argument. Par exemple, si on veut croiser les
variables Parental_Involvement et School_Type,
nous faisons:
table(students$Parental_Involvement, students$School_Type)
##
## Private Public
## High 589 1319
## Low 380 957
## Medium 1040 2322
Construisez le tableau croisé des variables
Motivation_Level et Gender.
# À REMPLIR
Selon les données de la question précédente, quel est le pourcentage de répondants qui sont des femmes et dont la motivation est faible?
Réponse : ÉCRIVEZ VOTRE RÉPONSE ICI
Selon les données de la question précédente, parmi les répondants ayant un haut niveau de motivation, quel pourcentage sont des hommes?
Réponse : ÉCRIVEZ VOTRE RÉPONSE ICI
Pour toutes les questions concernant les graphiques, vous devez écrire le titre ainsi que les titres des axes.
Pour construire un diagramme à bandes verticales, nous utilisons la
commande geom_bar. La commande labs permet
d’ajouter le titre ainsi que les titres des axes \(x\) et \(y\).
ggplot(data = students) +
geom_bar(aes(x = Access_to_Resources)) +
labs(
title = "Répartition de 6607 répondants selon leur niveau d'accès aux ressources",
x = "Niveau d'accès aux ressources",
y = "Nombre de répondants"
)
Construisez le diagramme à bandes verticales de la variable
Internet_Access.
# À REMPLIR
Construisez le diagramme à bandes horizontales de la variable
Tutoring_Sessions. Pour ce faire, utilisez
y comme variable dans la commande geom_bar
plutôt que x.
# À REMPLIR
Pour construire un histogramme, nous utilisons la commande
geom_histogram. L’option binwidth permet de
choisir l’amplitude des classes de l’histogramme. La commande
labs permet d’ajouter le titre ainsi que les titres des
axes \(x\) et \(y\).
ggplot(data = students) +
geom_histogram(aes(x = Hours_Studied), binwidth = 1) +
labs(
title = "Répartition de 6607 répondants selon le nombre d'heures d'étude",
x = "Nombre d'heures d'étude",
y = "Nombre de répondants"
)
Construisez l’histogramme de la variable Exam_Score avec
une amplitude de classes de 2.
# À REMPLIR
Pour construire un polygone de fréquences, nous utilisons la commande
geom_freqpoly. L’option binwidth permet de
choisir l’amplitude des classes du polygone de fréquences. La commande
labs permet d’ajouter le titre ainsi que les titres des
axes \(x\) et \(y\).
ggplot(data = students) +
geom_freqpoly(aes(x = Hours_Studied), binwidth = 1) +
labs(
title = "Répartition de 6607 répondants selon le nombre d'heures d'étude",
x = "Nombre d'heures d'étude",
y = "Nombre de répondants"
)
Construisez le polygone de fréquences de la variable
Previous_Scores avec une amplitude de classes de 2.
# À REMPLIR
La fonction median permet de calculer la médiane en
langage R.
Par exemple, pour calculer la médiane de la variable
Hours_Studied de la base de données students,
nous avons:
median(students$Hours_Studied)
## [1] 20
Calculez la médiane de la variable Exam_Score.
# À REMPLIR
La fonction mean permet de calculer la moyenne en
langage R.
Par exemple, pour calculer la moyenne de la variable
Hours_Studied de la base de données students,
nous avons:
mean(students$Hours_Studied)
## [1] 19.97533
Calculez la moyenne de la variable Exam_Score.
# À REMPLIR
La fonction var permet de calculer la variance d’une
variable en langage R.
Par exemple, pour calculer la variance de la variable
Hours_Studied de la base de données students,
nous avons:
var(students$Hours_Studied)
## [1] 35.88722
Calculez la variance de la variable Exam_Score.
# À REMPLIR
La fonction sd permet de calculer l’écart type d’une
variable en langage R.
Par exemple, pour calculer l’écart type de la variable
Hours_Studied de la base de données students,
nous avons:
sd(students$Hours_Studied)
## [1] 5.990594
Calculez l’écart type de la variable Exam_Score.
# À REMPLIR
La fonction quantile permet de calculer n’importe quel
quantile d’une variable en langage R. Il suffit d’indiquer
la variable étudiée ainsi que le pourcentage du quantile voulu.
Par exemple, si nous voulons calculer D1 pour la variable
Hours_Studied, nous allons utiliser la fonction
quantile avec une probabilité de 0.1.
quantile(students$Hours_Studied, 0.1)
## 10%
## 12
Calculez le quantile C78 de la variable
Exam_Score.
# À REMPLIR
Pour créer le nuage de points entre deux variables quantitatives, on
utilise la commande geom_point. Par exemple, pour
visualiser le lien entre les variables Attendance et
Exam_Score, nous faisons:
ggplot(data = students) +
geom_point(aes(x = Attendance, y = Exam_Score)) +
labs(
title = "Répartition de 6607 répondants selon le nombre de participations aux cours et le score à l'examen",
x = "Nombre de participations aux cours",
y = "Score à l'examen"
)
Construisez le nuage de points reliant les variables
Hours_Studied et Exam_Score.
# À REMPLIR
Pour calculer le coefficient de corrélation linéaire entre deux
variables, on utilise la commande cor. Par exemple, pour
calculer le coefficient de corrélation linéaire entre les variables
Attendance et Exam_Score, nous utilisons la
commande suivante.
cor(students$Attendance, students$Exam_Score)
## [1] 0.5810719
Calculez le coefficient de corrélation linéaire entre les variables
Hours_Studied et Exam_Score.
# À REMPLIR
Pour calculer les paramètres de la droite de régression entre deux
variables, on utilise la commande lm. Par exemple, pour
calculer les paramètres de la droite de régression entre les variables
Attendance et Exam_Score, nous utilisons la
commande suivante.
lm(Attendance ~ Exam_Score, data = students)
##
## Call:
## lm(formula = Attendance ~ Exam_Score, data = students)
##
## Coefficients:
## (Intercept) Exam_Score
## -35.985 1.725
Calculez les paramètres de la droite de régression entre les
variables Hours_Studied et Exam_Score.
# À REMPLIR
Pour créer le nuage de points entre deux variables quantitatives et
ajouter la droite de régression, on utilise la commande
geom_smooth. Par exemple, pour visualiser le lien entre les
variables Attendance et Exam_Score, nous
faisons:
ggplot(data = students) +
geom_point(aes(x = Attendance, y = Exam_Score)) +
geom_smooth(aes(x = Attendance, y = Exam_Score),
method = "lm",
formula = y ~ x) +
labs(
title = "Répartition de 6607 répondants selon le nombre de participations aux cours et le score à l'examen",
x = "Nombre de participations aux cours",
y = "Score à l'examen"
)
Construisez le nuage de points et la droite de régression reliant les
variables Hours_Studied et Exam_Score.
# À REMPLIR
Il est souvent intéressant de créer des sous-groupes dans nos données
pour être en mesure de comprendre si certaines variables sont
dépendantes ou indépendantes. Pour créer ces groupes, nous utilisons la
commande group_by.
On utilise ensuite la commande summarise qui nous permet
de calculer les mesures voulues en fonction des sous-groupes créés.
Par exemple, si nous voulons créer des sous-groupes en fonction de la
variable School_Type et ensuite trouver la moyenne et
l’écart type de la variable Hours_Studied de ces groupes,
nous utilisons la commande suivante.
students %>%
group_by(School_Type) %>%
summarise(
Moyenne = mean(Hours_Studied),
Écart_Type = sd(Hours_Studied))
## # A tibble: 2 × 3
## School_Type Moyenne Écart_Type
## <chr> <dbl> <dbl>
## 1 Private 20.0 6.08
## 2 Public 20.0 5.95
Construisez les sous-groupes de la variable
Tutoring_Sessions et trouvez ensuite la moyenne, la médiane
et le premier quartile pour la variable Exam_Score
# À REMPLIR
À l’aide de la question précédente, quel est le premier quartile de
la variable Exam_Score pour un répondant ayant assisté à 2
session de tutorat?
Réponse : ÉCRIVEZ VOTRE RÉPONSE ICI