Introduction à R et RStudio
R est un langage de programmation open-source spécialement conçu pour le calcul statistique et la visualisation graphique. Développé par Ross Ihaka et Robert Gentleman, il est aujourd'hui l'un des outils les plus utilisés par les statisticiens, data scientists et économètres.
# Installation de packages essentiels
install.packages("tidyverse") # Collection d'outils data science
install.packages("ggplot2") # Visualisation avancée
install.packages("dplyr") # Manipulation de données
# Chargement des bibliothèques
library(tidyverse)
library(ggplot2)
# Premières opérations
x <- c(10, 20, 30, 40, 50)
mean(x) # Moyenne : 30
sd(x) # Écart-type
summary(x) # Résumé statistique
R est disponible gratuitement sur CRAN (cran.r-project.org). Il est recommandé d'utiliser RStudio comme IDE pour une expérience de développement optimale.
Statistiques descriptives
Les statistiques descriptives permettent de résumer et caractériser un jeu de données avant toute modélisation. R offre des fonctions natives très puissantes pour cette étape.
# Chargement d'un jeu de données
data(mtcars)
# Dimensions et aperçu
dim(mtcars) # 32 observations, 11 variables
head(mtcars, 5) # 5 premières lignes
str(mtcars) # Structure du dataframe
# Statistiques univariées
summary(mtcars$mpg)
quantile(mtcars$mpg, probs = c(0.25, 0.5, 0.75))
# Tableau de fréquences
table(mtcars$cyl)
# Statistiques par groupe (tidyverse)
mtcars |>
group_by(cyl) |>
summarise(
moy_mpg = mean(mpg),
sd_mpg = sd(mpg),
n = n()
)
Visualisations avec ggplot2
ggplot2 implémente la "Grammaire des Graphiques" de Wilkinson, permettant de créer des visualisations complexes de manière déclarative et cohérente.
library(ggplot2)
# Nuage de points avec régression
ggplot(mtcars, aes(x = wt, y = mpg, color = factor(cyl))) +
geom_point(size = 3, alpha = 0.8) +
geom_smooth(method = "lm", se = TRUE) +
labs(
title = "Consommation vs Poids",
x = "Poids (1000 lbs)",
y = "Miles par gallon",
color = "Cylindres"
) +
theme_minimal(base_size = 13)
# Histogramme avec densité
ggplot(mtcars, aes(x = mpg)) +
geom_histogram(aes(y = after_stat(density)),
bins = 12, fill = "#276DC3", alpha = 0.7) +
geom_density(color = "#FFD43B", linewidth = 1.2) +
theme_classic()
Tests d'hypothèses
# Test t de Student (comparaison de deux moyennes)
t.test(mpg ~ am, data = mtcars, var.equal = FALSE)
# Test du Chi-2 d'indépendance
tab <- table(mtcars$cyl, mtcars$am)
chisq.test(tab)
# Test de normalité (Shapiro-Wilk)
shapiro.test(mtcars$mpg)
# ANOVA à un facteur
modele_anova <- aov(mpg ~ factor(cyl), data = mtcars)
summary(modele_anova)
TukeyHSD(modele_anova) # Tests post-hoc
Régression linéaire (MCO)
# Modèle de régression multiple
modele <- lm(mpg ~ wt + hp + am + cyl, data = mtcars)
summary(modele)
# Diagnostics graphiques
par(mfrow = c(2, 2))
plot(modele)
# Test de multicolinéarité (VIF)
library(car)
vif(modele)
# Test de Breusch-Pagan (hétéroscédasticité)
library(lmtest)
bptest(modele)
# Prédictions avec intervalles de confiance
nouveaux_obs <- data.frame(wt=3.0, hp=100, am=1, cyl=4)
predict(modele, nouveaux_obs, interval = "prediction")
Régression logistique
# Modèle logistique binaire
logit <- glm(am ~ mpg + wt + hp,
data = mtcars,
family = binomial(link = "logit"))
summary(logit)
# Odds ratios et IC
exp(cbind(OR = coef(logit), confint(logit)))
# Matrice de confusion
pred_prob <- predict(logit, type = "response")
pred_class <- ifelse(pred_prob > 0.5, 1, 0)
table(Prédit = pred_class, Réel = mtcars$am)
# Courbe ROC
library(pROC)
roc_obj <- roc(mtcars$am, pred_prob)
auc(roc_obj) # AUC
plot(roc_obj, col = "#276DC3", lwd = 2)