Instructions

Le but de ce travail pratique est de vous familiariser avec le langage R pour calculer des probabilités, faire de l’estimation ainsi que des tests d’hypothèses. 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.

Les lois de probabilités

Chaque distribution en R possède quatre fonctions qui lui sont associées. Premièrement, la fonction possède un nom racine, par exemple le nom racine pour la distribution binomiale est binom. Cette racine est précédée par une de ces quatre lettre:

  • p pour probabilité, qui représente la fonction de répartition
  • q pour quantile, l’inverse de la fonction de répartition
  • d pour densité, la fonction de densité de la distribution
  • r pour random, une variable aléatoire suivant la distribution spécifiée.

Pour la loi binomiale par exemple, ces fonctions sont pbinom, qbinom, dbinom et rbinom.

Les lois de probabilités discrètes

La loi binomiale

Le nom racine pour la loi binomiale est binom.

Soit \(X\): le nombre de succès en \(n\) essais et \(X\sim B(n,p)\). Voici la façon de calculer des probabilités pour la loi binomiale à l’aide de R:

Probabilités Commande R
\(P(X=k)\) dbinom(k, n, p)
\(P(i\leq X \leq j)\) sum(dbinom(i:j, n, p))
\(P(X\leq k)\) pbinom(k, n, p)
\(P(X>k)\) 1-pbinom(k, n, p)

Soit \(X\) la variable aléatoire comptant le nombre de 2 que nous obtenons en lançant un dé à quatre reprises. Nous avons que \(X\sim B(4,\frac{1}{6})\). Si nous voulons calculer \(P(X=3)\) et \(P(X=4)\), nous aurons:

dbinom(3:4,4,1/6)
## [1] 0.0154320988 0.0007716049

Nous avons donc une probabilité de 1.5432099% d’obtenir 3 fois la face 2 et 0.0771605% d’obtenir 4 fois la face 2 en lançant un dé à quatres reprises.

Question 1

Générez toutes les probabilités \(P(X = k)\) pour une loi binomiale de paramètres \(n = 50\) et \(p = 1/4\).

# À REMPLIR

Question 2

Quelle est la probabilité d’obtenir \(P(X=1)\) avec une loi binomiale \(B(8,0.25)\) ?

# À REMPLIR

Question 3

Quelle est la probabilité d’obtenir plus de 45 et moins de 55 succès avec une loi binomiale \(B(100, 0.5)\) ?

# À REMPLIR

Question 4

Quelle est la probabilité d’obtenir au plus 2 succès avec une loi binomiale \(B(8, 0.25)\) ?

# À REMPLIR

La loi de Poisson

Le nom racine pour la loi de Poisson est pois.

Soit \(X\): le nombre d’événements dans un intervalle fixé et \(X\sim Po(\lambda)\). Voici la façon de calculer des probabilités pour la loi de Poisson à l’aide de R:

Probabilités Commande R
\(P(X=k)\) dpois(k, lambda)
\(P(i\leq X \leq j)\) sum(dpois(i:j, lambda))
\(P(X\leq k)\) ppois(k, lambda)
\(P(X>k)\) 1-ppois(k, lambda)

Soit \(X\) le nombre d’erreurs dans une page. Si une page contient en moyenne une demie-erreur alors \(X\sim Po(1/2)\). Si nous voulons calculer \(P(X=2)\), nous aurons:

dpois(2, 1/2)
## [1] 0.07581633

Nous avons donc une probabilité de 7.5816332% d’obtenir deux erreurs sur une page.

Question 5

Quelle est la probabilité d’obtenir plus que 5 pour une loi de Poisson de paramètre \(\lambda = 3.7\)?

# À REMPLIR

Question 6

Quelle est la probabilité d’obtenir entre 3 et 27 pour une loi de Poisson de paramètre \(\lambda = 1.23\)?

# À REMPLIR

La loi hypergéométrique

Le nom racine pour la loi hypergéométrique est hyper.

On tire sans remise \(n\) objets d’un ensemble de \(N\) objets dont \(A\) possèdent une caractéristique particulière (et les autres \(B=N-A\) ne la possèdent pas). Soit \(X\) le nombre d’objets de l’échantillon qui possèdent la caractéristique. Nous avons que \(X\sim H(N,A,n)\).

Voici la façon de calculer des probabilités pour la loi hypergéométrique à l’aide de R:

Probabilités Commande R
\(P(X=k)\) dhyper(k, A, B, n)
\(P(i\leq X \leq j)\) sum(dhyper(i:j, A, B, n))
\(P(X\leq k)\) phyper(k, A, B, n)
\(P(X>k)\) 1-phyper(k, A, B, n)

Soit \(X\) le nombre de boules blanches de l’échantillon de taille 4. Si l’urne contient 5 boules blanches et 8 boules noires, nous avons \(X\sim H(13,5,4)\). Si nous voulons calculer \(P(X=2)\), nous aurons:

dhyper(2, 5, 8, 4)
## [1] 0.3916084

Nous avons donc une probabilité de 39.1608392% de piger 2 boules blanches dans un échantillon de taille 4.

Question 9

Calculez la probabilité d’obtenir 7 succès si vous pigez 15 objets avec remise parmi lesquels 123 objets constituent un succès et 321 objets constituent un échec.

# À REMPLIR

Question 10

Calculez la probabilité d’obtenir entre 7 et 25 succès si vous pigez 40 objets avec remise parmi lesquels 255 objets constituent un succès et 333 objets constituent un échec.

# À REMPLIR

Les lois de probabilités continues

La loi normale

Le nom racine pour la loi normale est norm.

Si \(X\) suit une loi normale de moyenne \(\mu\) et de variance \(\sigma^2\), nous avons \(X\sim N(\mu,\sigma^2)\).

Voici la façon de calculer des probabilités pour la loi normale à l’aide de R:

Probabilités Commande R
\(P(i\leq X \leq j)\) pnorm(j, mu, sigma)-pnorm(i, mu, sigma)
\(P(X\leq k)\) pnorm(k, mu, sigma)
\(P(X>k)\) 1-pnorm(k, mu, sigma)

Soit \(X\sim N(3,25)\) une variable aléatoire suivant une loi normale de moyenne 3 et de variance 25. Si nous voulons calculer la probabilité \(P(1.25<X<3.6)\) en R, nous pouvons utiliser la commande suivante:

pnorm(3.6, 3, 5) - pnorm(1.25, 3, 5)
## [1] 0.1845891

La probabilité que notre variable aléatoire se trouve entre 1.25 et 3.6 est donc 18.4589077 %.

Question 10

Quelle est la probabilité d’obtenir plus que 1.96 pour une loi normale réduite ?

# À REMPLIR

Question 11

Quelle est la valeur x telle que \(P(X \leq x) = 0.975\) pour une loi normale d’espérance 100 et d’écart-type 15?

# À REMPLIR

La loi de Student

Le nom racine pour la loi de Student est t.

Si \(X\) suit une loi de Student à \(\nu\) degrés de liberté, nous avons \(X\sim T_{\nu}\).

Voici la façon de calculer des probabilités pour la loi de Student à l’aide de R:

Probabilités Commande R
\(P(i\leq X \leq j)\) pt(j, nu)-pt(i, nu)
\(P(X\leq k)\) pt(k, nu)
\(P(X>k)\) 1-pt(k, nu)

Soit \(X\sim T_5\) une variable aléatoire suivant une loi de Student à 5 degrés de liberté. Si nous voulons calculer la probabilité \(P(X>3)\) en R, nous pouvons utiliser la commande suivante:

1 - pt(3, 5)
## [1] 0.01504962

La probabilité que notre variable aléatoire soit plus grande que 3 est donc 1.5049624 %.

Question 12

Quel est le quantile 1 % pour une loi de Student T à 5 degrés de liberté ?

# À REMPLIR

L’estimation de paramètres

Nous allons utiliser la librairie infer pour faire de l’estimation de paramètres, ainsi que la base de données gss, présente dans la librairie. Vous utiliserz par contre la base de données students pour répondre aux questions.

library(infer)
data(gss)

L’intervalle de confiance sur une moyenne

Pour trouver un intervalle de confiance sur une moyenne, nous utilisons la fonction t_test.

Les quatres arguments nécessaires sont:

  • x: la base de données à utiliser, sous forme de tibble.
  • response: la variable quantitative dont on veut connaître l’intervalle de confiance pour la moyenne.
  • alternative: pour un intervalle de confiance, on utilise toujours la valeur two-sided.
  • conf_level: un niveau de confiance entre 0 et 1.

Par exemple, si on veut trouver un intervalle de confiance à 95% pour la moyenne de la variable age, nous utilisons:

t_test( x = gss, 
        response = age, 
        alternative = "two-sided", 
        conf_level = 0.95)
## # A tibble: 1 × 7
##   statistic  t_df   p_value alternative estimate lower_ci upper_ci
##       <dbl> <dbl>     <dbl> <chr>          <dbl>    <dbl>    <dbl>
## 1      67.6   499 2.42e-253 two.sided       40.3     39.1     41.4

La borne inférieure de l’intervalle de confiance est donnée par la variable lower_ci et la borne supérieure par la variable upper_ci. Dans notre test, nous avons donc un intervalle de confiance entre 39.095674 et 41.436326.

Question 13

À partir de la base de données students, construisez un intervalle de confiance de 92 % sur la moyenne de la variable Hours_Studied.

# À REMPLIR

L’intervalle de confiance sur une proportion

Pour trouver un intervalle de confiance sur une proportion, nous utilisons la fonction prop_test.

Les cinq arguments nécessaires sont:

  • x: la base de données à utiliser, sous forme de tibble.
  • response: la variable quantitative dont on veut connaître l’intervalle de confiance pour la proportion.
  • success: la modalité de la variable que nous considérons comme un succès.
  • alternative: pour un intervalle de confiance, on utilise toujours la valeur two-sided.
  • conf_level: un niveau de confiance entre 0 et 1.

Par exemple, si on veut trouver un intervalle de confiance à 95% pour la proportion de female de la variable age, dans la base de données gss, nous utilisons:

prop_test(  x = gss, 
            response = sex,
            success = "female",
            alternative = "two-sided", 
            conf_level = 0.95)
## # A tibble: 1 × 6
##   statistic chisq_df p_value alternative lower_ci upper_ci
##       <dbl>    <int>   <dbl> <chr>          <dbl>    <dbl>
## 1      1.25        1   0.264 two.sided      0.430    0.519

La borne inférieure de l’intervalle de confiance est donnée par la variable lower_ci et la borne supérieure par la variable upper_ci. Dans notre test, nous avons donc un intervalle de confiance entre 0.4296103 et 0.5187952.

Question 13

À partir de la base de données students, construisez un intervalle de confiance de 99 % sur la proportion de Yes de la variable Extracurricular_Activities.

# À REMPLIR

Les tests d’hypothèses

Nous allons utiliser la librairie infer pour faire des tests d’hypothèses, ainsi que la base de données gss, présente dans la librairie.

library(infer)
data(gss)

Les tests d’hypothèses sur une moyenne

Pour effectuer un test d’hypothèses sur une moyenne, nous utilisons la fonction t_test.

Les quatres arguments nécessaires sont:

  • x: la base de données à utiliser, sous forme de tibble.
  • response: la variable dont on veut tester l’hypothèse.
  • mu: la valeur de la moyenne à l’hypothèse \(H_0\).
  • alternative:
    • less: pour un test unilatéral à gauche
    • two-sided: pour un test bilatéral
    • greater: pour un test unilatéral à droite

Par exemple, si on veut tester si la moyenne de la variable age est plus grande que 39 ans, à un niveau de confiance de 98%, nous utilisons:

t_test( x = gss,
        response = age,
        mu = 39,
        alternative = "greater"
)
## # A tibble: 1 × 7
##   statistic  t_df p_value alternative estimate lower_ci upper_ci
##       <dbl> <dbl>   <dbl> <chr>          <dbl>    <dbl>    <dbl>
## 1      2.13   499  0.0170 greater         40.3     39.3      Inf

La variable p_value nous permet de conserver ou de rejetter \(H_0\). En effet, dans notre cas, la valeur est de 0.0170242 qui est plus petite que le risque d’erreur de 2% (associé au niveau de confiance de 98%). On rejette donc \(H_0\) et on accepte \(H_1\), l’âge moyen est plus grand que 39 ans.

Question 14

Au seuil de signification de 1 %, faites un test d’hypothèse sur une moyenne pour vérifier si la moyenne du pourcentage de classes suivies (Attendance) est plus petite que 80.1, dans la base de données students.

# À REMPLIR

Question 15

Interprétez le résultat de la question précédente.

Réponse : ÉCRIVEZ VOTRE RÉPONSE ICI

Les tests d’hypothèses sur une proportion

Pour effectuer un test d’hypothèses sur une proportion, nous utilisons la fonction prop_test.

Les quatres arguments nécessaires sont:

  • x: la base de données à utiliser, sous forme de tibble.
  • response: la variable dont on veut connaître l’intervalle de confiance pour la proportion.
  • success: la modalité de la variable que nous considérons comme un succès.
  • alternative:
    • less: pour un test unilatéral à gauche
    • two-sided: pour un test bilatéral
    • greater: pour un test unilatéral à droite

Par exemple, si on veut tester si la proportion de female de la variable sex est plus petite que 51%, à un niveau de confiance de 99%, nous utilisons:

prop_test(  x = gss, 
            response = sex, 
            success = "female",
            alternative = "less", 
            p = 0.51)
## # A tibble: 1 × 4
##   statistic chisq_df p_value alternative
##       <dbl>    <int>   <dbl> <chr>      
## 1      2.45        1  0.0587 less

La variable p_value nous permet de conserver ou de rejetter \(H_0\). En effet, dans notre cas, la valeur est de 0.0587257 qui est plus grande que le risque d’erreur de 1% (associé au niveau de confiance de 99%). On conserve donc \(H_0\), la proportion de femmes ne semble pas être plus petite que 51%.

Question 16

Au seuil de signification de 5 %, faites un test d’hypothèse sur une proportion pour vérifier si la proportion de répondants allant à l’école privée (Private) de la variable School_Type est plus grande que 29 %, dans la base de données students.

# À REMPLIR

Question 17

Interprétez le résultat de la question précédente.

Réponse : ÉCRIVEZ VOTRE RÉPONSE ICI

Les tests d’hypothèses sur une différence de moyennes

Pour effectuer un test d’hypothèses sur une différence de moyennes, nous utilisons la fonction t_test.

Les cinq arguments nécessaires sont:

  • x: la base de données à utiliser, sous forme de tibble.
  • response: la variable dont on veut tester l’hypothèse.
  • explanatory: la variable qui formera les deux groupes à considérer
  • order: l’ordre dans lequel vous voulez faire votre différence.
  • alternative:
    • less: pour un test unilatéral à gauche
    • two-sided: pour un test bilatéral
    • greater: pour un test unilatéral à droite

Par exemple, si on veut tester si la moyenne de la variable age est différente pour la variable sex (on fait la différence male-female comme spécifié dans la variable order), à un niveau de confiance de 98%, nous utilisons:

t_test(x = gss,
       response = age,
       explanatory = sex,
       order = c("male", "female"),
       alternative = "two-sided"
      )
## # A tibble: 1 × 7
##   statistic  t_df p_value alternative estimate lower_ci upper_ci
##       <dbl> <dbl>   <dbl> <chr>          <dbl>    <dbl>    <dbl>
## 1     0.628  498.   0.530 two.sided      0.746    -1.59     3.08

La variable p_value nous permet de conserver ou de rejetter \(H_0\). En effet, dans notre cas, la valeur est de 0.530224 qui est plus grande que le risque d’erreur de 2% (associé au niveau de confiance de 98%). On conserve donc \(H_0\), l’âge des hommes et des femmes ne semble donc pas être différent.

Question 18

Au seuil de signification de 1 %, faites un test d’hypothèse sur une différence de moyennes pour vérifier si la moyenne de la variable Exam_Score est plus petite en fonction de la variable Peer_Influence. Utilisez order = c("Negative","Neutral") et la base de données students.

# À REMPLIR

Question 19

Interprétez le résultat de la question précédente.

Réponse : ÉCRIVEZ VOTRE RÉPONSE ICI

Les tests d’hypothèses sur une différence de proportions

Pour effectuer un test d’hypothèses sur une différence de proportions, nous utilisons la fonction prop_test.

Les cinq arguments nécessaires sont:

  • x: la base de données à utiliser, sous forme de tibble.
  • response: la variable dont on veut tester l’hypothèse.
  • explanatory: la variable qui formera les deux groupes à considérer
  • order: l’ordre dans lequel vous voulez faire votre différence.
  • alternative:
    • less: pour un test unilatéral à gauche
    • two-sided: pour un test bilatéral
    • greater: pour un test unilatéral à droite

Par exemple, si on veut tester si la proportion de la variable college est différente pour la variable sex (on fait la différence male-female comme spécifié dans la variable order), à un niveau de confiance de 95%, nous utilisons:

prop_test(x = gss,
          response = college,
          explanatory = sex,
          order = c("male", "female"),
          alternative = "two-sided")
## # A tibble: 1 × 6
##   statistic chisq_df p_value alternative lower_ci upper_ci
##       <dbl>    <dbl>   <dbl> <chr>          <dbl>    <dbl>
## 1 0.0000204        1   0.996 two.sided    -0.0834   0.0918

La variable p_value nous permet de conserver ou de rejetter \(H_0\). En effet, dans notre cas, la valeur est de 0.9963994 qui est plus grande que le risque d’erreur de 5% (associé au niveau de confiance de 95%). On conserve donc \(H_0\), la proportion des répondants ayant ou non un degré d’un collège est la même.

Question 20

Au seuil de signification de 10 %, faites un test d’hypothèse sur une différence de proportions pour vérifier si la proportion de la variable Gender est différente en fonction de la variable Learning_Disabilities. Utilisez order = c("Yes", "No") et la base de données students.

# À REMPLIR

Question 21

Interprétez le résultat de la question précédente.

Réponse : ÉCRIVEZ VOTRE RÉPONSE ICI

Les tests d’indépendance

Pour effectuer un test d’indépendance entre deux variables, nous utilisons la fonction chisq_test.

Les trois arguments nécessaires sont:

  • x: la base de données à utiliser, sous forme de tibble.
  • response: la première variable dont on veut tester l’hypothèse.
  • explanatory: la seconde variable dont on veut tester l’hypothèse.

Par exemple, si on veut tester si les variables college et finrela de la base de données gss sont indépendantes à un niveau de confiance de 99%, on utilise la commande suivante:

chisq_test(
  x = gss,
  response = college,
  explanatory = finrela
)
## # A tibble: 1 × 3
##   statistic chisq_df   p_value
##       <dbl>    <int>     <dbl>
## 1      30.7        5 0.0000108

La variable p_value nous permet de conserver ou de rejetter \(H_0\). En effet, dans notre cas, la valeur est de 1.0820942^{-5} qui est plus petite que le risque d’erreur de 1% (associé au niveau de confiance de 99%). On rejette donc \(H_0\), les variables college et finrela sont dépendantes.

Question 22

Au seuil de signification de 2 %, faites un test d’indépendance pour vérifier si il existe un lien entre la variable School_Type et la variable Teacher_Quality. Utilisez la base de données students.

# À REMPLIR

Question 23

Interprétez le résultat de la question précédente.

Réponse : ÉCRIVEZ VOTRE RÉPONSE ICI