Vue l'importance de la régression dans l'univers du statisticien, R offre un très grand nombre de méthodes de régression. La droite résistante (droite de Tukey) est décrite dans ce document.

lsfit()

La fonction lsfit(x,y), fonction de base classique produit une régression linéaire par moindre carrés (x est une matrice de variables indépendantes); cette fonction relativement ancienne est suffisante pour des usages simples, mais il est recommandé d'utiliser la procédure lm() plus moderne et nettement plus puissante.

lm()

Jettons un coup d'oeil la fonction lm() ("Linear Model") qui est plus moderne et plus générale. Pour cette fonction seul l'interface formule est possible pour spécifier des variables. On écrira alors par exemple

lm(mortinf ~ urb, data=pays)
lm(mortinf ~ urb + tert, data=pays)
lm(mortinf ~ urb + tert+urb*tert, data=pays)

Les formules permettent d'utiliser une forme très naturelle d'équation pour spécifier le modèle que l'on veut faire estimer, y compris la spécification de termes d'interaction dans le 3e exemple. [Référez vous à help(lm) pour plus de détails à ce sujet.] On pourra bien sûr aussi écrire:

Pour produire différents diagnostics de régression, un peut utiliser toute une série de fonctions qui sont liés à un objet de type régression:

modele1 <- lm(mortinf ~ urb + tert+urb*tert, data=pays)
plot(resid(modele1),fitted(modele1))
boxplot(resid(modele1))

Dans cet exemple, la première ligne dépose un objet de classe lm dans la variable modele1 et vous pouvez ensuite utiliser des fonctions spécifiques pour en extraire les résidus etc afin de produire toute un série de graphiques et autres diagnostics.

Analyse d'objets de classe lm

La fonction lm, mais aussi les fonctions rlm (régression robuste) et lqs (de la bibliothèque MASS) produisent un objet de classe lm. Toutes une série de fonctions dite génériquespossèdent des méthodes qui peuvent exploiter de tels objets selon des besoins spécifiques de ces objets, notamment la fonction plot qui peut automatiquement produire une série de graphiques de diagnostic.

a <= lm(mortinf ~urb) # stocke le résultat de la fonction lm dans a.
plot(a)     # produit les graphiques nos 1,2,3 et 5
plot(a, which=1)     # produit le graphique no 1
plot(a, which=c(1,4)     # produit les graphiques nos 1 et 4
plot(a, which=c(1:6)     # produit les graphiques nos 1 à 6 

Au lieu d'écrire plot(modele1) on aurait pu écrire plus explicitement plot.lm(modele1), car en réalité c'est la fonction plot.lm() qui est exécutée, la fonction plot() l'appelle du fait que vous lui fournissez un objet de classe "lm".

Si vous entrez les fonctions qui produisent plusieurs graphiques, l faudra appuyer sur "retour" pour passer d'un graphique à l'autre tout en s'assurant que la fenêtre active soit la fenêtre de commande), moins que vous demandiez des graphiques multiples sur la même page (par(mfrow=c(2,3))) par exemple.

Les numéros des graphiques correspondent au graphiques suivants

1Residual vs fitted
2Normal QQ plot
3Scale-location
4Cook's distance
5Residuals vs. Leverage
6Cooks distances vs Leverage

Quelques autres fonctions offrant des méthodes pour des objets de la classe "lm":

R et S sont des environnements de programmation qui sont devenus l'outil de diffusion standard pour la publication des algorithmes, ce qui fait que dans le domaine de la statistique robuste et en particulier la régression robuste, R offre un très grand nombre de fonctions, d'autres sont disponibles par Internet. Vous y trouverez les bibliothèques lasso, leaps, lqs, locfit, lpridge, modreg, polymars, quantreg etc.

Liens