L'idée : la droite des moindres carrés
La régression linéaire ajuste une droite à travers un nuage de points : y = ordonnée à l'origine + pente × x. Parmi toutes les droites possibles, lm() choisit celle qui minimise la somme des résidus au carré - un résidu étant l'écart vertical entre un point et la droite. L'élévation au carré fait compter les gros écarts de façon disproportionnée, c'est pourquoi une seule valeur aberrante extrême peut faire pencher tout l'ajustement.
Là où la corrélation te donne un nombre sans unité pour « à quel point ces variables évoluent ensemble », la régression te donne une équation - avec des unités, une pente interprétable, et la mécanique pour prédire.
Lis la formule comme « modélise mpg en fonction de wt ». Les deux coefficients sont la droite ajustée : mpg ≈ 37,3 − 5,3 × poids. La pente a de vraies unités - chaque tranche supplémentaire de 1000 livres de voiture (wt est en unités de 1000 livres) coûte environ 5,3 miles par gallon. L'ordonnée à l'origine (37,3 mpg à poids nul) n'est que l'endroit où la droite croise zéro ; aucune voiture ne pèse rien, alors n'en tire pas trop de conclusions.
La lecture guidée de summary()
summary(fit) est la sortie que tout cours de statistique te demande d'interpréter. Lance-la, puis prends-la bloc par bloc :
Call - rappelle le modèle que tu as ajusté. Trivial maintenant, salvateur quand tu jongles avec six objets modèles.
Residuals - le résumé à cinq nombres des restes (réel − prédit). Tu veux une médiane proche de 0 et une symétrie approximative entre Min/Max et 1Q/3Q ; une forte asymétrie laisse penser que le modèle en ligne droite rate quelque chose.
Coefficients - le cœur de la sortie, une ligne par terme :
- Estimate - la valeur ajustée. Pour
wt, −5,34 : chaque tranche supplémentaire de 1000 livres est associée à environ 5,3 mpg de moins. Traduis toujours la pente en une phrase avec des unités ; cette phrase est tout le contenu pratique du modèle. - Std. Error - de combien l'estimation fluctuerait d'un échantillon à l'autre. Des estimations situées à deux erreurs types de zéro sont fragiles.
- t value - Estimate ÷ Std. Error : à combien d'erreurs types de zéro se situe le coefficient (−9,56 ici).
- Pr(>|t|) - la p-valeur pour « ce coefficient pourrait-il vraiment être nul ? ». Pour
wtelle vaut environ 1,3e-10 : si le poids n'avait réellement aucune relation linéaire avec le mpg, une pente aussi raide n'apparaîtrait pour ainsi dire jamais dans un échantillon de 32. Une petite p-valeur = une preuve que l'association existe - pas la preuve que le modèle est correct, ni une mesure d'importance (un effet minuscule mais estimé précisément obtient aussi une p-valeur minuscule). - Signif. codes / étoiles - un raccourci visuel pour la colonne des p-valeurs. Pratique ; n'ajoute aucune information.
Residual standard error: 3.05 on 30 degrees of freedom - la taille typique d'une erreur de prédiction, dans les unités propres de la réponse : les prédictions se trompent typiquement d'environ 3 mpg. Juge-la à l'échelle de mpg (qui va d'environ 10 à 34).
Multiple R-squared: 0.75 - le poids explique environ 75 % de la variance du mpg. L'Adjusted R-squared (0,74) recalcule ça avec une pénalité par prédicteur, parce que la version brute ne peut qu'augmenter quand tu ajoutes des variables - même du bruit aléatoire. Quand tu compares des modèles avec des nombres de prédicteurs différents, l'ajusté est l'honnête. Et résiste au réflexe « bon modèle = R² élevé » : un effet réellement utile peut vivre dans un modèle à faible R² (résultat bruité, un facteur parmi beaucoup), tandis qu'un R² élevé peut venir d'un surajustement ou d'une variable qui a fuité.
F-statistic: 91.4 ... p-value: 1.29e-10 - le test du modèle entier : ce modèle bat-il « prédire simplement la moyenne pour tout le monde » ? Avec un seul prédicteur il duplique le test t de la pente (note que 9,56² ≈ 91,4) ; avec plusieurs prédicteurs il devient le test conjoint qu'au moins un coefficient est non nul. Sa mécanique est la même décomposition de variance que l'ANOVA.
Régression multiple : à autres variables constantes
Ajoute des prédicteurs avec + :
L'interprétation change sur un point crucial. Chaque Estimate est maintenant l'effet de ce prédicteur les autres restant constants : le coefficient de wt (environ −3,9, contre −5,3 avant) est le coût en mpg d'un poids supplémentaire en comparant des voitures de même puissance. Le −5,3 de la régression simple englobait silencieusement le fait que les voitures plus lourdes tendent aussi à être plus puissantes ; la régression multiple démêle ça. C'est aussi pourquoi les coefficients bougent quand tu ajoutes des variables - si le nouveau prédicteur corrèle avec un ancien, la fiche de poste de l'ancien change. Le R carré grimpe à environ 0,83, et ici la version ajustée est la comparaison honnête avec le modèle à un seul prédicteur.
Prédictions : predict()
Le modèle ajusté est une fonction ; predict() l'évalue. Construis un data frame newdata dont les noms de colonnes correspondent exactement aux prédicteurs :
Les deux types d'intervalles répondent à des questions différentes, et les confondre est une erreur d'examen classique :
interval = "confidence"- l'incertitude sur la moyenne : « pour toutes les voitures pesant 2500 livres, où se situe le mpg moyen ? ». Étroit, et il rétrécit à mesure que les données s'accumulent.interval = "prediction"- la plage où une nouvelle voiture individuelle de ce poids a des chances de tomber. Bien plus large, parce qu'une voiture unique porte sa propre dispersion autour de la droite - une dispersion qu'aucune quantité de données ne moyenne.
Rapporter un intervalle de confiance quand la question porte sur une nouvelle observation surestime dramatiquement ta précision.
Diagnostics et le piège de l'extrapolation
summary() te dit ce que le modèle estime ; les graphiques de résidus te disent s'il faut y croire. Dans une session interactive :
par(mfrow = c(2, 2))
plot(fit) # four diagnostic plots
Ce qu'il faut chercher : Residuals vs Fitted devrait être un nuage informe - une courbe signifie que la relation n'est pas droite ; un entonnoir (dispersion croissant avec les valeurs ajustées) signifie une variance non constante, et tes erreurs types sont fausses. Les points du Q-Q plot devraient épouser la droite - des queues lourdes signifient que des valeurs aberrantes déforment l'ajustement. Scale-Location est de nouveau le contrôle de l'entonnoir. Residuals vs Leverage signale les points influents - des observations qui, à elles seules, tirent les coefficients (dans mtcars, des voitures exotiques comme la Chrysler Imperial tendent à apparaître ici). Un rapide nuage de points des données brutes avant l'ajustement attrape l'essentiel de tout ça très tôt.
Enfin, le piège qu'aucun diagnostic n'attrape : l'extrapolation. Le modèle a appris sur des voitures pesant environ 1500 à 5400 livres. Donne à predict() un wt de 8 et il renverra allègrement un mpg négatif - les mathématiques prolongent la droite à l'infini, mais les preuves s'arrêtent au bord des données. Ne prédis qu'à l'intérieur (ou à proximité) de la plage sur laquelle tu as ajusté.
Ce que tu retiens
fit <- lm(y ~ x, data = df)ajuste la droite des moindres carrés ;coef(fit)est l'équation,summary(fit)le rapport complet.- Lis les Estimates comme des phrases avec des unités ;
Pr(>|t|)demande « est-ce que ça pourrait être zéro ? », pas « est-ce que ça compte ? ». - L'erreur type résiduelle est l'écart typique en unités réelles ; l'Adjusted R-squared est le nombre honnête pour comparer des modèles.
- En régression multiple, chaque coefficient signifie « les autres restant constants » - et les coefficients bougent quand des prédicteurs corrélés s'ajoutent.
predict(fit, newdata, interval = ...): « confidence » pour la moyenne, « prediction » pour un nouveau cas - le large.- Vérifie
plot(fit)pour les courbes, entonnoirs et points influents ; ne fais jamais confiance à des prédictions hors de la plage des données.
Prochaine étape : quand le résultat est un oui/non plutôt qu'un nombre - la régression logistique avec glm().
Questions fréquentes
Comment réaliser une régression linéaire en R ?
Avec lm() et une formule : fit <- lm(mpg ~ wt, data = mtcars) régresse mpg sur le poids. Puis summary(fit) affiche les coefficients, leurs p-valeurs, le R carré et la statistique F. Ajoute d'autres prédicteurs avec + : lm(mpg ~ wt + hp, data = mtcars).
Comment interpréter la sortie de summary d'un lm en R ?
Dans le bloc Coefficients, chaque Estimate est la variation attendue de la réponse pour une augmentation d'une unité de ce prédicteur (les autres restant fixes) ; Pr(>|t|) teste si ce coefficient pourrait plausiblement être nul. Le Multiple R-squared est la part de variance expliquée. La statistique F en bas teste le modèle dans son ensemble contre un modèle réduit à la constante.
Quelle est la différence entre Multiple et Adjusted R-squared ?
Le Multiple R-squared est la part brute de variance expliquée, et il ne peut que monter quand tu ajoutes des prédicteurs - même inutiles. L'Adjusted R-squared applique une pénalité par prédicteur, il ne monte donc que si une nouvelle variable mérite sa place. Compare les modèles avec la version ajustée.
Comment prédire de nouvelles valeurs à partir d'une régression en R ?
Construis un data frame dont les noms de colonnes correspondent aux prédicteurs, puis appelle predict(fit, newdata = ...). Ajoute interval = "confidence" pour l'incertitude sur la réponse moyenne, ou interval = "prediction" pour la plage (bien plus large) où une nouvelle observation individuelle a des chances de tomber.