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.
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.
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épartitionq pour quantile, l’inverse de la fonction de
répartitiond pour densité, la fonction de densité de la
distributionr 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.
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.
Générez toutes les probabilités \(P(X = k)\) pour une loi binomiale de paramètres \(n = 50\) et \(p = 1/4\).
# À REMPLIR
Quelle est la probabilité d’obtenir \(P(X=1)\) avec une loi binomiale \(B(8,0.25)\) ?
# À REMPLIR
Quelle est la probabilité d’obtenir plus de 45 et moins de 55 succès avec une loi binomiale \(B(100, 0.5)\) ?
# À REMPLIR
Quelle est la probabilité d’obtenir au plus 2 succès avec une loi binomiale \(B(8, 0.25)\) ?
# À REMPLIR
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.
Quelle est la probabilité d’obtenir plus que 5 pour une loi de Poisson de paramètre \(\lambda = 3.7\)?
# À REMPLIR
Quelle est la probabilité d’obtenir entre 3 et 27 pour une loi de Poisson de paramètre \(\lambda = 1.23\)?
# À REMPLIR
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.
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
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
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 %.
Quelle est la probabilité d’obtenir plus que 1.96 pour une loi normale réduite ?
# À REMPLIR
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
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 %.
Quel est le quantile 1 % pour une loi de Student T à 5 degrés de liberté ?
# À REMPLIR
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)
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.
À partir de la base de données students, construisez un
intervalle de confiance de 92 % sur la moyenne de la variable
Hours_Studied.
# À REMPLIR
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.
À 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
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)
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 à gauchetwo-sided: pour un test bilatéralgreater: pour un test unilatéral à droitePar 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.
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
Interprétez le résultat de la question précédente.
Réponse : ÉCRIVEZ VOTRE RÉPONSE ICI
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 à gauchetwo-sided: pour un test bilatéralgreater: pour un test unilatéral à droitePar 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%.
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
Interprétez le résultat de la question précédente.
Réponse : ÉCRIVEZ VOTRE RÉPONSE ICI
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érerorder: l’ordre dans lequel vous voulez faire votre
différence.alternative:
less: pour un test unilatéral à gauchetwo-sided: pour un test bilatéralgreater: pour un test unilatéral à droitePar 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.
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
Interprétez le résultat de la question précédente.
Réponse : ÉCRIVEZ VOTRE RÉPONSE ICI
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érerorder: l’ordre dans lequel vous voulez faire votre
différence.alternative:
less: pour un test unilatéral à gauchetwo-sided: pour un test bilatéralgreater: pour un test unilatéral à droitePar 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.
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
Interprétez le résultat de la question précédente.
Réponse : ÉCRIVEZ VOTRE RÉPONSE ICI
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.
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
Interprétez le résultat de la question précédente.
Réponse : ÉCRIVEZ VOTRE RÉPONSE ICI