Instructions

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.

Les données

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.

Tableaux de fréquences à une variable

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és
  • valid = FALSE; permet de ne pas afficher les données manquantes
  • total = TRUE; permet d’afficher le total

Les variables qualitatives

Pour 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

Question 1

Construisez le tableau de distribution de la variable Internet_Access.

# À REMPLIR

Les variables quantitatives discrètes

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

Question 2

Construisez le tableau de distribution de la variable Tutoring_Sessions.

# À REMPLIR

Question 3

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

Les variables quantitatives continues

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

Question 4

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

Question 5

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

Tableaux de fréquences à deux variables

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

Question 6

Construisez le tableau croisé des variables Motivation_Level et Gender.

# À REMPLIR

Question 7

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

Question 8

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

Les graphiques

Pour toutes les questions concernant les graphiques, vous devez écrire le titre ainsi que les titres des axes.

Les diagrammes à bandes verticales

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"
  )

Question 9

Construisez le diagramme à bandes verticales de la variable Internet_Access.

# À REMPLIR

Question 10

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

Les histogrammes

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"
  )

Question 11

Construisez l’histogramme de la variable Exam_Score avec une amplitude de classes de 2.

# À REMPLIR

Les polygones de fréquences

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"
  )

Question 12

Construisez le polygone de fréquences de la variable Previous_Scores avec une amplitude de classes de 2.

# À REMPLIR

Les mesures de tendance centrale

La médiane

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

Question 13

Calculez la médiane de la variable Exam_Score.

# À REMPLIR

La moyenne

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

Question 14

Calculez la moyenne de la variable Exam_Score.

# À REMPLIR

Les mesures de dispersion

La variance

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

Question 15

Calculez la variance de la variable Exam_Score.

# À REMPLIR

L’écart type

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

Question 16

Calculez l’écart type de la variable Exam_Score.

# À REMPLIR

Les mesures de positions

Les quantiles

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

Question 17

Calculez le quantile C78 de la variable Exam_Score.

# À REMPLIR

La régression linéaire

Le nuage de points

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"
  )

Question 18

Construisez le nuage de points reliant les variables Hours_Studied et Exam_Score.

# À REMPLIR

Le coefficient de corrélation linéaire

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

Question 19

Calculez le coefficient de corrélation linéaire entre les variables Hours_Studied et Exam_Score.

# À REMPLIR

La droite de régression

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

Question 20

Calculez les paramètres de la droite de régression entre les variables Hours_Studied et Exam_Score.

# À REMPLIR

Le nuage de points et la droite de régression

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"
  )

Question 21

Construisez le nuage de points et la droite de régression reliant les variables Hours_Studied et Exam_Score.

# À REMPLIR

Les sous-groupes

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

Question 22

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

Question 23

À 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