Régression linéaire avec R

R est un logiciel de statistique « grand public » dans le sens ou il est gratuit, disponible tout aussi bien pour linux que pour windows. Là ou il devient un peu moins grand publique c’est quand il nécessite la connaissance de multiples fonctions pour réussir à réaliser proprement une tache qu’un Ti89 est capable de réaliser toute seule !

Prenons un cas simple à deux variables : une variable à expliquer, y, et une variable potentiellement explicative x. Pour plus de simplicité notons x et y les vecteurs associés au données x et y la régression sous R s’effectue de manière extrêmement simple :

lm(y~x);

Oui mais bon une fois que ça c’est fait il ne s’affiche pas grand chose sur mon écran ! Normal, il faut appeler la fonction qui se charge de l’affichage :

reg<-lm(y~x);

summary(reg);

Très bien très bien, tout plein d’informations me sont données, la valeur du coefficient, l’erreur estimée, la pvalue …. Oui mais bon maintenant moi ce qui m’interesse c’est pouvoir effectuer ces tests en boucle, mettons sur 200 données sans avoir à chaque fois tout cet affichage et en récupérant uniquement le coefficient qui m’intéresse et le p-value. Là encore , c’est possible, il suffit juste d’appeler les bonnes méthodes!

reg<-lm(y~x);

sum<-summary(reg);

p.value <- pf(sum$fstatistic[1], sum$fstatistic[2], sum$fstatistic[3],lower.tail = FALSE);

coeff <- reg$coefficients[2];

cat(« pvalue »,p.value, »coefficient », coeff);

Ceci devrait convenir. Mais allons un peu plus loin  maintenant : supposons que y soit potentiellement expliquée par deux variables x et z comment R prend il cela en compte ? Assez simplement en fait il suffit de lui indiquer :

reg<-lm(y~x+z);

sum <- summary(reg);

coeffx <- reg$coefficients[2];

coeffz <- reg$coefficients[3];

et le tour est joué !

Dernier petit conseil, si vous lisez vos données à partir d’une fiche Excel prenez bien soin de vérifier qu’il n’y a pas de cases vides supplémentaires à la fin de votre feuille (par exemple une colonne se prolongeant deux trois cases trop bas…) c’est une erreur bête mais qui peu vous obliger à recommencer vos calculs !