# 🧪 TD n°1 – Pratique des tests statistiques avec R (R1)
---
## 🎯 Objectifs du TD
Ce premier TD a pour objectif de :
- se familiariser avec **R et RStudio** dans un contexte pratique ;
- comprendre la notion **d’objet** et le rôle central des **fonctions** en R ;
- manipuler les **types de base** (numérique, caractère, logique) ;
- créer et exploiter des **vecteurs**, **matrices** et **data frames** ;
- calculer des **statistiques descriptives simples** (moyenne, écart-type) ;
- apprendre à **sélectionner et explorer** des données.
⚠️ **Important** : les TD sont liés entre eux. Le script créé lors de ce TD devra être **sauvegardé** et réutilisé lors des TD suivants.
---
## 📌 Rappels essentiels
### 🔹 Dialoguer avec R : objets et fonctions
R fonctionne selon une logique simple :
> **des objets** → passés à **des fonctions** → produisent **des résultats**
Exemples :
```r
x <- 10
sqrt(x) # applique la fonction racine carrée à l'objet x
sum(1, 2, 3) # somme de plusieurs objets numériques
```
---
### 🔹 Objets et affectation
Un **objet** est une entité qui stocke une information (nombre, texte, vecteur, tableau…).
```r
x <- "Hello World"
x
```
- `<-` est l’opérateur d’affectation standard en R.
- Le nom de l’objet est **libre**, mais **sensible à la casse** :
```r
bonjour <- "Hello"
Bonjour <- "Hi"
```
👉 `bonjour` et `Bonjour` sont deux objets différents.
⚠️ Réaffecter un objet **écrase** sa valeur précédente.
---
### 🔹 Types d’objets
Types simples les plus courants :
|Type R|Exemple|Interprétation|
|---|---|---|
|`numeric`|`12`, `3.5`|variable quantitative|
|`logical`|`TRUE`, `FALSE`|booléen|
|`character`|`"Bonjour"`|texte|
|`factor`|catégories|variable qualitative|
Fonctions utiles :
```r
class(x)
str(x)
```
---
### 🔹 La fonction `c()` et les vecteurs
Un **vecteur** est un tableau Ă une dimension contenant des valeurs **du mĂŞme type**.
```r
v <- c(2, 6, 7, 9, 8)
v
```
Sélection dans un vecteur :
```r
v[1] # premier élément
v[-2] # tous sauf le deuxième
v[c(2,5)] # éléments 2 et 5
```
---
## 🧪 Exercice 1 – Manipulation d’objets et fonctions
1. Créer un objet `x` prenant la valeur **10**.
2. Créer un second objet `y` prenant la valeur **2 × x**.
3. Créer un troisième objet `z` correspondant à la **somme de x et y** (via une fonction).
4. Donner la **classe** de l’objet `z`.
5. Créer un vecteur `v` contenant **vos tailles (en cm)**.
6. Calculer la **moyenne** et l’**écart-type** de ce vecteur.
---
## ✅ Corrigé – Exercice 1
```r
x <- 10
y <- 2 * x
z <- sum(x, y)
class(z) # "numeric"
v <- c(170, 175, 168) # exemple
mean(v)
sd(v)
```
---
## 🧪 Exercice 2 – Calculs statistiques sur un vecteur
On considère le vecteur suivant :
```r
NOTE1 <- c(17, 8, 9, 18, 15, 14.5, 13, 12, 17.5, 10)
```
1. Calculer la **moyenne** et l’**écart-type** de `NOTE1` **sans utiliser** les fonctions `mean()` et `sd()`.
2. Refaire les calculs **avec** `mean()` et `sd()`.
3. Vérifier que les deux méthodes donnent le **même résultat**.
---
### 🔢 Rappels mathématiques
- Moyenne :
$ \bar{x} = \frac{1}{n} \sum_{i=1}^n x_i$
- Écart-type (échantillon) :
$ s = \sqrt{ \frac{1}{n-1} \sum_{i=1}^n (x_i - \bar{x})^2 } $
---
## ✅ Corrigé – Exercice 2
```r
MOYENNE_NOTE1 <- sum(NOTE1) / length(NOTE1)
SD_NOTE1 <- sqrt(sum((NOTE1 - MOYENNE_NOTE1)^2) / (length(NOTE1) - 1))
MOYENNE_FCTN <- mean(NOTE1)
SD_FCTN <- sd(NOTE1)
MOYENNE_NOTE1 == MOYENNE_FCTN
SD_NOTE1 == SD_FCTN
```
👉 Les deux méthodes donnent bien les **mêmes résultats**.
---
## 🧪 Exercice 3 – Vecteurs, matrices et tableaux
1. Créer un vecteur `NOTE2` :
```r
15, 2, 15, 20, 12, 13.5, 11, 12.75, 17, 9
```
2. Calculer la moyenne et l’écart-type de `NOTE2`.
3. Créer une **matrice** `NOTE_ETUDE` contenant `NOTE1` et `NOTE2`.
4. Nommer les colonnes.
5. Vérifier la **classe** et la **structure** de l’objet.
---
## ✅ Corrigé – Exercice 3
```r
NOTE2 <- c(15, 2, 15, 20, 12, 13.5, 11, 12.75, 17, 9)
mean(NOTE2)
sd(NOTE2)
NOTE_ETUDE <- matrix(c(NOTE1, NOTE2), ncol = 2)
colnames(NOTE_ETUDE) <- c("NOTE1", "NOTE2")
class(NOTE_ETUDE)
str(NOTE_ETUDE)
```
---
## 📊 Statistiques rapides
### 🔹 Fonction `apply()`
```r
apply(NOTE_ETUDE, margin = 1, mean) # par ligne
apply(NOTE_ETUDE, margin = 2, sd) # par colonne
```
- `margin = 1` → lignes
- `margin = 2` → colonnes
---
### 🔹 Fonction `summary()`
```r
summary(NOTE1)
summary(NOTE_ETUDE)
```
⚠️ `summary()` **ne fournit pas l’écart-type**.
---
## 🔑 Points clés à retenir
- Tout en R est **objet**.
- Les **fonctions** attendent des objets du **bon type**.
- Les vecteurs sont Ă la base de toutes les structures.
- `mean()` et `sd()` automatisent des calculs statistiques classiques.
- Les matrices permettent de regrouper plusieurs vecteurs numériques.
- `apply()` et `summary()` offrent une exploration rapide des données.
---
## 📜 Historique
- Dernière mise à jour : `30 janvier 2026`
- Rédigé par : [[Jizhen CAI]]