Aide-memoire-R > Statistiques > Regression-lineaire
Régression linéaire.
La fonction lm permet de calculer la régression linéaire d'une variable dépendante numérique en fonction de variables explicatives.
Exemple de régression linéaire toute simple :
x <- c(4, 6, 3, 5, 1, 9) y <- 2 * x + 1 + rnorm(6, 0, 0.3) lm(y ~ x)donne par exemple :
Call:
lm(y ~ x)
Coefficients:
(Intercept) x
0.8384 2.0289
Appel de lm avec un data frame :
- fr <- data.frame(x = c(4, 6, 3, 5, 1, 9), y = c(8, 11, 5, 10, 3, 17)); lin <- lm(y ~ x, fr)
- On peut tracer le graphe avec la droite par : plot(y ~ x, fr); abline(lm(y ~ x, fr)).
L'objet renvoyé par lm est de la classe "lm" et a les attributs suivants : lin <- lm(y ~ x, fr) :
- lin$coefficients (ou coeff(lin)) : le vecteur des coefficients de la droite.
- lin$fitted.values (ou fitted(lin)) : les valeurs calculées par la régression d'après les variables explicatives.
- lin$residuals (ou residuals(lin)) : le vecteur des résiduels (c'est à dire, les valeurs effectives moins les valeurs calculées lin$fitted.values).
Prédiction de valeurs :
predict(lin, newdata = data.frame(x = c(1, 2, 3, 4, 5))) : renvoie un vecteur des valeurs prédites (noms des variables explicatives doivent être les mêmes dans le data frame.
- predict(lin, data.frame(x = c(1, 2, 3, 4, 5)), se.fit = TRUE) : renvoie une liste, avec les attributs :
- fit : le vecteur des valeurs prédites.
- se.fit : le vecteur des erreurs standard sur les valeurs prédites.
- predict(lin, data.frame(x = c(1, 2, 3, 4, 5)), interval = "confidence", level = 0.99) : renvoie une matrice avec les colonnes fit (valeur prédite), lwr (valeur minimale de l'intervalle de confiance), upr (valeur maximale de l'intervalle de confiance) et level le niveau de confiance souhaité.
régression multiple : si fr est un data frame de variables x, y et z :
- lin <- lm(z ~ x + y) : régression multiple de z en fonction de x et y (termes en x et en y).
- lin <- lm(z ~ x + y + 0) : régression multiple de z en fonction de x et y (termes en x et en y), mais sans le terme constant (par défaut, il y a un terme constant)
- lin <- lm(z ~ x + y - 1) : régression multiple de z en fonction de x et y (termes en x et en y), mais sans le terme constant (identique à la formulation avec + 0)
- lin <- lm(z ~ x : y) : régression multiple de z en fonction du terme croisé entre x et y (terme en x * y).
- lin <- lm(z ~ x * y) : régression multiple de z en fonction de x, y et du terme croisé (termes en x, en y et en x * y). x * y est équivalent à x + y + x : y
- lin <- lm(z ~ x * y - x) : régression multiple de z en fonction de y et du terme croisé (termes en y et en x * y), le '-' retirant la dépendance par rapport au terme indiqué.
- lin <- lm(z ~ I(x * x) + y, fr) : régression multiple de z en fonction de x * x et de y, le I indiquant d'interpréter le contenu avec les opérateurs mathématiques usuels (c'est le '*' indiquant la multiplication et non le '*' indiquant une dépendance en x, y et le terme croisé).
- lin <- lm(z ~ . - z, fr) : régression multiple de z en fonction de toutes les variables ('.') sauf z (identique ici à z ~ x + y).
- predict(lin, data.frame(x = c(5, 7), y = c(3, 1))) : donne le vecteur des valeurs de z prédites en fonction des valeurs de x et y.
Dernière date de modification : 2010-05-22
